Initial Commit

This commit is contained in:
2026-05-27 23:47:53 +01:00
parent fbc70f96e6
commit 9b28db724f
18103 changed files with 1600554 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
# @suaveplan/network-plugin-session - Hierarchical session management for the Suaveplan mesh: SessionTree, SessionManager, SessionRouter, per-session host election, transition manager, parent-state bridge, capacity enforcer, registry
## Summary
Hierarchical session management for the Suaveplan mesh. `SessionTree` maintains a parent-child session graph rooted at a single auto-created root; `SessionManager` handles `join` / `leave` / `move` with deterministic tree mutations and `session:joined` / `session:left` / `session:moved` bus events; `SessionRouter` filters `NetworkNode.send()` so messages reach only peers in the target session scope (default leaf, `parent`, or `broadcast`); `SessionHostElection` picks a host per session via injectable scoring (latency / uptime / reputation) and re-elects on host departure; `SessionTransitionManager` runs the join → request snapshot → sync → active state machine, with a forwarding tunnel for in-flight messages during `move`; `ParentStateBridge` replicates configurable read-only keys (worldTime / weather / globalEvent) from parent to child sessions; `SessionCapacityEnforcer` rejects over-capacity joins with optional `session:split-requested` trigger; `SessionRegistry` tracks every known session for mesh-wide discovery + assignment. Wrapped in a single `SessionPlugin` satisfying the `NetworkPlugin` lifecycle.
<!-- begin:auto-docs -->
## Documentation tree
- [bridge](./src/bridge/parent-state-bridge.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [parent-state-bridge](./src/bridge/parent-state-bridge.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [capacity](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [session-capacity-enforcer](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [session-host-election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [session-plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [session-registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [session-router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [session](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [session-manager](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [transition](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [session-transition-manager](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [session-tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [error-codes](./src/error-codes.md) — Frozen registry of every error code raised by the session package. Codes are namespaced under `NET_SESSION` and registe…
<!-- end:auto-docs --> - [parent-state-bridge](./src/bridge/parent-state-bridge.md) — <!-- begin:auto-docs --> _(no submodules)_- [capacity](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-capacity-enforcer](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_- [election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-host-election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_- [router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_- [session](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-manager](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [transition](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-transition-manager](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Frozen registry of every error code raised by the session package. Codes are namespaced under `NET_SESSION` and registe…
- [parent-state-bridge](./src/bridge/parent-state-bridge.md) — <!-- begin:auto-docs --> _(no submodules)_- [capacity](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-capacity-enforcer](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_- [election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-host-election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_- [router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_- [session](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-manager](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [transition](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-transition-manager](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Frozen registry of every error code raised by the session package. Codes are namespaced under `NET_SESSION` and registe…
- [parent-state-bridge](./src/bridge/parent-state-bridge.md) — <!-- begin:auto-docs --> _(no submodules)_- [capacity](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-capacity-enforcer](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_- [election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-host-election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_- [router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_- [session](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-manager](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [transition](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-transition-manager](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_- [session-tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Frozen registry of every error code raised by the session package. Codes are namespaced under `NET_SESSION` and registe…
- [parent-state-bridge](./src/bridge/parent-state-bridge.md) — <!-- begin:auto-docs --> _(no submodules)_- [capacity](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_ - [session-capacity-enforcer](./src/capacity/session-capacity-enforcer.md) — <!-- begin:auto-docs --> _(no submodules)_- [election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_ - [session-host-election](./src/election/session-host-election.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_ - [session-plugin](./src/plugin/session-plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_ - [session-registry](./src/registry/session-registry.md) — <!-- begin:auto-docs --> _(no submodules)_- [router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_ - [session-router](./src/router/session-router.md) — <!-- begin:auto-docs --> _(no submodules)_- [session](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ - [session-manager](./src/session/session-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [transition](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ - [session-transition-manager](./src/transition/session-transition-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_ - [session-tree](./src/tree/session-tree.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Frozen registry of every error code raised by the session package. Codes are namespaced under `NET_SESSION` and registe…