# State Machines Tests the machine toolbox: create, add_state, transition, reset, destroy. Machines are persistent UI components with states, buttons, content, and local transitions. ## Setup - clear history ## Steps ### 1. Create a machine - send: create a navigation machine called "nav" with initial state "main" showing two buttons: Menu 1 (goes to sub1) and Menu 2 (goes to sub2) - expect_trace: has tool_call create_machine - expect_trace: machine_created id="nav" ### 2. Verify machine renders - send: what machines are on my dashboard? - expect_response: contains "nav" or "machine" ### 3. Navigate via button click (local transition) - action: first matching "menu_1" - expect_trace: has machine_transition - expect_trace: no thinker ### 4. Add a state to existing machine - send: add a state "sub3" to the nav machine with a Back button and content "Third submenu" - expect_trace: has tool_call add_state ### 5. Reset machine - send: reset the nav machine to its initial state - expect_trace: has tool_call reset_machine - expect_response: contains "main" or "reset" or "initial" ### 6. Create second machine alongside first - send: create a counter machine called "clicks" with initial state "zero" showing a Click Me button and content "Clicks: 0" - expect_trace: has tool_call create_machine - expect_trace: machine_created id="clicks" ### 7. Both machines coexist - send: what machines are running? - expect_response: contains "nav" - expect_response: contains "click" ### 8. Destroy one machine - send: destroy the clicks machine - expect_trace: has tool_call destroy_machine - send: what machines are running? - expect_response: contains "nav"