initialize static method

void initialize(
  1. SDKEnvironment environment
)

Initialize the core bridge layer.

This is Phase 1 of 2-phase initialization (matches Swift CppBridge.initialize exactly):

  1. Load native library
  2. Register platform adapter FIRST (file ops, logging, keychain)
  3. Configure C++ logging level (rac_configure_logging)
  4. Initialize SDK config (rac_sdk_init) - sets platform, version
  5. Register events callback (analytics routing)
  6. Initialize telemetry manager
  7. Register device callbacks

Call this FIRST during SDK init. Must complete before Phase 2.

environment The SDK environment (development/staging/production)

Implementation

static void initialize(SDKEnvironment environment) {
  if (_isInitialized) {
    _logger.debug('Already initialized, skipping');
    return;
  }

  _environment = environment;
  _logger.debug('Starting Phase 1 initialization', metadata: {
    'environment': environment.name,
  });

  // Step 1: Load native library
  _lib = PlatformLoader.load();
  _logger.debug('Native library loaded');

  // Step 2: Register platform adapter FIRST (file ops, logging, keychain)
  // C++ needs these callbacks before any other operations
  // Matches Swift: PlatformAdapter.register()
  DartBridgePlatform.register();
  _logger.debug('Platform adapter registered');

  // Step 3: Configure C++ logging level
  // Matches Swift: rac_configure_logging(environment.cEnvironment)
  _configureLogging(environment);
  _logger.debug('C++ logging configured');

  // Step 4: Initialize SDK with configuration
  // Matches Swift: rac_sdk_init(&sdkConfig) in CppBridge.State.initialize()
  // This is CRITICAL - the LlamaCPP backend needs this to be set
  _initializeSdkConfig(environment);
  _logger.debug('SDK config initialized');

  // Step 5: Register events callback (analytics routing)
  // Matches Swift: Events.register()
  DartBridgeEvents.register();
  _logger.debug('Events callback registered');

  // Step 6: Initialize telemetry manager (sync part)
  // Matches Swift: Telemetry.initialize(environment: environment)
  // Note: Full telemetry init with HTTP is in Phase 2
  DartBridgeTelemetry.initializeSync(environment: environment);
  _logger.debug('Telemetry initialized (sync)');

  // Step 7: Register device callbacks
  // Matches Swift: Device.register()
  DartBridgeDevice.registerCallbacks();
  _logger.debug('Device callbacks registered');

  _isInitialized = true;
  _logger.info('Phase 1 initialization complete');
}