import { applyConfigToProcessEnv } from './pilotdeckConfig.js';
import { closeMemoryServices, startMemoryScheduler } from './memoryService.js';

// Applies a validated config to every running subsystem (env, memory) and
// returns a per-subsystem summary so the UI can show what actually reloaded.
// CCR router / EdgeClaw IM gateway reload paths were removed — both retired
// during the PilotDeck-only migration and the schema no longer carries them.
export async function reloadPilotDeckConfig(config) {
  const result = {
    processEnv: { reloaded: false },
    memory: { reloaded: false },
    proxy: { reloaded: false, skipped: false },
  };

  applyConfigToProcessEnv(config);
  result.processEnv.reloaded = true;

  closeMemoryServices();
  if (config.memory?.enabled) {
    startMemoryScheduler();
  }
  result.memory.reloaded = true;
  result.memory.scheduler = config.memory?.enabled ? 'started' : 'stopped';

  result.proxy = await new Promise((resolve) => {
    const handled = process.emit('pilotdeck:restart-proxy', (error) => {
      if (error) {
        resolve({ reloaded: false, error: error instanceof Error ? error.message : String(error) });
      } else {
        resolve({ reloaded: true });
      }
    });
    if (!handled) {
      resolve({ reloaded: false, skipped: true, reason: 'proxy restart hook is not registered in this process' });
    }
  });

  return result;
}