Connection Policy
link-connection-policy holds a connection's opinions as the agent's
spec writes them, and the checks a conversation's tools header takes.
The agent spec, the connection contract and the store contract share
it, so each reads them alike.
A connection's opinions
Connection is one table of an agent's spec: [connections] for every
connection, [connection.<name>] for one, each key left out where the
spec doesn't set it. A key or table it doesn't know is refused, so a
spec never says something no connection reads
(Agent Spec).
What the table holds
working is a reaction on your message while the agent answers, and
steered one on a message that joined a running turn, both on a
connection that has reactions. stream shows the answer as it's
written, activity each tool it calls above it, and pace how often
it's shown again ("1s"), never faster than the platform allows.
Groups and parts
groups says which of the owner's messages in a group the agent
answers: mention, those that mention it or answer one of its
messages, or never, direct messages alone. images, documents and
voice say whether a message's images, PDF or text documents and voice
notes reach the agent; left out or false, each is left out and the
agent told so.
Durations
duration_ms reads a spec's durations, such as "10m", as
milliseconds, the same way for every spec.
A conversation's tools
A conversation may be narrowed to some of its tools by the
Link-Tools header, a list of tools' names separated by commas
(The Endpoint).
A tool's name
is_tool_name takes a name of 1 to 128 letters, digits, _, - and
., and the header names at most TOOLS_MAX, 256 tools.
Writing the header
tools_header writes a list of tools as the header, and refuses a name
it may not hold, or more than 256 of them, saying which.
Reading the header
tools_of reads the header back: each tool once, in its order, and
none for an empty header. A header that isn't a list of tools' names,
or names more than 256, reads as nothing at all, so it's refused rather
than taken as every tool.