Add 10-second health logger and /_cron/tick endpoint

This commit is contained in:
Noah AI
2026-07-02 09:18:06 +00:00
parent 994040e004
commit cd11eac976
3 changed files with 20 additions and 1 deletions

View File

@@ -8,6 +8,7 @@
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^17.2.0", "dotenv": "^17.2.0",
"express": "^5.1.0", "express": "^5.1.0",
"node-cron": "^4.5.0",
}, },
"devDependencies": { "devDependencies": {
"@types/cors": "^2.8.19", "@types/cors": "^2.8.19",
@@ -126,6 +127,8 @@
"negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
"node-cron": ["node-cron@4.5.0", "", {}, "sha512-4Trh+kjvbXokyJkwQumvD5YAgeJfgHLR/sKyu71uSmxfCR5QMO1hldpvmFZOICN5pLgNY+J5Y8+ar3XKo5/4tQ=="],
"object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
"object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],

View File

@@ -11,7 +11,8 @@
"dependencies": { "dependencies": {
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^17.2.0", "dotenv": "^17.2.0",
"express": "^5.1.0" "express": "^5.1.0",
"node-cron": "^4.5.0"
}, },
"devDependencies": { "devDependencies": {
"@types/cors": "^2.8.19", "@types/cors": "^2.8.19",

View File

@@ -18,6 +18,21 @@ const apiRoot = config.apiPrefix || '/';
app.use(apiRoot, createHealthRouter(config)); app.use(apiRoot, createHealthRouter(config));
app.use(apiRoot, createTodosRouter(config, db)); app.use(apiRoot, createTodosRouter(config, db));
// 10-second health check logger
setInterval(() => {
console.log('[Health Check] Sandbox is healthy at ' + new Date().toISOString());
}, 10000);
app.post('/_cron/tick', (req, res) => {
const authHeader = req.headers.authorization;
if (!authHeader || authHeader !== 'Bearer ' + process.env.CRON_TOKEN) {
return res.status(401).json({ success: false, error: 'Unauthorized' });
}
console.log('[Tick] Cloud Run cron tick triggered.');
res.status(200).json({ success: true });
});
app.use((_req, res) => { app.use((_req, res) => {
res.status(404).json({ success: false, error: 'Not found' }); res.status(404).json({ success: false, error: 'Not found' });
}); });