Files
memind/scripts/check-goosed-v149-local.mjs
T
john 716ef407fe feat(goose): add local v1.49 canary routing, smoke gates, and migration docs
Wire Portal and TKMind proxy to loopback Goose v1.49 via canary env blocks,
with verification scripts, Phase 2/3 evidence baselines, and rollback runbooks
so local upgrade stays isolated from stable 1.41 and production.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:10:20 +08:00

39 lines
1.4 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 blockedHosts = ['58.38.22.103', '120.26.184.105'];
if (blockedHosts.includes(host)) {
console.error(`GOOSE_V149_CHECK_FAIL: refusing production host ${host}`);
process.exit(1);
}
try {
const body = execFileSync('curl', ['-sk', '--connect-timeout', '5', url], { encoding: 'utf8' }).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], {
encoding: 'utf8',
}).trim();
const sessions = JSON.parse(sessionsBody);
if (!Array.isArray(sessions.sessions)) {
console.error(`GOOSE_V149_CHECK_FAIL: /sessions missing sessions array: ${sessionsBody}`);
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);
}