Scheduler Contract
link-scheduler-contract turns an agent's spec ([tool.scheduler])
and its teams into the flags Link Scheduler takes, so its numbers are
always the spec's, never the program's nor the machine's. The harness
plugin starts the agent's scheduler with them, and any machine running
the scheduler for an agent passes them too.
Its flags
What lnk-link-scheduler serve and run are given, each read from the
spec's [tool.scheduler] (spec.tool("scheduler")).
caps
--per-day, --subagents, --hops, --late (run or skip) and
--zone, from the spec's per_day, subagents, hops, late and
zone. A spec that sets none of a key is refused, naming it; Link's
own spec sets each: 100, 5, 8, run and local.
teams
--agent-id <id>, then for each team the agent is on --team-id <name>=<id> and each other member as --teammate <team>/<name>=<agent id>, whom send may reach. An agent on no team
gets none of them.
timeout
--timeout, the spec's [tool.scheduler] firing, how long the runner
waits on a firing (30 minutes in Link's spec). It's the runner's alone,
never serve's, and none when the spec sets none.
serve_flags and run_flags
serve_flags is the caps, then the teams. run_flags is those, then
--timeout, which run requires: a spec with no [tool.scheduler] firing is refused for it, while serve needs none.
What never asks you
allowed names the calls of its tool that never ask you: list, which
only reads, and, unless the spec says [tool.scheduler] ask = true,
task, schedule, send and cancel.
tool_of
The tool an agent's scheduler is served as on its proxy (lnk sandbox tool add) is scheduler-<agent id>.