UNPKG

@probelabs/probe-chat

Version:

CLI and web interface for Probe code search (formerly @probelabs/probe-web and @probelabs/probe-chat)

85 lines (75 loc) 1.76 kB
/** * Backend registry for automatic discovery and registration * @module registry */ import AiderBackend from './AiderBackend.js'; import ClaudeCodeBackend from './ClaudeCodeBackend.js'; /** * Available backend classes */ const AVAILABLE_BACKENDS = { aider: AiderBackend, 'claude-code': ClaudeCodeBackend }; /** * Get all available backend classes * @returns {Object<string, typeof BaseBackend>} */ function getAvailableBackends() { return { ...AVAILABLE_BACKENDS }; } /** * Create a backend instance by name * @param {string} name - Backend name * @returns {BaseBackend|null} */ function createBackend(name) { const BackendClass = AVAILABLE_BACKENDS[name]; if (!BackendClass) { return null; } return new BackendClass(); } /** * Register a custom backend class * @param {string} name - Backend name * @param {typeof BaseBackend} BackendClass - Backend class */ function registerBackend(name, BackendClass) { AVAILABLE_BACKENDS[name] = BackendClass; } /** * Get backend metadata * @param {string} name - Backend name * @returns {Object|null} */ function getBackendMetadata(name) { const backend = createBackend(name); if (!backend) { return null; } return { name: backend.name, version: backend.version, description: backend.getDescription(), capabilities: backend.getCapabilities(), dependencies: backend.getRequiredDependencies() }; } /** * List all registered backend names * @returns {string[]} */ function listBackendNames() { return Object.keys(AVAILABLE_BACKENDS); } export { getAvailableBackends, createBackend, registerBackend, getBackendMetadata, listBackendNames, // Export backend classes for direct use AiderBackend, ClaudeCodeBackend };