import { Router, Request, Response } from 'express'; import { readFileSync } from 'fs'; import { join } from 'path'; const router = Router(); // Read package.json version at startup let packageVersion = 'unknown'; try { const packageJson = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8')); packageVersion = packageJson.version || 'unknown'; } catch { // Fallback if package.json not found } /** * GET /api/version * Returns build version information for display in admin UI */ router.get('/', async (req: Request, res: Response) => { try { const gitSha = process.env.APP_GIT_SHA || 'unknown'; const versionInfo = { version: packageVersion, build_version: process.env.APP_BUILD_VERSION?.slice(0, 8) || 'dev', git_sha: gitSha.slice(0, 8) || 'unknown', git_sha_full: gitSha, build_time: process.env.APP_BUILD_TIME || 'unknown', image_tag: process.env.CONTAINER_IMAGE_TAG?.slice(0, 8) || 'local', }; res.json(versionInfo); } catch (error: any) { console.error('Error fetching version info:', error); res.status(500).json({ error: 'Failed to fetch version info' }); } }); export default router;