Files
memind/scripts/check-goosed-v149-local.mjs
T
john b09b269199 chore(infra): migrate 103 production host IP to 180.159.29.143
Update scripts, docs, nginx configs, and release-gate safety checks after the Studio server public IP changed from 58.38.22.103.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 12:28:19 +08:00

51 lines
1.5 KiB
JavaScript

#!/usr/bin/env node
/**
* Phase 0 health check for local Goose v1.49 candidate (loopback only).
*/
import { execFileSync } from 'node:child_process';
const port = process.env.GOOSE_V149_PORT || '18049';
const host = process.env.GOOSE_V149_HOST || '127.0.0.1';
const url = `https://${host}:${port}/status`;
const maxBuffer = Number(process.env.GOOSE_V149_CHECK_MAX_BUFFER || 64 * 1024 * 1024);
const blockedHosts = ['180.159.29.143', '120.26.184.105'];
if (blockedHosts.includes(host)) {
console.error(`GOOSE_V149_CHECK_FAIL: refusing production host ${host}`);
process.exit(1);
}
const curlOptions = {
encoding: 'utf8',
maxBuffer,
};
try {
const body = execFileSync(
'curl',
['-sk', '--connect-timeout', '5', url],
curlOptions,
).trim();
if (body !== 'ok') {
console.error(`GOOSE_V149_CHECK_FAIL: unexpected status body: ${body}`);
process.exit(1);
}
console.log(`GOOSE_V149_CHECK_OK: ${url} -> ${body}`);
const sessionsUrl = `https://${host}:${port}/sessions`;
const sessionsBody = execFileSync(
'curl',
['-sk', '--connect-timeout', '5', sessionsUrl],
curlOptions,
).trim();
const sessions = JSON.parse(sessionsBody);
if (!Array.isArray(sessions.sessions)) {
console.error(`GOOSE_V149_CHECK_FAIL: /sessions missing sessions array: ${sessionsBody.slice(0, 200)}`);
process.exit(1);
}
console.log(`GOOSE_V149_CHECK_OK: ${sessionsUrl} -> ${sessions.sessions.length} session(s)`);
} catch (error) {
console.error(`GOOSE_V149_CHECK_FAIL: ${error.message}`);
process.exit(1);
}