#3591881 Canvas AI: Improve the schema of the place_components tool
Summary
- Replaces place_components' single
component_structure_yamlstring argument with anoperationslist, schema-typed via a newPlacementOperationitem plugin (mirrors the edit_components/ComponentEdit pattern). placementis now a provider-enforced enum (Choice: above/below/inside) instead of prose in the tool description.CanvasAiPageBuilderHelper::generateComponentPlacementData()andcomputePlacement()now take a parsed array;customYamlToArrayMapper()still parses its own YAML before delegating, soset_component_structureis unchanged.PlaceComponentsTestfixtures adapted to the new shape; added cases for the rendered schema, an empty operations list, and a non-listcomponentsblock.- Tool remains inert: not wired to any agent.
Testing instructions
AI Disclosure
AI-Generated: Yes (Used Sonnet 5 to adapt PlaceComponentsTest, Reviewed and tested by the author).
Closes #3591881 (closed)