Messages

Every method the daemon and an adapter may send.

Daemon to adapter: requests

The adapter answers each with a result or an error.

MethodParamsResult
initializeprotocols, host, adapter, kind, grant, paths, limits{protocol, name, version}
ping{}{}. Sent every 15 seconds to a service.
shutdown{}{}. Sent when the adapter is stopped.
runtime.preparespec, path_hint, phase (start or restart){steps, notes}
runtime.planspec, steps_done{program, args, cwd, extra_env, binary_path}
command.invokeverb, argv, cwd, dry_run, actor, tty{exit_code, result?}

runtime.prepare and runtime.plan are how a runtime adapter launches an app while the core still owns the child. The adapter returns data: build steps (an id, an argv, a cwd, extra environment, a timeout, whether to capture output, and whether the step is optional), and then a launch plan (a program, arguments, a working directory and extra environment). The core checks and runs the steps in their own process group and spawns the plan itself. The adapter runs nothing. The spec it sees is a redacted view: the keys of the environment with the value <redacted>.

command.invoke runs a command that the adapter added to the CLI, such as oxidepm notify. The actor is the class and label of whoever asked.

Daemon to adapter: notifications

No answer.

MethodParams
initialized{}
event{seq, kind, family, at, app?, data, options?, dropped_before?}. See Events.
cancel{id}: the request with that id was abandoned, and a late answer will be dropped.

Adapter to daemon

MethodKindWhat it does
host.requestrequestAsks the daemon to do something. See The host API.
host.audit_noterequestWrites a line to the audit log: {"text": "..."}.
invoke.outputnotificationStreams output of a command.invoke: {id, stream, text}, with stream one of stdout, stderr or status.
cancelnotification{id}. Accepted and ignored.

The provider.* and gate.* method names are reserved.