Make Eve onboarding contracts portable

This commit is contained in:
Meta Vens 2026-08-17 23:18:07 +02:00
commit ad32be863c
6 changed files with 15 additions and 11 deletions

View file

@ -177,7 +177,7 @@ See `docs/eve-dsl-reactive-bindings.md` for the first Eve DSL and reactive
CultMesh binding contract.
See `docs/eve-multiverse.md` for the Eve MultiVerse philosophy and missing API
surface.
See `docs/eve-face.md` for Eve's persistent mission memory.
See `docs/eve-persona.md` for Eve's persistent mission memory.
## Browser Reference
@ -347,8 +347,8 @@ without losing the basic app deployment path.
## Next Cut
- Create the browser reference Eve runtime and use it as the visual/behavior
test oracle for native clients.
- Connect the existing browser reference to a clean-consumer, networked
CultMesh sample and use it as the visual/behavior oracle for native clients.
- Split the shared CultNet/CultMesh surface contract from the iOS app code and
keep `gamecult.eve.surface.v1` as the renderer-facing contract.
- Replace JSON/base64 sensor packets with binary framing once camera and mic

View file

@ -77,5 +77,5 @@ powershell -ExecutionPolicy Bypass -File .\scripts\start-browser-reference.ps1
Then open:
```text
http://127.0.0.1:8891/
http://127.0.0.1:8798/
```

View file

@ -20,10 +20,10 @@
"README.md"
],
"scripts": {
"generate": "C:\\Progra~1\\nodejs\\node.exe scripts/generate-contracts.mjs",
"generate:check": "C:\\Progra~1\\nodejs\\node.exe scripts/generate-contracts.mjs --check",
"build": "C:\\Progra~1\\nodejs\\node.exe scripts/generate-contracts.mjs --check && C:\\Progra~1\\nodejs\\node.exe ./node_modules/typescript/bin/tsc -p tsconfig.json",
"test": "C:\\Progra~1\\nodejs\\node.exe scripts/generate-contracts.mjs --check && C:\\Progra~1\\nodejs\\node.exe ./node_modules/typescript/bin/tsc -p tsconfig.json && C:\\Progra~1\\nodejs\\node.exe --test test/*.test.mjs"
"generate": "node scripts/generate-contracts.mjs",
"generate:check": "node scripts/generate-contracts.mjs --check",
"build": "node scripts/generate-contracts.mjs --check && node ./node_modules/typescript/bin/tsc -p tsconfig.json",
"test": "node scripts/generate-contracts.mjs --check && node ./node_modules/typescript/bin/tsc -p tsconfig.json && node --test test/*.test.mjs"
},
"dependencies": {
"ajv": "^8.17.1"

View file

@ -56,7 +56,7 @@ function generatedHeader() {
async function checkOrWrite(path, expected) {
if (process.argv.includes("--check")) {
const actual = await readFile(path, "utf8").catch(() => "");
if (actual !== expected) {
if (normalizeNewlines(actual) !== normalizeNewlines(expected)) {
throw new Error(`${path} is stale. Run npm run generate in ${packageRoot}.`);
}
return;
@ -64,6 +64,10 @@ async function checkOrWrite(path, expected) {
await writeFile(path, expected, "utf8");
}
function normalizeNewlines(value) {
return value.replace(/\r\n/g, "\n");
}
function inlineKnownRefs(value) {
if (Array.isArray(value)) return value.map(inlineKnownRefs);
if (!value || typeof value !== "object") return value;

View file

@ -1,7 +1,7 @@
param(
[string] $ProviderId = "eve.cultui.inspector",
[string] $OutputPath = "artifacts\parity\web-cultui-inspector.png",
[int] $Port = 8891,
[int] $Port = 8798,
[int] $Width = 1280,
[int] $Height = 720
)

View file

@ -1,6 +1,6 @@
param(
[int] $Port = 8798,
[string] $OdinRoot = "E:\Projects\Odin",
[string] $OdinRoot = (Join-Path (Split-Path -Parent (Split-Path -Parent $PSScriptRoot)) "Odin"),
[string] $OdinCultMeshUri = $(if ($env:ODIN_CULTMESH_URI) { $env:ODIN_CULTMESH_URI } else { "cultmesh://odin/rendezvous/provider-catalog" })
)