evoke 0.1.0 · you invoke a function; you evoke a reflex
use
evoke "<input>" decide, gate, run
evoke the REPL; a piped line is one input
evoke try "<input>" decide only, and show every judgment
--json one JSON line per input, for a filter
--tag <tag> only the reflexes carrying the tag
-- the rest is input, even a command word
evoke why the last decision, explained
evoke run <call> by name, without the classifier
install
evoke add <ref>… [--as <name>] fetch, lint, lock, install
evoke remove <name>
evoke update [<name>] each remote reflex to its newest tag
evoke update --accept <name> a moved contract or effect, accepted
evoke sync the lock realised on this machine
evoke trust this project, trusted at its content
tune
evoke show [<name>] the installed reflexes, or one as used
evoke teach ["<utterance>"] <call> the utterance means this call
evoke teach ["<utterance>"] not <name> the utterance is not this reflex
["<utterance>"] omitted means the last input
evoke vocab <name> the words and their meanings
evoke vocab <name> add <word> "<meaning>" [--value <v>]
evoke vocab <name> remove <word>
evoke config <name> <key> <value> a setting; a secret as --env <VAR>
evoke test [<name>] every example and test, judged
author
evoke new <name> a working reflex from the template
evoke check lint, types, contract against its tag
exit 0 ran · 1 failed · 2 declined · 3 needs a human · 4 adapter failed
The first argument selects a command only when it is exactly a command word. Otherwise every argument is the
input. -- forces input. Lines from stdin are always input.
--help, -h and --version are flags in the first place. They print to stdout and exit 0.
Commands validate every argument before acting. The reserved words edit, search, publish, adapter and
calibrate are refused by name until they exist.
A call is name arg=value…. A value is bare or a JSON string, like duration="10 minutes". A flag is its
bare name. run and teach take a call as one argument or as separate words.
Fetches each ref at its pin or newest tag. Lints, tests for stolen phrases, writes evoke.toml, the lock and evoke.d.ts, and records the runtime. --as names a single ref
evoke remove <name>
Drops the reflex from evoke.toml and the lock. Keeps your overlay, vocabularies, settings and the store's copy
evoke update [<name>]
Moves each unpinned remote reflex, or one, to its newest tag. A pinned one moves to its pin. Reports. Never prompts or rewrites your files
evoke update --accept <name>
Takes on an effect upstream loosened, at the current tag
evoke sync
Places every locked reflex in the store at its locked tag, and records the runtime. Never changes the lock
evoke trust
Trusts the project here, at the content of its four owned paths
A ref is owner/repo[/dir][@tag] on GitHub, <git url>[#dir][@tag] over https or ssh, or ./dir for a
local reflex: Installing reflexes.
Writes ./<name>/reflex.toml, <name>.mts and reflex.d.ts from the template. Refuses a directory that exists
evoke check
In a reflex directory: the manifest's lines to fix, the body found and loaded, lint, reflex.d.ts rewritten when it changed, and the contract diffed against the repository's newest tag