*/ public function available(ToolContext $context): array; /** * What policy says about a call, without running it and without reporting it (used to find the calls that * need a person's approval before any of a step's calls run). * * @since 0.1.0 * @param array $args */ public function decide(ToolContext $context, string $name, array $args): Decision; /** * Run one tool call. Policy is asked again here, so nothing runs that it did not allow. Never throws: a refusal, * a call that needs approval or a failure is an outcome with status `blocked`, `ask` or `error`. * * @since 0.1.0 * @param array $args */ public function execute(ToolContext $context, string $name, array $args): ToolOutcome; /** * One sentence a person reads before approving a call: what it will do. * * @since 0.1.0 * @param array $args */ public function preview(string $name, array $args): string; }