pilotdeckConfigReloader.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { applyConfigToProcessEnv } from './pilotdeckConfig.js';
  2. import { closeMemoryServices, startMemoryScheduler } from './memoryService.js';
  3. // Applies a validated config to every running subsystem (env, memory) and
  4. // returns a per-subsystem summary so the UI can show what actually reloaded.
  5. // CCR router / EdgeClaw IM gateway reload paths were removed — both retired
  6. // during the PilotDeck-only migration and the schema no longer carries them.
  7. export async function reloadPilotDeckConfig(config) {
  8. const result = {
  9. processEnv: { reloaded: false },
  10. memory: { reloaded: false },
  11. proxy: { reloaded: false, skipped: false },
  12. };
  13. applyConfigToProcessEnv(config);
  14. result.processEnv.reloaded = true;
  15. closeMemoryServices();
  16. if (config.memory?.enabled) {
  17. startMemoryScheduler();
  18. }
  19. result.memory.reloaded = true;
  20. result.memory.scheduler = config.memory?.enabled ? 'started' : 'stopped';
  21. result.proxy = await new Promise((resolve) => {
  22. const handled = process.emit('pilotdeck:restart-proxy', (error) => {
  23. if (error) {
  24. resolve({ reloaded: false, error: error instanceof Error ? error.message : String(error) });
  25. } else {
  26. resolve({ reloaded: true });
  27. }
  28. });
  29. if (!handled) {
  30. resolve({ reloaded: false, skipped: true, reason: 'proxy restart hook is not registered in this process' });
  31. }
  32. });
  33. return result;
  34. }