<?php

declare(strict_types=1);

namespace Drupal\flowdrop\Plugin\FlowDropNodeProcessor;

/**
 * Marker: this node forwards the tools wired into it, instead of being one.
 *
 * When the runtime resolves a consumer's tools and finds a tool parent whose
 * processor implements this interface, it recurses into THAT node's incoming
 * tool connections instead of binding the node itself as a tool. This is what
 * makes a ToolBox work: tools are wired once into the passthrough node, and
 * its tool output fans the whole set out to any number of consumers.
 *
 * The marker disambiguates two readings of a tool-typed output port:
 * - a plain tool node's output means "I AM a tool" (bound as one tool);
 * - a passthrough node's output means "I CARRY tools" (flattened).
 * In particular, a {@see ToolsAwareInterface} node wired in as a tool
 * (agent-as-tool) is NOT flattened — it stays a single tool unless it also
 * carries this marker.
 *
 * Like the other capability markers, presence is detected by class via
 * instanceof/is_subclass_of, without instantiation. A passthrough node is
 * tool-only by classification (all outgoing edges are tool connections), so it
 * is excluded from the execution graph and its process() is never called.
 *
 * @see \Drupal\flowdrop_node_processor\Plugin\FlowDropNodeProcessor\ToolBox
 * @see \Drupal\flowdrop\Plugin\FlowDropNodeProcessor\ToolsAwareInterface
 *
 * @api
 */
interface ToolPassthroughInterface {
}
