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.