Article Variant Duplicates
Duplicate the current selected product for each verified Article variant and apply those variants to the new copies.
Technical Overview
The Article Variant Duplicates graph is a UI-first agent capability. It does not treat "copy all color variants" as advice. It runs a verifier-backed sequence:
- Read variant options:
list_article_propertiesreads the selected product's Article properties and value sets. - Restore target selection:
select_entitiesreselects the Article target after property readback if the plugin cleared selection. - Duplicate selection:
duplicate_selection_dry_runandduplicate_selectioncreate the needed copies. - Recover copy ids:
list_scene_entitiescompares scene ids before and after duplication when the duplicate tool does not return created ids. - Apply variants: each created copy is targeted by entity id and updated through
update_article_property_dry_runandupdate_article_property. - Readback verification: every Article edit must pass property readback before the graph can report success.
Contract
{
"capabilityId": "article-variant-duplicates",
"operation": "capability_graph",
"requiredTools": [
"list_article_properties",
"list_scene_entities",
"select_entities",
"duplicate_selection_dry_run",
"duplicate_selection",
"update_article_property_dry_run",
"update_article_property"
],
"expectedVerifier": "capability-graph-step-verification"
}
Graph Steps
read-article-variant-options-> Article property value-set readback.duplicate-selection-variants-> tool output or scene id delta must expose created copy ids.apply-article-variant-readback-> each copy gets one Article variant and must verify by readback.
Runtime Rules
- The route is selected from canonical semantic intent, not Turkish or English keyword lists.
- If variant options cannot be read, the graph stops before mutation.
- If duplicate output and scene delta do not expose created entity ids, Article edits do not run.
- If the requested variant set is too large for the safe graph limit, the graph stops and asks for a narrower target instead of partially claiming "all".