board/tool¶
Source: src/board/tool.ts
How a member reaches the board.
One tool, board, built per member and closing over two things it therefore
never has to be told: which board, and who is calling. An agent whose tools:
does not name board is not given it by pi, so what a member can say stays
readable in its own file, the same way delegation does.
The member’s id is in the closure, not in the parameters. That is the
whole reason this file exists rather than the board being handed round: a
from a model can write is a from a model can borrow, and a medium where
anybody can post as anybody is not a record of anything.
The tool announces nothing itself. The board and the claims it is handed do
that, whoever acts on them - see announced.ts - so what a member did through
this tool and what the workflow did for it land in the same record.
When the caller gives it a {@link Claims}, the tool also grants and returns
things. That is a different act from posting a claim: a post announces into
a medium that was empty when the member looked, and a take is decided. Both
are offered, because a member still has to say what it is doing, and only one
of them settles who does it.
BoardToolOptions¶
type
export type BoardToolOptions = {
/** The one everybody is posting to. Shared; the cursor into it is not. */
board: Board;
/**
* The member holding this tool.
*
* Stamped on everything it posts. It is a parameter of the *builder*, never
* of the tool: whoever builds the tool knows who is holding it, and a model
* cannot reach a closure.
*/
from: string;
/**
* What there is to take, when anything is.
*
* Absent, the tool offers `post` and `read` only, and says so in its
* description: a member is never shown an action that would be refused
* whatever it asked for.
*/
claims?: Claims;
/**
* Where this member has read to. Pass the one the workflow hands out from,
* so a `read` never hands back what the top of the turn already did. Left
* out, the tool keeps its own.
*/
reader?: Reader;
};
Which board, on whose behalf.
declaresBoard¶
function
export function declaresBoard(tools: readonly string[] | undefined): boolean { /* … */ }
Whether an agent’s definition asks to be allowed on the board.