ToolProjector
El proyector Tool→web (P5.4, ADR#11 "Projected means governed"): gradúa el dispatch ceremonial de P5.3a. El formulario valida la entrada; el registry gobierna la operación — el dispatch corre SIEMPRE por `ToolRegistry::call()` (policy, audit, rate-limit, contención), nunca invoke directo. El proyector proyecta, no navega: devuelve un {@see ProjectedToolResult} y la superficie decide (PRG hoy; otros transportes mañana). Nace host-side (Almácigo) — gradúa al skeleton cuando exista el segundo consumidor.
ToolProjector::__construct()
public function __construct(Milpa\ToolRuntime\ToolRegistry $registry, Milpa\Live\Schema\SchemaForm $schemaForm, Milpa\Admin\Projection\ToolBannerMapper $bannerMapper):Parameters
| Name | Type | Description |
|---|---|---|
| $registry | Milpa\ToolRuntime\ToolRegistry | |
| $schemaForm | Milpa\Live\Schema\SchemaForm | |
| $bannerMapper | Milpa\Admin\Projection\ToolBannerMapper |
ToolProjector::dispatch()
public function dispatch(string $toolName, Milpa\Live\Schema\FormDefinition $definition, array $rawBody, Milpa\ToolRuntime\Contracts\ToolContext $context): Milpa\Admin\Projection\ProjectedToolResultCorre una herramienta gobernada y proyecta su resultado a la superficie web.
Parameters
| Name | Type | Description |
|---|---|---|
| $toolName | string | |
| $definition | Milpa\Live\Schema\FormDefinition | |
| $rawBody | array<string, mixed> | |
| $context | Milpa\ToolRuntime\Contracts\ToolContext |