1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//! The full frame server: one binary, one config, one start command.
//!
//! `frame-host --config frame.toml` boots the entire stack in a single process:
//!
//! - the **embedded liminal component** ([`embedded`]) — liminal's TCP wire
//! listener, browser WebSocket listener, and health endpoint, running
//! in-process on liminal's own threads (no child process, no side-by-side
//! server); the host owns its lifecycle but not its bytes;
//! - the **frame-core host authority** ([`runtime`]) — the host-owned
//! capability table reached only through
//! [`frame_core::capability::HostCapabilityFacade`], the component registry,
//! and supervised lifecycle, around the class-(b) client-native graph view
//! under the `frame:graph-view@v1` contract (D10);
//! - the **console HTTP server** ([`server`]) — the static browser bundle plus
//! `GET /frame/config.json`.
//!
//! Per ruling D3 the browser is a liminal PARTICIPANT: the served page connects
//! to the embedded liminal directly over the WebSocket transport. This host
//! never proxies or terminates that feed; `/frame/config.json` is DERIVED at
//! runtime from the embedded component's real bound WebSocket address, so the
//! page's endpoint and the server's address can never drift.
//!
//! Console-first (D9): every component lifecycle transition and capability
//! denial is logged to stdout as it happens.
pub use run;
pub use Cli;
pub use ;
pub use HostError;