graphshell 0.0.2

Graphshell presentation host and loopback acceptance view.
[package]

name = "graphshell"

version = "0.0.2"
edition = "2024"
license = "MIT OR Apache-2.0"
repository = "https://github.com/merely-made/mere"
description = "Graphshell presentation host and loopback acceptance view."

autobins = false



[features]

default = ["native"]

# Existing admitted sessions, transports, Personae composition, and receipt

# binaries. This remains the default so current native callers keep working.

native = [

    "dep:blake3",

    "dep:graphshell-network",

    "dep:graphshell-stdio",

    "dep:light-file-dialog",

    "dep:notochord",

    "dep:castellan",

    "dep:personae",

    "dep:rand_core",

    "dep:serde",

    "dep:pandect",

    "dep:signature",

    "dep:ssh-agent-lib",

    "dep:ssh-key",

    "dep:thiserror",

    "dep:tokio",

    "dep:tracing",

    "dep:tracing-subscriber",

    "dep:transport",

    "dep:uuid",

    "dep:zeroize",

]

# The browser reference-host cone. H0 proves the dependency boundary; H1 adds

# the local Mere host adapter on top of this selected graph + canvas surface.

#

# Holds no browser API of its own. The wasm presenter that consumes this cone

# is the separate `graphshell-web` crate (`web/Cargo.toml`, whose `[lib] path`

# is `src/web.rs`), and it names its own JS bindings; the IndexedDB backend it

# stores through belongs to muniment, beside the redb and zip realizations.

web = [
    "dep:async-trait",

    "dep:chartulary",

    "dep:eidetic",

    "dep:canvas",
    "dep:kernel",
    "dep:muniment",

    "dep:serde",

    "dep:sha2",

    "dep:uuid",

    "dep:url",

]

# Native device-agent composition for H7 personal graph synchronization. The

# browser/PWA reaches this authority through its admitted device session.

personal-sync = [

    "native",

    "web",

    "muniment/redb",

    "dep:p2panda-core",

    "dep:p2panda-store",

    "dep:stickleback",

]



[dependencies]

async-trait = { version = "0.1", optional = true }

base64 = "0.22"
chartulary = { version = "0.2.1", optional = true }
eidetic = { package = "mere-eidetic", version = "0.0.2", default-features = false, optional = true }
graphshell-client = "0.0.2"
graphshell-endpoint = "0.0.2"
chirograph = "0.0.2"
canvas = { package = "mere-canvas", version = "0.0.1", optional = true }
kernel = { package = "mere-kernel", version = "0.0.2", optional = true }
muniment = { version = "0.1.2", optional = true }
sceno = "0.0.4"
scenotime = "0.0.4"
serde = { version = "1", features = ["derive"], optional = true }

serde_json = "1"
sha2 = { version = "0.11", optional = true }
uuid = { version = "1", features = ["serde", "v4", "v5"], optional = true }
url = { version = "2", optional = true }



[target.'cfg(not(target_arch = "wasm32"))'.dependencies]

blake3 = { version = "1", optional = true }
graphshell-network = { version = "0.0.1", optional = true }
graphshell-stdio = { version = "0.0.2", optional = true }
light-file-dialog = { version = "3.21.3", optional = true }

# The application composes Personae: the profile Graphshell speaks as. The

# protocol and client crates deliberately do not depend on it.

notochord = { version = "0.1.0", features = ["tokio"], optional = true }
# The identity keeper: view, projection, authority. Graphshell composes it

# and re-exports it at the pre-founding paths (identity, identity_projection,

# native::personae_host).

castellan = { version = "0.0.3", features = ["keeper"], optional = true }
personae = { version = "0.2.1", features = ["agent"], optional = true }
p2panda-core = { version = "0.7.0", optional = true }

p2panda-store = { version = "0.7.0", default-features = false, optional = true }

rand_core = { version = "0.6", features = ["getrandom"], optional = true }

pandect = { version = "0.1.1", optional = true }
signature = { version = "2", optional = true }

ssh-agent-lib = { version = "0.6", optional = true }

ssh-key = { version = "0.6", features = ["ed25519", "encryption"], optional = true }

stickleback = { version = "0.1.1", optional = true }
thiserror = { version = "1", optional = true }

tokio = { version = "1", features = ["io-std", "io-util", "macros", "net", "rt-multi-thread", "sync", "time"], optional = true }

tracing = { version = "0.1", optional = true }
tracing-subscriber = { version = "0.3", features = ["env-filter"], optional = true }
# G5d: the projection carrier. `notochord` brings in the one audited

# `AcceptedSession -> SessionFacts` adapter (Notochord N1) so this port does

# not hand-build carrier facts of its own.

transport = { package = "mere-transport", version = "0.0.2", features = ["notochord"], optional = true }
zeroize = { version = "1", optional = true }



[target.'cfg(all(windows, not(target_arch = "wasm32")))'.dependencies]

windows-sys = { version = "0.59", features = [

    "Win32_Foundation",

    "Win32_Security",

    "Win32_System_Pipes",

    "Win32_System_Threading",

] }



[[bin]]

name = "g1_receipt"

path = "src/bin/g1_receipt.rs"

required-features = ["native"]



[[bin]]

name = "g4_sessions"

path = "src/bin/g4_sessions.rs"

required-features = ["native"]



[[bin]]

name = "g5_peer"

path = "src/bin/g5_peer/main.rs"

required-features = ["native"]



[[bin]]

name = "h6_transfer_peer"

path = "src/bin/h6_transfer_peer/main.rs"

required-features = ["native", "web"]



[[bin]]

name = "h7_sync_peer"

path = "src/bin/h7_sync_peer.rs"

required-features = ["personal-sync"]



[[bin]]

name = "n4_policy_receipt"

path = "src/bin/n4_policy_receipt.rs"

required-features = ["native"]



[[bin]]

name = "h4_identity_receipt"

path = "src/bin/h4_identity_receipt.rs"

required-features = ["native"]



[[bin]]

name = "persona_switch_receipt"

path = "src/bin/persona_switch_receipt.rs"

required-features = ["native"]



[[bin]]

name = "graphshell_native_host"

path = "src/bin/graphshell_native_host.rs"

required-features = ["native"]



[[bin]]

name = "receipt_ingest"

path = "src/bin/receipt_ingest.rs"

# Needs the personal-graph event vocabulary and muniment's redb backend, both

# of which arrive with personal-sync.

required-features = ["personal-sync"]



[[bin]]

name = "h4d_browser_receipt_host"

path = "src/bin/h4d_browser_receipt_host.rs"

required-features = ["native"]



[[bin]]

name = "h4e_browser_import_receipt_host"

path = "src/bin/h4e_browser_import_receipt_host.rs"

required-features = ["native"]



[[bin]]

name = "h4f_agent_probe"

path = "src/bin/h4f_agent_probe.rs"

required-features = ["native"]



[dev-dependencies]

pollster = "0.4"

tempfile = "3"

tokio = { version = "1", features = ["io-util", "macros", "net", "rt", "rt-multi-thread", "time"] }