Project Files
src / toolsProvider.ts
/**
* @file Merged tools provider — combines beledarian tools + memory tools + media tools.
*/
import type { Tool, ToolsProviderController } from "@lmstudio/sdk";
import { toolsProvider as beledarianToolsProvider } from "./tools/toolsProvider";
import { toolsProvider as memoryToolsProvider } from "./memory/toolsProvider";
import { createImageAnalysisTool, createBatchImageAnalysisTool, createCatalogImagesTool } from "./media/imageAnalysis";
import { createVideoAnalysisTool } from "./media/videoAnalysis";
import { createDesignSystemTools } from "./media/designSystems";
import { createDesignReferenceTools } from "./media/designReferences";
import { maestroConfigSchematics } from "./config";
export async function maestroToolsProvider(ctl: ToolsProviderController): Promise<Tool[]> {
// Run both sub-providers in parallel
const [beledTools, memTools] = await Promise.all([
beledarianToolsProvider(ctl),
memoryToolsProvider(ctl as any),
]);
// Read config for media tool toggles
const cfg = ctl.getPluginConfig(maestroConfigSchematics);
const mediaTools: Tool[] = [];
if (cfg.get("enableImageAnalysis")) {
const imgMaxDim = cfg.get("imageMaxDimension") || 512;
mediaTools.push(createImageAnalysisTool(ctl, imgMaxDim));
mediaTools.push(createBatchImageAnalysisTool(ctl, imgMaxDim));
mediaTools.push(createCatalogImagesTool(ctl));
}
if (cfg.get("enableVideoAnalysis")) {
const frameCount = cfg.get("videoFrameCount") || 4;
const vidMaxDim = cfg.get("videoFrameMaxDimension") || 384;
mediaTools.push(createVideoAnalysisTool(ctl, frameCount, vidMaxDim));
}
// Design system tools + reference guides (when design mode is on)
if (cfg.get("enableDesignMode")) {
mediaTools.push(...createDesignSystemTools(ctl));
mediaTools.push(...createDesignReferenceTools());
}
return [...beledTools, ...memTools, ...mediaTools];
}