src / lensManager.ts
import { Lens } from "./types";
import { getAllLenses } from "./lenses/index";
export class LensManager {
private lenses: Map<string, Lens> = new Map();
constructor(llmClient: any) {
getAllLenses(llmClient).forEach((lens: Lens) =>
this.lenses.set(lens.id, lens),
);
}
async runLenses(
prompt: string,
enabledLensIds: string[],
temperature: number,
): Promise<string> {
const results: string[] = [];
for (const id of enabledLensIds) {
const lens = this.lenses.get(id);
if (lens) {
try {
const result = await lens.generate(prompt, temperature);
results.push(`=== ${lens.label} ===\n${result}`);
} catch (e) {
results.push(`=== ${lens.label} ===\nError: ${e}`);
}
}
}
return results.join("\n\n---\n\n");
}
}