clear_all board action. The assistant can now wipe a whole space in one
action when asked to clear/empty/reset it, instead of reaching for an action
that doesn't exist (which used to leak raw JSON into the chat). It's
destructive, so the canvas confirms with the user first, and cards created in
the same turn survive the wipe.
Fixed
Raw JSON no longer renders in chat when the model malforms an edit. The
action extractor now recognizes a lone JSON object (not just an array) and
action-looking blocks with invented verbs, scrubbing them from the prose and
coercing a stray {…} into a proper single-action batch. A "type" with no
underscore (e.g. a real {"type":"object"} schema block) is left intact, so
genuine code the user asked for still renders.