diff --git a/docs/eve-migration-roadmap.md b/docs/eve-migration-roadmap.md index 846e615..97aa725 100644 --- a/docs/eve-migration-roadmap.md +++ b/docs/eve-migration-roadmap.md @@ -89,6 +89,11 @@ advertisements and typed command/receipt documents are the boundary. 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. +- EveElectron owns the live main-process provider host: secure window creation, + provider client construction, Eve IPC and receipt handling, provider readiness, + renderer loading, and cleanup. Aetheria delegates that lifecycle and retains + only daemon development launch, provider target configuration, its live smoke + scenario, and the asset protocol implementation. - 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 @@ -118,11 +123,9 @@ 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. -- 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. +- Advertise browser/Electron asset resolution as a provider capability and move + the remaining Aetheria asset protocol reader behind EveElectron's generic + provider client. Keep daemon development launch configuration in Aetheria. - 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 27a077d..7c1695a 100644 --- a/scripts/run-eveelectron-owner-smoke.ps1 +++ b/scripts/run-eveelectron-owner-smoke.ps1 @@ -12,7 +12,8 @@ $windowPath = Join-Path $EveElectronRoot "src\window-host.mjs" $preloadPath = Join-Path $EveElectronRoot "src\eve-provider-preload.cjs" $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)) { +$liveHostPath = Join-Path $EveElectronRoot "src\live-provider-host.mjs" +foreach ($path in @($manifestPath, $packagePath, $shellPath, $windowPath, $preloadPath, $preloadEntryPath, $rendererRuntimePath, $liveHostPath)) { if (-not (Test-Path -LiteralPath $path)) { throw "EveElectron owner path missing: $path" } } @@ -28,10 +29,14 @@ $main = Get-Content -LiteralPath (Join-Path $AetheriaRoot "Aetheria.Rts.Web\Elec $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")) { +$liveHost = Get-Content -LiteralPath $liveHostPath -Raw +foreach ($symbol in @("startEveElectronProviderHost", "@gamecult/eve-electron/live-provider-host")) { if (-not $main.Contains($symbol)) { throw "Aetheria Electron host does not consume owner symbol: $symbol" } } -if (-not $main.Contains("eve-provider-preload-entry.cjs") -or -not $preloadEntry.Contains("installEveProviderBridge")) { +if (-not $liveHost.Contains("eve-provider-preload-entry.cjs") -or + -not $liveHost.Contains("registerEveProviderIpc") -or + -not $liveHost.Contains("createEveElectronWindow") -or + -not $preloadEntry.Contains("installEveProviderBridge")) { throw "Aetheria host does not consume EveElectron's standalone provider preload." } if (Test-Path -LiteralPath (Join-Path $AetheriaRoot "Aetheria.Rts.Web\Electron\preload.cjs")) {