diff --git a/docs/eve-migration-roadmap.md b/docs/eve-migration-roadmap.md index f9c4161..846e615 100644 --- a/docs/eve-migration-roadmap.md +++ b/docs/eve-migration-roadmap.md @@ -84,6 +84,11 @@ advertisements and typed command/receipt documents are the boundary. The superseded Aetheria surface/provider readers, command serializer, and generated Eve IPC handler authority have been deleted. `AetheriaCultMeshClient` no longer exposes any Eve-facing method. +- EveElectron owns the standalone preload entry and generic browser renderer + bootstrap. Aetheria consumes those runtime bodies directly; its generated + renderer API contract, product preload, preload copy script, and product IPC + registration are deleted. The Aetheria renderer entry now supplies only its + provider asset-URL boundary before mounting the generic runtime. - EveFlutter owns the generic Flutter clients and platform lifecycle. - Sai and Norn publish independent sidecar plugins. Sai serves retained Ink sessions and Norn serves graph projection and measurement through CultNet @@ -113,10 +118,11 @@ advertisements and typed command/receipt documents are the boundary. - Route browser and remaining runtimes through Odin's aggregated provider discovery rather than local catalogs or sibling paths; Unity's direct CultMesh Verse discovery is the working reference. -- Replace the remaining Aetheria-owned Electron preload/generated Eve API types - and renderer shell with EveElectron/EveWeb-owned equivalents. Keep only - provider-owned daemon launch/development tooling until a generic launcher - owns that lifecycle. +- Move the remaining Electron host lifecycle and generic CultMesh client + construction out of `Aetheria.Rts.Web/Electron/main.ts` into EveElectron. + Aetheria should retain only provider daemon launch/development configuration + and its asset protocol implementation until those become separately + advertised provider capabilities. - Expand world lowering only through generic surface contracts: entities, transforms, animation state, collision/navigation intent, cameras, effects, interaction prompts, and command boundaries. diff --git a/scripts/run-eveelectron-owner-smoke.ps1 b/scripts/run-eveelectron-owner-smoke.ps1 index 54e3252..27a077d 100644 --- a/scripts/run-eveelectron-owner-smoke.ps1 +++ b/scripts/run-eveelectron-owner-smoke.ps1 @@ -4,12 +4,15 @@ param( ) $ErrorActionPreference = "Stop" +$projectRoot = Split-Path -Parent $PSScriptRoot $manifestPath = Join-Path $EveElectronRoot "eve-runtime-capability.json" $packagePath = Join-Path $EveElectronRoot "package.json" $shellPath = Join-Path $EveElectronRoot "src\eve-electron-shell.mjs" $windowPath = Join-Path $EveElectronRoot "src\window-host.mjs" $preloadPath = Join-Path $EveElectronRoot "src\eve-provider-preload.cjs" -foreach ($path in @($manifestPath, $packagePath, $shellPath, $windowPath, $preloadPath)) { +$preloadEntryPath = Join-Path $EveElectronRoot "src\eve-provider-preload-entry.cjs" +$rendererRuntimePath = Join-Path $EveElectronRoot "src\eve-electron-renderer.mjs" +foreach ($path in @($manifestPath, $packagePath, $shellPath, $windowPath, $preloadPath, $preloadEntryPath, $rendererRuntimePath)) { if (-not (Test-Path -LiteralPath $path)) { throw "EveElectron owner path missing: $path" } } @@ -22,19 +25,22 @@ foreach ($feature in @("providerAdvertisements", "commandTransport", "surfaceTre } $main = Get-Content -LiteralPath (Join-Path $AetheriaRoot "Aetheria.Rts.Web\Electron\main.ts") -Raw -$preload = Get-Content -LiteralPath (Join-Path $AetheriaRoot "Aetheria.Rts.Web\Electron\preload.cjs") -Raw $renderer = Get-Content -LiteralPath (Join-Path $AetheriaRoot "Aetheria.Rts.Web\Client\app.ts") -Raw +$preloadEntry = Get-Content -LiteralPath $preloadEntryPath -Raw +$rendererRuntime = Get-Content -LiteralPath $rendererRuntimePath -Raw foreach ($symbol in @("createEveElectronWindow", "registerEveWindowControls", "@gamecult/eve-electron")) { if (-not $main.Contains($symbol)) { throw "Aetheria Electron host does not consume owner symbol: $symbol" } } -if (-not $preload.Contains("installEveProviderBridge") -or -not $preload.Contains("@gamecult/eve-electron/preload")) { - throw "Aetheria preload does not consume EveElectron's generic provider bridge." +if (-not $main.Contains("eve-provider-preload-entry.cjs") -or -not $preloadEntry.Contains("installEveProviderBridge")) { + throw "Aetheria host does not consume EveElectron's standalone provider preload." } -if ($preload.Contains('eveSurface: request =>') -or $preload.Contains('submitEveCommand: request =>')) { - throw "Aetheria product namespace still publishes duplicate generic Eve methods." +if (Test-Path -LiteralPath (Join-Path $AetheriaRoot "Aetheria.Rts.Web\Electron\preload.cjs")) { + throw "Aetheria still owns a product preload." } -if (-not $renderer.Contains("window.eveProvider.providerAdvertisement") -or $renderer.Contains("window.aetheriaRts.eveProviderAdvertisement")) { - throw "Aetheria renderer has not transferred generic provider authority to window.eveProvider." +if (-not $renderer.Contains("mountEveElectronProvider") -or + -not $rendererRuntime.Contains("eveProvider.providerAdvertisement") -or + $renderer.Contains("window.aetheriaRts")) { + throw "Aetheria renderer has not transferred generic provider authority to EveElectron." } Push-Location $EveElectronRoot