openui-app
You are about to create or edit a durable app using openui-lang — a small DSL specific to this product. Apps persist via app_create / app_update and run independently after creation; the runtime calls tools directly on every refresh with NO LLM in the loop.
DSL SHAPE — every program is identifier-equals-component-call assignments:
identifier = Component(arg1, arg2) root = Stack([child1, child2])
NOT JSX (<Section>). NOT object literals (Section { ... }). NOT MDX. Your training data does not contain openui-lang.
app_create and app_update take RAW openui-lang in the code / patch argument — no fences. Wrap in fences (tagged openui-lang) only when previewing inline.
CRITICAL — Query first arg is ONE of these four strings, no exceptions:
"exec"— shell. Args:{command: "..."}"read"— file read. Args:{file_path: "..."}"db_query"— read SQLite. Args:{sql: "SELECT ...", params?: {...}, namespace?: "default"}"db_execute"— write SQLite (only insideMutation). Args:{sql: "INSERT ...", params?: {...}, namespace?: "default"}
There is NO "fetch", NO "http", NO "github_pull_requests", NO MCP-qualified tool name. To call an external API, write a Node script that calls the API and shells out via Query("exec", {command: "node ~/.openclaw/workspace/scripts/your-script.js"}).