Add browser deploy recon backend with port scan, web crawl, and deploy lane recommendations.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled

POST /api/v1/recon/scan probes fleet ports from the server host, crawls owned HTTP targets, maps findings to spread lanes, and records optional oath ledger rows.
This commit is contained in:
AetherForge
2026-06-07 11:23:10 -07:00
parent 483eafa9dd
commit f3e5a9a07d
40 changed files with 3091 additions and 4 deletions

View File

@@ -78,15 +78,22 @@ export async function expectOnlineCrucibleCard(page: Page, hostname: string): Pr
export async function loginToDashboard(page: Page): Promise<void> {
const commandDeck = page.getByRole('heading', { name: 'Command Deck' });
const loginHeading = page.getByRole('heading', { name: 'AetherForge' });
for (let attempt = 0; attempt < 3; attempt++) {
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 30_000 });
await page.goto('/', { waitUntil: 'load', timeout: 30_000 });
if (await page.getByText('No frontend configured').isVisible().catch(() => false)) {
throw new Error(
'Dashboard SPA missing — run `npm run build` in server/web (webroot must exist before phase 8)',
);
}
await page.locator('#root').waitFor({ state: 'attached', timeout: 15_000 }).catch(() => {});
if (await commandDeck.isVisible().catch(() => false)) {
return;
}
const loginHeading = page.getByRole('heading', { name: 'AetherForge' });
try {
await expect(loginHeading).toBeVisible({ timeout: 25_000 });
} catch (err) {