diff options
| author | blasty <blasty@local> | 2026-07-10 15:29:21 +0200 |
|---|---|---|
| committer | blasty <blasty@local> | 2026-07-10 15:29:21 +0200 |
| commit | 9583334d0d413d8f4962b5d8fa1eccdbc196dd33 (patch) | |
| tree | 13ed9424c875dcf98d1323f573d19e35c139ef1b /docs/RPC.md | |
| parent | docs: RPC protocol reference (docs/RPC.md) (diff) | |
| download | ida-tui-9583334d0d413d8f4962b5d8fa1eccdbc196dd33.tar.gz ida-tui-9583334d0d413d8f4962b5d8fa1eccdbc196dd33.tar.xz ida-tui-9583334d0d413d8f4962b5d8fa1eccdbc196dd33.zip | |
rpc: more verbs — structured reads, modal select, in-view search, save
Introspection (offloaded to a thread so a big fetch can't freeze the
render): pseudocode (full body), disassembly (bounded), xrefs_to/from
(structured), resolve (name->ea). These let an agent reason about a
function and the call graph without scraping screen().
Semantic: select (choose the highlighted/nth item in the open xrefs or
symbol-palette list and activate it — the natural follow-up to xrefs/
symbols), search (/ or ? incremental in the active code view), save
(Ctrl+S). rpc_smoke exercises all of them end-to-end (18 green).
Diffstat (limited to 'docs/RPC.md')
| -rw-r--r-- | docs/RPC.md | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/docs/RPC.md b/docs/RPC.md index dcf63b6..0a60cc9 100644 --- a/docs/RPC.md +++ b/docs/RPC.md @@ -45,12 +45,21 @@ acts on stale state. | `text` | `text: str`, `delay_ms?=0`, `settle?`, `timeout?` | type a literal string into the focused input; `delay_ms` interleaves per-char waits for a typed-out look. | ### Introspection (read-only) +Structured reads for an agent to reason without scraping the screen. The heavy +ones (`pseudocode`/`disassembly`/`xrefs_*`) run off the UI loop so the render never +stalls. `target` is a name, `0xADDR`, or omitted (= current function). + | method | params | returns | |--------|--------|---------| | `state` | — | active/pref view, current function `{ea,name}`, cursor `{line,col,word,ea}` (or `{va,byte}` in hex), status text, filter, nav depth, dirty, open `modal`. | | `view` | `lines?` | visible lines of the active code pane, cursor-marked (disasm/decomp; use `screen` for hex). | | `screen` | — | `{width,height,text}` — a full plain-text render of exactly what's on screen. | | `functions` | `filter?`, `limit?=50` | `[{ea,name,size}]`. | +| `pseudocode` | `target?` | `{ea,name,code,failed,error,truncated}` — the **whole** decompiled body. | +| `disassembly` | `target?`, `max?=2000` | `{ea,name,total,lines:[{ea,text}]}`. | +| `xrefs_to` | `target`, `limit?=200` | `[{frm,to,type,fn_addr,fn_name}]` — who references it. | +| `xrefs_from` | `target`, `limit?=200` | `[{frm,to,type,fn_addr,fn_name}]` — what it references. | +| `resolve` | `name` | `{ea}` (or `{ea:null}`). | ### Semantic verbs High-level ops type through the **real prompts** with a per-char delay @@ -70,6 +79,9 @@ predicate so the returned state is final. | `xrefs` | — | `x`: open the xref picker. | | `symbols` | `query?` | Ctrl+N palette, optionally pre-typed. | | `structs` | — | Ctrl+T struct editor. | +| `search` | `term`, `direction?=1` | `/` (or `?`) incremental search in the active code view. | +| `select` | `index?` | in an open modal list (xrefs/symbols) choose the highlighted (or nth) item and activate it. | +| `save` | — | Ctrl+S: persist the `.i64`. | | `close` | — | Escape (dismiss a modal). | ### Movement (fast — bare keypresses, pump-only settle) |
