This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Hermodr/package.json

20 lines
849 B
JSON
Raw Permalink Normal View History

Extract Hermodr from Odin Hermodr is the Eve browser lowering. It was an organ of Odin: Node inside a Rust repository, sharing a common module directory with Odin's coordinator, and until recently running its own provider-session ingress and accepting publications into a private store. The ingress was removed first, deliberately. An extraction that carried it would have moved a second acceptance authority into a repository of its own and called that progress. What moved here is a bridge: it resolves providers through Odin's catalog, reads those providers directly, and relays operator intent to provider-advertised command routes. Contents: the daemon, the provider subscription source and its lifecycle tests, the state stream registry, the browser catalog tests, the four lifecycle scripts, and the persona avatar. Three dependencies on Odin were resolved rather than carried. The swarm document catalog now comes from CultLib's cultcache-ts alongside defineDocumentType. Idunn's health contract is declared locally in idunn-health.cjs, over the generic transport that also moved to CultLib, with sourceRuntimeId "hermodr" rather than Odin's. parseArgs is seventeen lines in args.cjs, because Hermodr used one of that utility module's six functions and carrying the other five would have been carrying a library nobody here reads. MIT, matching CultLib, Odin, Idunn, Eve and Erycina, so the deployment chain is one a creator may lawfully run end to end. Verified: 17 tests pass, every module loads with CultLib resolving from the new location, and no import references Odin. Not verified: behaviour against a live provider over RUDP, which needs a running Verse. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 19:44:53 +02:00
{
"name": "@gamecult/hermodr",
"version": "0.1.0",
"private": true,
"description": "Eve browser lowering: resolves providers through Odin, reads their state, renders surfaces, and relays operator intent as typed CultMesh command documents.",
"type": "commonjs",
Add static lowering: an Eve surface rendered ahead of time to standalone HTML The live lowering binds to a provider over CultMesh and updates. That is right for an operator dashboard and structurally unavailable to everyone else, because an anonymous visitor to a public page is not a Verse participant and never will be. Rendering at publish time takes the mesh out of the delivery path, so a published surface becomes bytes any web server can hand out. It renders through renderEveSurface, the same function the browser calls, under jsdom. The alternative was a second emitter walking the same graph, which would drift from the live path and stay drifted until someone compared two pages side by side. Eve already renders this way in its own tests, so the harness is borrowed rather than invented. Controls that would publish a command are disabled, greyed, and labelled. A static page has no back-channel and a button that looks live is lying about one. They are marked rather than removed: deleting them would misrepresent the surface, when the truth is that the capability exists and is not reachable from a snapshot. No daemon. The point of static lowering is that a published surface stops depending on Hermodr running, and a lowering reachable only by starting a server would have handed that dependency straight back. jsdom is needed only here and only at build time, resolving from this repository's install or from the Eve checkout that already carries it. 29 tests pass. The suite covers the negative checks the extraction plan asked for: no operable command control survives, no live endpoint appears in the page, a title carrying markup is escaped rather than injected, and lowering the same surface twice gives identical bytes, which is what would let a later conformance check diff static output against the live renderer. Verified end to end against Erycina's real operator surface: all four panels render and its Run ingest control arrives inert. One thing found while writing the fixtures: the renderer silently drops component kinds it does not know. A fixture inventing one tests nothing, and the first version of these tests did exactly that. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 20:19:24 +02:00
"bin": {
"hermodr-lower": "src/lower-surface.cjs"
},
Extract Hermodr from Odin Hermodr is the Eve browser lowering. It was an organ of Odin: Node inside a Rust repository, sharing a common module directory with Odin's coordinator, and until recently running its own provider-session ingress and accepting publications into a private store. The ingress was removed first, deliberately. An extraction that carried it would have moved a second acceptance authority into a repository of its own and called that progress. What moved here is a bridge: it resolves providers through Odin's catalog, reads those providers directly, and relays operator intent to provider-advertised command routes. Contents: the daemon, the provider subscription source and its lifecycle tests, the state stream registry, the browser catalog tests, the four lifecycle scripts, and the persona avatar. Three dependencies on Odin were resolved rather than carried. The swarm document catalog now comes from CultLib's cultcache-ts alongside defineDocumentType. Idunn's health contract is declared locally in idunn-health.cjs, over the generic transport that also moved to CultLib, with sourceRuntimeId "hermodr" rather than Odin's. parseArgs is seventeen lines in args.cjs, because Hermodr used one of that utility module's six functions and carrying the other five would have been carrying a library nobody here reads. MIT, matching CultLib, Odin, Idunn, Eve and Erycina, so the deployment chain is one a creator may lawfully run end to end. Verified: 17 tests pass, every module loads with CultLib resolving from the new location, and no import references Odin. Not verified: behaviour against a live provider over RUDP, which needs a running Verse. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 19:44:53 +02:00
"scripts": {
"start": "node src/hermodr-daemon.cjs",
Add static lowering: an Eve surface rendered ahead of time to standalone HTML The live lowering binds to a provider over CultMesh and updates. That is right for an operator dashboard and structurally unavailable to everyone else, because an anonymous visitor to a public page is not a Verse participant and never will be. Rendering at publish time takes the mesh out of the delivery path, so a published surface becomes bytes any web server can hand out. It renders through renderEveSurface, the same function the browser calls, under jsdom. The alternative was a second emitter walking the same graph, which would drift from the live path and stay drifted until someone compared two pages side by side. Eve already renders this way in its own tests, so the harness is borrowed rather than invented. Controls that would publish a command are disabled, greyed, and labelled. A static page has no back-channel and a button that looks live is lying about one. They are marked rather than removed: deleting them would misrepresent the surface, when the truth is that the capability exists and is not reachable from a snapshot. No daemon. The point of static lowering is that a published surface stops depending on Hermodr running, and a lowering reachable only by starting a server would have handed that dependency straight back. jsdom is needed only here and only at build time, resolving from this repository's install or from the Eve checkout that already carries it. 29 tests pass. The suite covers the negative checks the extraction plan asked for: no operable command control survives, no live endpoint appears in the page, a title carrying markup is escaped rather than injected, and lowering the same surface twice gives identical bytes, which is what would let a later conformance check diff static output against the live renderer. Verified end to end against Erycina's real operator surface: all four panels render and its Run ingest control arrives inert. One thing found while writing the fixtures: the renderer silently drops component kinds it does not know. A fixture inventing one tests nothing, and the first version of these tests did exactly that. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 20:19:24 +02:00
"lower": "node src/lower-surface.cjs",
Extract Hermodr from Odin Hermodr is the Eve browser lowering. It was an organ of Odin: Node inside a Rust repository, sharing a common module directory with Odin's coordinator, and until recently running its own provider-session ingress and accepting publications into a private store. The ingress was removed first, deliberately. An extraction that carried it would have moved a second acceptance authority into a repository of its own and called that progress. What moved here is a bridge: it resolves providers through Odin's catalog, reads those providers directly, and relays operator intent to provider-advertised command routes. Contents: the daemon, the provider subscription source and its lifecycle tests, the state stream registry, the browser catalog tests, the four lifecycle scripts, and the persona avatar. Three dependencies on Odin were resolved rather than carried. The swarm document catalog now comes from CultLib's cultcache-ts alongside defineDocumentType. Idunn's health contract is declared locally in idunn-health.cjs, over the generic transport that also moved to CultLib, with sourceRuntimeId "hermodr" rather than Odin's. parseArgs is seventeen lines in args.cjs, because Hermodr used one of that utility module's six functions and carrying the other five would have been carrying a library nobody here reads. MIT, matching CultLib, Odin, Idunn, Eve and Erycina, so the deployment chain is one a creator may lawfully run end to end. Verified: 17 tests pass, every module loads with CultLib resolving from the new location, and no import references Odin. Not verified: behaviour against a live provider over RUDP, which needs a running Verse. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 19:44:53 +02:00
"test": "node --test test/*.test.cjs",
Add static lowering: an Eve surface rendered ahead of time to standalone HTML The live lowering binds to a provider over CultMesh and updates. That is right for an operator dashboard and structurally unavailable to everyone else, because an anonymous visitor to a public page is not a Verse participant and never will be. Rendering at publish time takes the mesh out of the delivery path, so a published surface becomes bytes any web server can hand out. It renders through renderEveSurface, the same function the browser calls, under jsdom. The alternative was a second emitter walking the same graph, which would drift from the live path and stay drifted until someone compared two pages side by side. Eve already renders this way in its own tests, so the harness is borrowed rather than invented. Controls that would publish a command are disabled, greyed, and labelled. A static page has no back-channel and a button that looks live is lying about one. They are marked rather than removed: deleting them would misrepresent the surface, when the truth is that the capability exists and is not reachable from a snapshot. No daemon. The point of static lowering is that a published surface stops depending on Hermodr running, and a lowering reachable only by starting a server would have handed that dependency straight back. jsdom is needed only here and only at build time, resolving from this repository's install or from the Eve checkout that already carries it. 29 tests pass. The suite covers the negative checks the extraction plan asked for: no operable command control survives, no live endpoint appears in the page, a title carrying markup is escaped rather than injected, and lowering the same surface twice gives identical bytes, which is what would let a later conformance check diff static output against the live renderer. Verified end to end against Erycina's real operator surface: all four panels render and its Run ingest control arrives inert. One thing found while writing the fixtures: the renderer silently drops component kinds it does not know. A fixture inventing one tests nothing, and the first version of these tests did exactly that. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 20:19:24 +02:00
"check": "node --check src/hermodr-daemon.cjs && node --check src/hermodr-provider-subscription.cjs && node --check src/hermodr-state-stream.cjs && node --check src/idunn-health.cjs && node --check src/args.cjs && node --check src/static-lowering.cjs && node --check src/lower-surface.cjs"
},
"devDependencies": {
"jsdom": "^30.0.1"
Extract Hermodr from Odin Hermodr is the Eve browser lowering. It was an organ of Odin: Node inside a Rust repository, sharing a common module directory with Odin's coordinator, and until recently running its own provider-session ingress and accepting publications into a private store. The ingress was removed first, deliberately. An extraction that carried it would have moved a second acceptance authority into a repository of its own and called that progress. What moved here is a bridge: it resolves providers through Odin's catalog, reads those providers directly, and relays operator intent to provider-advertised command routes. Contents: the daemon, the provider subscription source and its lifecycle tests, the state stream registry, the browser catalog tests, the four lifecycle scripts, and the persona avatar. Three dependencies on Odin were resolved rather than carried. The swarm document catalog now comes from CultLib's cultcache-ts alongside defineDocumentType. Idunn's health contract is declared locally in idunn-health.cjs, over the generic transport that also moved to CultLib, with sourceRuntimeId "hermodr" rather than Odin's. parseArgs is seventeen lines in args.cjs, because Hermodr used one of that utility module's six functions and carrying the other five would have been carrying a library nobody here reads. MIT, matching CultLib, Odin, Idunn, Eve and Erycina, so the deployment chain is one a creator may lawfully run end to end. Verified: 17 tests pass, every module loads with CultLib resolving from the new location, and no import references Odin. Not verified: behaviour against a live provider over RUDP, which needs a running Verse. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 19:44:53 +02:00
},
"license": "MIT"
}