Add full HWE lifecycle browser verification

This commit is contained in:
2026-07-25 13:52:21 +00:00
parent 46f9d8e916
commit 74b2db2420
8 changed files with 258 additions and 8 deletions
@@ -1,22 +1,21 @@
import fs from 'node:fs';
import path from 'node:path';
const WORKSPACE_MARKERS = ['pnpm-workspace.yaml', 'package.json'];
const hasWorkspaceMarker = (dir: string): boolean =>
WORKSPACE_MARKERS.some((marker) => fs.existsSync(path.join(dir, marker)));
export const resolveWorkspaceRoot = (startDir: string, maxDepth = 5): string => {
let current = path.resolve(startDir);
let packageRoot: string | null = null;
for (let depth = 0; depth <= maxDepth; depth += 1) {
if (hasWorkspaceMarker(current)) {
if (fs.existsSync(path.join(current, 'pnpm-workspace.yaml'))) {
return current;
}
if (!packageRoot && fs.existsSync(path.join(current, 'package.json'))) {
packageRoot = current;
}
const parent = path.dirname(current);
if (parent === current) {
break;
}
current = parent;
}
return path.resolve(startDir);
return packageRoot ?? path.resolve(startDir);
};
@@ -5,6 +5,7 @@ import { fileURLToPath } from 'node:url';
import { loadScenarioDefinitionById, resolveScenarioDefaultsPath } from '@sammo-ts/game-engine';
import { parseScenarioDefaults, parseScenarioDefinition, type ScenarioDefaults } from '@sammo-ts/logic';
import { resolveWorkspaceRoot } from '../orchestrator/workspaceRoot.js';
export interface ScenarioNationPreview {
id: number;
@@ -34,7 +35,7 @@ const SCENARIO_ROOT = path.join('resources', 'scenario');
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const REPO_ROOT = path.resolve(__dirname, '..', '..', '..', '..');
const REPO_ROOT = resolveWorkspaceRoot(process.env.GATEWAY_WORKSPACE_ROOT ?? __dirname);
const previewCache = new Map<string, { loadedAt: number; data: ScenarioPreview[] }>();
const defaultsCache = new Map<string, ScenarioDefaults>();