Developer documentation
Actions
Commands return actions. Actions are how plugins show UI, edit requests, persist state, mutate live nodes, run commands, and chain work.
Action table
| Action | Fields | Use |
|---|---|---|
multi / action.multi | actions or steps | Run multiple actions in order. |
showMessage | title, message | Show a simple popup. |
showModal | title, children, actions, width, height | Show a modal containing plugin UI nodes. |
showForm | title, form fields, actions | Show a form-style modal. |
setPluginData | key, value | Persist state and rebuild plugin UI. |
editPluginData | key, title | Open a plugin-data editor dialog. |
setFields | fields, optional send | Write request/app bind values. |
setRequest / request.set | request | Replace the active request. |
saveActiveRequestToCollection | none | Save the active request. |
triggerTarget / ui.triggerTarget | targetId, optional payload | Click/trigger an app target. |
runCommand / command | command, optional payload | Run a command by id. |
sendRequestById | requestId, resultKey | Send a saved request and store the result. |
pickTextFile | allowedExtensions, nextCommand | Pick a text file and pass it to a command as ctx.file. |
saveTextFile, exportTextFile, downloadTextFile | filename, text | Write text to a user-selected file. |
debug.log | pluginId, level, message | Append to the plugin debug log. |
ui.ownership.inspect | resultKey | Store a map of UI node owners. |
media.requestCamera, media.requestMicrophone | pluginId, resultKey | Request native camera or microphone permission and store the result. |
media.startAudioRecording, media.stopAudioRecording | pluginId, resultKey, optional transcribe | Record audio and optionally transcribe it through the AI bridge. |
bluetooth.run, ble.run | operation, pluginId, resultKey | Run Bluetooth operations such as permission, status, scan, connect, service discovery, read, and write. |
platform.run | operation, pluginId, resultKey, operation-specific fields | Run platform operations such as system info, network diagnostics, file access, mail/SMS/phone launchers, calendar/contact files, Android snapshots, and Windows diagnostics. |
uiRobot.run | steps, optional capture settings | Drive visible UI targets inside the app for validation and debugging. |
scanDirectoryPicker | none | Open directory picker and scan plugins. |
Live UI actions
These mutate the rendered app immediately. They are temporary runtime mutations unless you also store data with setPluginData.
return {
__action: "multi",
actions: [
{ __action: "ui.setValue", targetId: "urlInput", value: "https://jsonplaceholder.typicode.com/posts/1" },
{ __action: "ui.setText", targetId: "sendButton", value: "SEND NOW" },
{ __action: "ui.setProps", targetId: "sendButton", props: { disabled: false } },
{ __action: "runCommand", command: "core.request.send" }
]
};
Value/text
ui.setValue, ui.setText, ui.setProps.Visibility
ui.hide, ui.show, ui.remove, ui.showAll, ui.resetHidden.CRUD
ui.append, ui.prepend, ui.replaceWith, ui.empty.State
ui.disable, ui.enable, ui.addClass, ui.removeClass.Reset
ui.resetRuntimeUi, ui.resetRuntimeMutations, ui.clearRuntimeUi.