pub fn version() -> String {
format!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION"))
}
pub fn usage() -> String {
format!(
"{}
lernie is the seat: the operator's face on a yog server. It dials in over
mTLS, asks and acts, and paints what comes back. It holds no world, runs no
agent and executes nothing.
THE NAME HAS TWO ERAS. lernie through 0.0.x was the agent-loop engine, which
continues under the name litany. lernie 0.1.0 and above is this seat. The
version is the only rule that separates them.
usage: lernie open the window on this box's channels
lernie <verb> [argument…]
lernie start <workspace> <goal>
lernie ask <envelope>
lernie entries
lernie help [<verb>]
lernie [--version | --help]
WITH NO ARGUMENTS AT ALL lernie opens its window: a roster of every workspace
across every channel this box holds, the aimed wall's conversations, the
selected conversation and a composer under it. That is what a seat is; every
verb below is a way of reaching one gesture without one.
The gestures, typed. Each becomes the envelope the boundary already carries
and goes down the channel its workspace names; the reply stream prints one
envelope per line, and the exit code is 0 when the last reply says ok.
{}
And the four words this binary answers itself, with no channel and no engine
up. Each has its own page too: `lernie help <word>` reaches every entry in
both lists.
{}
-V, --version print the name and version
-h, --help print this
What it reads, all of it provisioned by hand and none of it ever written by
lernie: this box's own channel at <data root>/wire/, and one channel per
directory under <data root>/wire/workspaces/. The data root is
$XDG_DATA_HOME/lernie, or $HOME/.local/share/lernie.
See docs/DESIGN.md for the role and the module map, and yog's docs/REMOTE.md
for the protocol lernie implements against.",
version(),
crate::verbs::help::roster(),
crate::verbs::help::doors()
)
}