register static method

Future<void> register()

Register the RAG backend with the C++ service registry.

Calls rac_backend_rag_register() to register the RAG service provider.

Safe to call multiple times — subsequent calls are no-ops.

Implementation

static Future<void> register() async {
  if (_isRegistered) {
    _logger.debug('RAGModule already registered');
    return;
  }

  _logger.info('Registering RAG backend with C++ registry...');

  try {
    final result = DartBridgeRAG.registerBackend();
    _logger.info(
      'rac_backend_rag_register() returned: $result (${RacResultCode.getMessage(result)})',
    );

    if (result != RacResultCode.success &&
        result != RacResultCode.errorModuleAlreadyRegistered) {
      _logger.error('RAG backend registration FAILED with code: $result');
      throw SDKError.frameworkNotAvailable(
        'RAG backend registration failed with code: $result (${RacResultCode.getMessage(result)})',
      );
    }

    _isRegistered = true;
    _logger.info('RAG backend registered successfully');
  } catch (e) {
    _logger.error('RAG backend not available: $e');
    rethrow;
  }
}