jan/core/src/browser/extensions/engines/EngineManager.ts
Louis e9f37e98d1
refactor: remove hardcoded provider names (#4995)
* refactor: remove hardcoded provider names

* chore: continue the replacement
2025-05-15 22:10:43 +07:00

34 lines
858 B
TypeScript

import { AIEngine } from './AIEngine'
/**
* Manages the registration and retrieval of inference engines.
*/
export class EngineManager {
public engines = new Map<string, AIEngine>()
public controller: AbortController | null = null
/**
* Registers an engine.
* @param engine - The engine to register.
*/
register<T extends AIEngine>(engine: T) {
this.engines.set(engine.provider, engine)
}
/**
* Retrieves a engine by provider.
* @param provider - The name of the engine to retrieve.
* @returns The engine, if found.
*/
get<T extends AIEngine>(provider: string): T | undefined {
return this.engines.get(provider) as T | undefined
}
/**
* The instance of the engine manager.
*/
static instance(): EngineManager {
return (window.core?.engineManager as EngineManager) ?? new EngineManager()
}
}