MCPcopy Create free account
hub / github.com/SethGammon/Citadel / main

Function main

scripts/local-daemon.js:88–110  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

86async function sleep(ms) { return new Promise((r) => setTimeout(r, ms)); }
87
88async function main() {
89 log(`local-daemon starting. root=${ROOT} cooldown=${opts.cooldown}ms`);
90 let sessions = 0;
91 while (true) {
92 const state = readDaemon();
93 if (!state) { log('No daemon.json found. Exiting.'); break; }
94 if (state.status !== 'running') {
95 log(`Daemon status is "${state.status}". Reason: ${state.stopReason ?? 'n/a'}. Exiting.`);
96 break;
97 }
98 if (opts.maxSessions > 0 && sessions >= opts.maxSessions) {
99 log(`Reached --max-sessions (${opts.maxSessions}). Exiting.`);
100 break;
101 }
102 sessions += 1;
103 log(`Starting session #${sessions} (daemon session count: ${state.sessionCount ?? 0})`);
104 const code = await runSession();
105 log(`Session #${sessions} exited with code ${code}`);
106 log(`Cooldown ${opts.cooldown / 1000}s...`);
107 await sleep(opts.cooldown);
108 }
109 log(`local-daemon stopped after ${sessions} session(s).`);
110}
111
112main().catch((err) => { log(`fatal: ${err.stack ?? err.message}`); process.exit(1); });
113

Callers 1

local-daemon.jsFile · 0.70

Calls 4

logFunction · 0.85
runSessionFunction · 0.85
readDaemonFunction · 0.70
sleepFunction · 0.70

Tested by

no test coverage detected