Pill dragging drag test bed

A focused harness for driving drag-and-drop from AppMCP's generic ui_drag. Two shelves use different drag technologies so we can see which the synthetic drag can drive, and dropping before/onto/after a pill has distinct meaning (ordering).

Try it

Drag a pill from the tray onto a shelf, or reorder within a shelf. Then ask your assistant:

“Drag the Region pill onto the Columns shelf, then put Category before it.”

The assistant uses observe_page to get refs, then ui_drag(ref, toRef, position). Watch which shelf accepts the drag — that tells us what will work on Tableau.

Field tray

Columns shelf — pointer-based DnD (pointerdown/move/up)

Rows shelf — native HTML5 DnD (drop target); also accepts pointer drops

Policy-by-selector — draggables / ignore / protect declared in createAppMcp, no per-element markup

These elements carry NO AppMCP attributes. Their policy comes entirely from the observe: { draggables, ignore, protect } selectors in app.js — the same mechanism Tableau needs (its pills are pointer-DnD, not native draggable).

Discount
selector-declared drop zone
internal debug panel — agent should NOT see this

Controls — exercise every actuator against varied affordances

status: idle

Event log

drag something…