MCPcopy Index your code
hub / github.com/Microck/opencode-studio / aggregatePlugins

Function aggregatePlugins

server/index.js:2525–2556  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2523};
2524
2525const aggregatePlugins = () => {
2526 const pluginMap = new Map();
2527 const priority = { 'plugins-dir': 3, 'plugin-dir': 2, 'json-config': 1 };
2528
2529 for (const dirInfo of getPluginDirs()) {
2530 const plugins = loadPluginsFromDir(dirInfo);
2531 for (const plugin of plugins) {
2532 if (!pluginMap.has(plugin.name)) {
2533 pluginMap.set(plugin.name, plugin);
2534 } else {
2535 const existing = pluginMap.get(plugin.name);
2536 if (priority[plugin.source] > priority[existing.source]) {
2537 pluginMap.set(plugin.name, plugin);
2538 }
2539 }
2540 }
2541 }
2542
2543 const aggregated = loadAggregatedConfig();
2544 if (aggregated.plugins) {
2545 for (const plugin of aggregated.plugins) {
2546 if (!pluginMap.has(plugin.name)) {
2547 pluginMap.set(plugin.name, {
2548 ...plugin,
2549 source: 'json-config'
2550 });
2551 }
2552 }
2553 }
2554
2555 return Array.from(pluginMap.values());
2556};
2557
2558app.get('/api/plugins', (req, res) => {
2559 try {

Callers 1

index.jsFile · 0.85

Calls 3

getPluginDirsFunction · 0.85
loadPluginsFromDirFunction · 0.85
loadAggregatedConfigFunction · 0.85

Tested by

no test coverage detected