Bucket Contract
link-bucket-contract holds the two questions lnk bucket asks the
plugins built on it, as Link's answers carry them (link_plugin::answers):
which folders here are an agent's, not yours, and a hosted agent's Home
pushed or pulled. lnk agent answers both
(its answers).
bucket.folders
FOLDERS asks, with nothing, for the folders here that are an agent's,
so lnk bucket never takes one for your files, and backs each up as
that agent's. Its answer is Folders, {"agents", "hosted", "teams"},
each a list, and a key it doesn't know is refused.
agents
This machine's agents, each {"id", "name", "root", "running"}: its
files folder, absolute, and whether it runs now, null when that can't
be said.
hosted and teams
The Home of each agent this machine moved to a cloud account that hosts
agents, and each hosted team's shared folder here, each {"id", "name", "account", "root"}: the agent's ID or the team's, the cloud account
that hosts it, and its folder here, absolute.
bucket.home
HOME is lnk bucket push and pull for a hosted agent's Home: pushed
from, or pulled to, its folder here, through the account that hosts it.
What the answering plugin says on stderr is shown as it comes.
The question
{"way", "hosted", "team"?, "paths"?}: way is push or pull,
hosted the Home's {"id", "name", "account", "root"}, team true for
a hosted team's folder, not an agent's Home, and paths what to push
(relative to its folder here) or what to pull (patterns), none for all
of it.
The answer
Moved, {"sent", "same"}: the files that went, and how many the other
end held the same already.