bmux_presenter_plugin 0.0.1-alpha.3

Plugin-owned native presentation CLI and managed hosting
execution_class = "native_fast"
id = "bmux.presenter"
name = "bmux Presenter"
owns_namespaces = ["present"]
provided_capabilities = [
    "bmux.presenter.view.v2",
    "bmux.presenter.manage.v1",
    "bmux.presenter.manage.v2",
]
provided_features = ["bmux.presenter"]
# Local playback owns its provider; managed playback checks the selected host.
optional_capabilities = ["bmux.playbook.read", "bmux.playbook.execute"]
required_capabilities = []
version               = "0.0.1-alpha.0"

[native_abi]
minimum = "1.1"

[[services]]
capability   = "bmux.presenter.view.v2"
interface_id = "presenter-view-v2"
kind         = "command"
[[services]]
capability   = "bmux.presenter.manage.v1"
interface_id = "presenter-host-v1"
kind         = "command"
[[services]]
capability   = "bmux.presenter.manage.v2"
interface_id = "presenter-host-v2"
kind         = "command"

[[commands]]
description   = "present play DECK [--presenter] [--no-playbooks] [--no-reload] [--broadcast [SOURCE_UUID]] [--broadcast-profile NAME] [--web] [--web-assets DIR] [--web-only] [--web-port PORT] [--web-auth none|token] [--web-host IP] [--web-public-host IP] [--web-allowed-hosts HOST,...]. Bare --broadcast publishes the default profile; --broadcast-profile NAME selects a named profile; explicit SOURCE_UUID registers only. No web assets/listener are required for broadcast. Web mirrors locally; web-only needs no terminal. Assets are prepared lazily unless overridden. Web-only holds a read-only audience view until Ctrl-C; browsers cannot navigate. Local arrow/space navigation; q exits. Presenter notes never enter audience frames."
execution     = "caller_process"
expose_in_cli = true
name          = "present-play"
path          = ["present", "play"]
summary       = "Play a Markdown or compiled Rust deck locally"
[[commands.arguments]]
allow_hyphen_values = true
kind                = "string"
multiple            = true
name                = "args"
position            = 0
trailing_var_arg    = true

[[commands]]
description   = "present host DECK --presenter-credential FILE (--audience-credential FILE | --public-read) [--managed | --cert FILE --key FILE [--listen ADDRESS]] [--no-playbooks] [--no-reload] [--broadcast [SOURCE_UUID]] [--broadcast-profile NAME] [--web] [--web-assets DIR] [--web-only] [--web-port PORT] [--web-auth none|token] [--web-host IP] [--web-public-host IP] [--web-allowed-hosts HOST,...]. Assets are prepared lazily unless overridden. Managed hosts run in BMUX; standalone hosts use TLS. Browser audience output has independent authentication and no navigation. Mirror retains local speaker controls; web-only uses presenter-authorized transport controls. Credentials are read from private files, not argv."
execution     = "caller_process"
expose_in_cli = true
name          = "present-host"
path          = ["present", "host"]
summary       = "Host a deck with private presenter and audience scopes"
[[commands.arguments]]
allow_hyphen_values = true
kind                = "string"
multiple            = true
name                = "args"
position            = 0
trailing_var_arg    = true

[[commands]]
description   = "present join tls://HOST:PORT --ca FILE [--server-name NAME] [--credential FILE] [--presenter] [--mode receive-only|submit-only|shared|independent]. BMUX service hosts use bmux:HOST_ID and no TLS options. Reconnect is live-host only; uncertain actions are never replayed."
execution     = "caller_process"
expose_in_cli = true
name          = "present-join"
path          = ["present", "join"]
summary       = "Join a live TLS or BMUX presentation host"
[[commands.arguments]]
allow_hyphen_values = true
kind                = "string"
multiple            = true
name                = "args"
position            = 0
trailing_var_arg    = true

[[commands]]
execution     = "caller_process"
expose_in_cli = true
name          = "present-check"
path          = ["present", "check"]
summary       = "Parse and validate a deck without acquiring the terminal"
[[commands.arguments]]
allow_hyphen_values = true
kind                = "string"
multiple            = true
name                = "args"
position            = 0
trailing_var_arg    = true