Room service, by meaning: Settings carries both [age] and [co]; the descriptor builder (PP's) takes the room's roles, and roles() gives the viewer the audience kinds when the room has the audience-input power (CO4); a grant states `age` first, then CO4's `latency_budget_ms` / `audience_input`, then `order` (live-rooms §4.4 ascending keys); GET /room carries both `age` and `co`; CO4's tests call grant() with no age. Relay: ratings and the floor are both fields of the relay. wai features: age_assurance and co_performance. Shared lists kept both sides; registry export regenerated. Co-Authored-By: Claude Opus 5.5 <[email protected]>
53 lines
2.6 KiB
TOML
53 lines
2.6 KiB
TOML
[package]
|
|
name = "joule-moq-room"
|
|
version = "0.1.0"
|
|
description = "A room service for WAI live rooms over joule-moq-relay: it holds a room's authority and clock keys, issues short-lived WRG1 grants to keys visitors make in their browsers (each useless without that key's proof of possession), authors the room's lifecycle on the clock's events track from what the relay carries, and serves the signed room descriptor."
|
|
edition = "2024"
|
|
rust-version = "1.97"
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/transaction-science/open-standards"
|
|
|
|
# A workspace of its own, with its own lock file: it builds on wai-rs (the room's records
|
|
# are WAI's), whose serde_json features would otherwise be unified into every crate of the
|
|
# joule-code workspace.
|
|
[workspace]
|
|
|
|
# The relay's wtransport, vendored with its WebTransport session close; the joule-code
|
|
# workspace patches it the same way (vendor/wtransport/VENDORED.md).
|
|
[patch.crates-io]
|
|
wtransport = { path = "../../vendor/wtransport" }
|
|
|
|
[lib]
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "joule-moq-room"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
joule-moq = { path = "../joule-moq" }
|
|
joule-moq-relay = { path = "../joule-moq-relay" }
|
|
# End-to-end encrypted rooms: the confidentiality record and the clock as the MLS group's
|
|
# external sender (WAI confidentiality §3, §5).
|
|
joule-moq-mls = { path = "../joule-moq-mls" }
|
|
# The room's records (live-rooms, live-events, live-compose, co-performance), and admission by
|
|
# age (age-assurance: the policy, the rating, the token's checks and the receipts): no codec chain.
|
|
wai = { path = "../../../../wai/wai-rs", default-features = false, features = ["live_compose", "timed_text", "age_assurance", "co_performance"] }
|
|
# The HTTP service (MIT), the versions joule-moq-ingest pins.
|
|
hyper = { version = "=1.11.1", features = ["server", "http1"] }
|
|
hyper-util = { version = "=0.1.20", default-features = false, features = ["tokio"] }
|
|
http-body-util = "=0.1.5"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time", "net", "io-util", "signal", "fs"] }
|
|
bytes = "1"
|
|
tracing = "0.1"
|
|
tracing-subscriber = "0.3"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
toml = "0.9"
|
|
ed25519-dalek = { version = "2", features = ["rand_core"] }
|
|
rand_core_06 = { package = "rand_core", version = "0.6", features = ["getrandom"] }
|
|
sha2 = "0.10"
|
|
hex = "0.4"
|
|
|
|
[dev-dependencies]
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
|