This commit is contained in:
legop3
2026-09-27 18:41:24 -04:00
parent dbcb7f6a7a
commit 73a78eef20
11 changed files with 1024 additions and 2 deletions
@@ -0,0 +1,39 @@
// The only resident part while disabled is this configuration lifecycle bridge.
const { loadConfig, registerConfigurationHandler } = require('../../configuration');
const logger = require('../../globals/logger').child('roverLearning');
let runtime = null;
let transitions = Promise.resolve();
let shuttingDown = false;
function apply(config) {
const transition = transitions.then(async () => {
if (runtime) {
const previous = runtime;
runtime = null;
await previous.stop();
}
if (!config?.enabled || shuttingDown) return;
const { createRuntime } = require('./runtime');
const next = createRuntime({ config, logger });
try {
await next.start();
runtime = next;
} catch (error) {
await next.stop();
throw error;
}
});
transitions = transition.catch(() => undefined);
return transition;
}
registerConfigurationHandler('roverLearning', apply);
apply(loadConfig().roverLearning).catch((error) => {
logger.error('Unable to start rover learning recording', { error: error.message });
});
// Signal handlers are installed by the enabled runtime, not by this bridge.
module.exports = {
stop: () => { shuttingDown = true; return apply({ enabled: false }); },
};