omnius 1.0.891 → 1.0.893

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 morluto
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,43 @@
1
+ {
2
+ "package": "rea-agents",
3
+ "version": "6.7.0",
4
+ "repository": "https://github.com/morluto/rea",
5
+ "documentation": "https://rea.tools/",
6
+ "license": "MIT",
7
+ "tarball": "https://registry.npmjs.org/rea-agents/-/rea-agents-6.7.0.tgz",
8
+ "integrity": "sha512-yhIx2ioJYYT1C/tONfYeitC6LhnKmCh+ZwRUOgYuhSc733lGhkkt73zhug9WmLgxoMdKuqIYGCoBfD4fXkOhFw==",
9
+ "files": {
10
+ "LICENSE": {
11
+ "bytes": 1064,
12
+ "sha256": "798f9e4d18e49b30bf2f12696c8ced73dc4e1413da375a333d01281543a1ea8b"
13
+ },
14
+ "skills/reverse-engineer-anything/references/android-applications.md": {
15
+ "bytes": 2125,
16
+ "sha256": "67a9237d76a5b736640c6404f5e1fe01d83369848142feb7e11d78f4a5e62732"
17
+ },
18
+ "skills/reverse-engineer-anything/references/connection-and-recovery.md": {
19
+ "bytes": 8823,
20
+ "sha256": "a33760c84ae100f6ffd27d666e515956c5014ac33a6ee2414807833ae666a2b1"
21
+ },
22
+ "skills/reverse-engineer-anything/references/evidence-workflows.md": {
23
+ "bytes": 4363,
24
+ "sha256": "2bdee98a843d018cf850c706111bb74c459ba8640da00799e9208122e4d5ab80"
25
+ },
26
+ "skills/reverse-engineer-anything/references/javascript-applications.md": {
27
+ "bytes": 11962,
28
+ "sha256": "aaa78502a3e95268f6269e75f373908045291fedf6ddd106001555ed06bb2bf6"
29
+ },
30
+ "skills/reverse-engineer-anything/references/native-and-artifacts.md": {
31
+ "bytes": 18911,
32
+ "sha256": "18b8828aec6476be03ca92bdb9506c47cc9ef8c1415c37d33e4af2f8c55cf8f9"
33
+ },
34
+ "skills/reverse-engineer-anything/references/runtime-observation.md": {
35
+ "bytes": 4798,
36
+ "sha256": "fea85e2005a8fd1c86a946eeede24c20e57592a1deb36576b45216e9854803c8"
37
+ },
38
+ "skills/reverse-engineer-anything/SKILL.md": {
39
+ "bytes": 23523,
40
+ "sha256": "fbcd39d6abe803cf7aa49c1880815bc8e22ba2af87a23681944f687bb7629eb1"
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "skills": [
3
+ {
4
+ "name": "omnius-rea",
5
+ "description": "Use Omnius's installed REA CLI and optional MCP binding for scoped reverse engineering without an additional setup or npm download.",
6
+ "triggers": ["REA", "reverse engineer", "decompile", "disassemble", "Electron ASAR", "inspect packaged application"]
7
+ },
8
+ {
9
+ "name": "reverse-engineer-anything",
10
+ "description": "REA's version-matched investigation guide for native, managed, Electron/JavaScript, packaged, firmware, and browser targets; load omnius-rea for the installed CLI route.",
11
+ "triggers": ["reverse engineering", "binary analysis", "decompile", "firmware", "ASAR", "recorded runtime evidence"]
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: omnius-rea
3
+ description: Use the REA runtime shipped with Omnius to reverse engineer explicit binaries, packages, Electron/JavaScript apps, firmware, and recorded runtime evidence.
4
+ ---
5
+
6
+ # REA in Omnius
7
+
8
+ Omnius includes the reviewed `rea-agents` 6.7.0 runtime and its matching
9
+ `reverse-engineer-anything` skill with reference guides. Load that skill for
10
+ target routing, provider requirements, and evidence handling. Use normal
11
+ repository tools for ordinary analysis of available source code.
12
+
13
+ ## Triggers
14
+
15
+ - reverse engineer an application
16
+ - inspect an executable or packaged application
17
+ - decompile a binary
18
+ - analyze an Electron ASAR
19
+ - REA
20
+
21
+ ## Use the installed runtime
22
+
23
+ Run `omnius rea status --json` when installation readiness is unknown.
24
+ Commands after `omnius rea` go directly to the installed CLI, preserving every
25
+ argument. No `npx` download, REA setup, global registration, engine installation,
26
+ or inference startup is needed for a supported CLI investigation.
27
+
28
+ For an explicitly supplied JavaScript tree or ASAR:
29
+
30
+ ```sh
31
+ omnius rea analyze-javascript-application "/absolute/path/to/app" --json
32
+ ```
33
+
34
+ Native analysis uses the operator's existing provider configuration. Missing
35
+ Ghidra, Hopper, Java, IDA, or other engines affects only the routes requiring
36
+ them. Continue supported inspection; never install a provider implicitly.
37
+
38
+ ## MCP only when needed
39
+
40
+ Use `omnius rea mcp-config` to print the exact installed Node/REA stdio binding.
41
+ This command only prints configuration. It does not alter this client or other
42
+ agents. The same server is available as `omnius rea --mcp`; its stdout belongs to
43
+ the MCP protocol. Omnius does not start the server or inject its entire tool
44
+ catalog into ordinary tasks.
45
+
46
+ `omnius rea mcp add` and `omnius rea mcp doctor` remain the upstream registration
47
+ and connection-diagnostic commands; their arguments pass through unchanged.
48
+
49
+ When connecting is useful for the requested task, use Omnius's existing MCP
50
+ configuration/onboarding tools with that exact binding, preserving existing
51
+ servers and credentials. Discover the connected server's actual tools and
52
+ schemas; do not infer connection readiness from an installed skill. CLI
53
+ inspection remains available immediately without registering an MCP server.
54
+
55
+ ## Evidence and scope
56
+
57
+ Use the user's exact artifact, endpoint, or recorded capture. Static inspection
58
+ does not establish runtime behavior. Preserve evidence identities, file hashes,
59
+ coverage limits, and unknowns. Prefer summaries and retained evidence pages to
60
+ repeating large analyses. Execute an application or browser scenario only when
61
+ that action and target are within the requested investigation.
@@ -0,0 +1,356 @@
1
+ ---
2
+ name: reverse-engineer-anything
3
+ description: Reverse engineer native, managed, Electron/JavaScript, packaged, firmware, and browser targets with REA. Use shipped-artifact or requested runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.
4
+ metadata:
5
+ version: "42"
6
+ tool_count: 207
7
+ ---
8
+
9
+ # REA
10
+
11
+ Use REA when a claim depends on a shipped binary or package, decompilation,
12
+ passive application runtime evidence, or comparison with
13
+ behavior not established by available source. For ordinary analysis of a
14
+ complete source repository, use normal repository tools and do not run REA
15
+ readiness or provider commands.
16
+
17
+ ## Connect only when needed
18
+
19
+ Installing this skill supplies instructions; it does not register the REA MCP
20
+ server, install analysis engines, or add tools to an already-running agent.
21
+
22
+ If REA tools are available and their registration is not known to be stale,
23
+ proceed directly to the target. Do not run diagnostics or setup before every
24
+ investigation. Use the connected server's actual tool list and input schemas;
25
+ a skill installed from repository main may describe capabilities absent from
26
+ an older npm release. Keep complete inline Evidence when that server does not
27
+ advertise retained references.
28
+
29
+ If tools are absent, a call is blocked by the client, or a required provider is
30
+ unavailable, read [connection and recovery](references/connection-and-recovery.md).
31
+ Diagnose the observed blocker, continue useful supported work, and resume the
32
+ original task after repair. Client approval, shell PATH, registration and engine
33
+ availability have different remedies; avoid repeating setup for all of them.
34
+
35
+ 1. Diagnose without changing REA or client configuration. `npx` may download
36
+ the package and write to npm's cache. For Codex, run
37
+ `npx -y rea-agents@6.7.0 doctor --client codex --json`. Substitute the current
38
+ supported client: `claude_code`, `claude_desktop`, `codex`, `cursor`,
39
+ `gemini_cli`, `windsurf`, `devin`, `opencode`, `antigravity`, `copilot_cli`,
40
+ `commandcode`, `vscode`, `grok_build`, `omp`, or `grok_bot`. `grok_bot` has no local
41
+ file registration: doctor reports the Grok Bot chat step, and setup does not
42
+ write `mcp.json`. If the client is unknown, use `doctor --json` and
43
+ inspect its registration results before choosing a setup scope.
44
+ 2. Distinguish the reason. Missing, malformed, or stale registration needs a
45
+ scoped configuration repair. An aligned registration with no tools in the
46
+ active session needs a restart/reconnection; doctor cannot prove that the
47
+ current agent has connected. A missing provider affects only tasks requiring
48
+ that provider: static JavaScript inspection needs neither Hopper nor Ghidra,
49
+ and Android inspection has separate bring-your-own JADX/Java prerequisites.
50
+ 3. For a configuration repair, prepare the read-only plan:
51
+ `npx -y rea-agents@6.7.0 setup --client codex --dry-run --json`.
52
+ Use the current client's ID, show its exact proposed paths, backups, and
53
+ changes, and obtain approval before setup writes configuration or installs
54
+ Hopper. Setup normally installs the matching bundled skill too; include that
55
+ replacement in the reviewed plan. After approval, apply the same scope with
56
+ `npx -y rea-agents@6.7.0 setup --client codex --yes`. Add `--install-hopper`
57
+ only if that separate installation was needed and explicitly approved.
58
+ 4. Restart/reconnect the affected agent. Verify that REA tools actually appear
59
+ in the session, then resume the original investigation. If they remain
60
+ absent, inspect the client's MCP launch error rather than repeating setup.
61
+
62
+ REA setup never installs or upgrades Node.js, npm, Homebrew, Java, Ghidra, IDA,
63
+ JADX, Kuna, Binwalk, or Unblob. Use existing prerequisites; do not install unrelated
64
+ software to repair
65
+ MCP registration. For an unsupported client, use manual stdio registration
66
+ with a version-pinned `rea-agents` package or continue through the CLI.
67
+
68
+ A concrete CLI fallback for an operator-supplied JavaScript tree or ASAR is:
69
+
70
+ ```bash
71
+ npx -y rea-agents@6.7.0 analyze-javascript-application /absolute/path/to/app --json
72
+ ```
73
+
74
+ No MCP registration or native engine is required. Read the returned Evidence,
75
+ graph, limitations, and unknowns with the same care as an MCP result; the CLI
76
+ returns the Evidence record directly. This fallback does not establish that
77
+ MCP is configured. Native CLI tasks still require their selected engine.
78
+ Prefer an existing `rea` CLI. When none is installed and REA package acquisition
79
+ is within the authorized scope, use `npx -y rea-agents@6.7.0` in its place.
80
+ Configuration repair starts with a read-only setup plan; show paths, backups and
81
+ skill replacement before applying authorized changes. Preserve existing approval
82
+ and target-execution boundaries. REA setup never installs or upgrades unrelated
83
+ software, including Node.js, npm, Homebrew, Java, Ghidra, IDA, JADX, Kuna, Binwalk or Unblob.
84
+
85
+ ## Route the target first
86
+
87
+ Choose the first tool from the target the user supplied. Use `open_binary` for
88
+ active-target native or archive workflows; target-free tools take their own
89
+ explicit path or endpoint and do not need it.
90
+
91
+ - ASAR or extracted JavaScript/Electron tree:
92
+ `analyze_javascript_application`.
93
+ - Archive/package member inventory (ZIP/APK/IPA/MSIX/AppX or DMG):
94
+ `open_binary` with the supplied local path; use `inspect_artifact` when its
95
+ graph and findings help answer the question.
96
+ - Android APK code, classes, methods, or incoming references:
97
+ `inspect_android_package`, then focused Android tools when advertised.
98
+ Archive member inventory still uses the archive route above.
99
+ - Managed PE/CLI assembly: `inspect_managed_artifact`.
100
+ - Firmware image: `inspect_firmware_regions` when advertised. Use
101
+ `extract_firmware` when extraction is requested, with a caller-selected new
102
+ absolute output directory. These tools use caller-supplied Binwalk/Unblob on
103
+ Linux; see the [firmware guide](https://github.com/morluto/rea/blob/main/docs/firmware-analysis.md).
104
+ - .NET NativeAOT PE/ELF: native Ghidra analysis. Native code can yield pseudocode;
105
+ consult the NativeAOT workflow in `references/native-and-artifacts.md` for
106
+ optional metadata recovery and its supported host/layout boundary.
107
+ - User-owned browser page already open: `list_browser_targets`.
108
+ - Browser action the agent must perform (click, type, navigate):
109
+ `capture_browser_scenario` with declared actions. See
110
+ [runtime observation](references/runtime-observation.md) for connect/launch
111
+ and the focused follow-up browser tools.
112
+ - Fiddler Everywhere traffic or a native `.saz` capture: read the
113
+ [Fiddler workflow](references/runtime-observation.md#fiddler-everywhere-traffic-debugging).
114
+ Inspect saved SAZ with `inspect_web_network_capture` and `format: "saz"`;
115
+ connect Everywhere's separate MCP server for live traffic.
116
+ - Retained HAR/SAZ/native mitmproxy/aioquic qlog capture: `inspect_web_network_capture`. Select
117
+ original record ordinals when useful; inspect producer fields and byte/number
118
+ sidecars without fetching recorded URLs or claiming live attribution. See
119
+ [historical captures](https://github.com/morluto/rea/blob/main/docs/web-network-captures.md) for the exact upstream
120
+ profile and credential exclusions. Qlog support starts with aioquic 1.5.0
121
+ JSON 0.3; stream coverage and endpoint loss declarations do not recover bodies
122
+ or establish network loss. Prefer detail summary, then kind qlog trace/stream
123
+ pages; select one trace, stream ID and direction for contribution/range pages.
124
+ Facts retain all-recorded-events-before-selection scope. Other qlog layouts
125
+ and PCAP correlation are unsupported.
126
+ - User-owned Electron runtime already open: `list_electron_targets`. Before an electron-main Inspector attempt, check packaged fuses with `inspect_electron_fuses`; disabled `EnableNodeCliInspectArguments` means the app ignores `--inspect`.
127
+ - Packet-field discovery: `inspect_packet_fields` searches installed protocols
128
+ and field names/types before choosing fields for `inspect_packet_capture`.
129
+ Query/page the relevant records; registrations do not establish observed traffic.
130
+ - Recorded packet captures: `inspect_packet_capture` with selected TShark fields,
131
+ display filters and decode-as rules. Requires Linux, util-linux prlimit and `REA_TSHARK_COMMAND`; see
132
+ [capture guide](https://github.com/morluto/rea/blob/main/docs/packet-captures.md).
133
+ Packet limits count input packets before filtering. Output defaults to 50 matching
134
+ frames; use `match_offset` / `match_limit` for later pages, or explicit null
135
+ limit for complete matching output. Preserve the source digest across pages.
136
+ This does not perform live capture.
137
+ For address/DNS/SNI/protocol summaries use `inspect_pcap_capture` with MCP
138
+ detail summary, then retained kind pcap pages. Requires Wireshark 4.x tshark
139
+ and capinfos, with Linux prlimit or Windows Job Objects; see
140
+ [packet summaries](https://github.com/morluto/rea/blob/main/docs/pcap-analysis.md).
141
+ Select an exact DNS question for address pages; page exhaustion does not prove
142
+ network completeness. This reads recordings and does not acquire traffic.
143
+ - Decoder discovery: `inspect_signal_decoders` searches installed decoder IDs
144
+ or selected decoder help, including channels and options. Query and page the
145
+ relevant details before choosing settings; this does not scan hardware.
146
+ - Recorded logic/signal traces: `decode_signal_recording` with explicit decoder,
147
+ channel and protocol settings. On Linux with util-linux prlimit, supply sigrok-cli 0.7.2 through
148
+ `REA_SIGROK_COMMAND`; see [recording guide](https://github.com/morluto/rea/blob/main/docs/signal-recordings.md).
149
+ Output defaults to 50 literal lines; select annotation classes and page with
150
+ `line_offset` / `line_limit`, or explicit null for all remaining output.
151
+ Window counts are display lines, not annotations or samples. Preserve source digests across pages.
152
+ This reads existing files; it does not acquire hardware signals.
153
+ - Explicit local WebAssembly artifact: `inspect_wasm_artifact`. Supply WABT 1.0.42
154
+ through `REA_WABT_BIN_DIRECTORY`; retain exact byte/tool identity and decoded WAT.
155
+ Select JavaScript glue and candidate paths explicitly and preserve URL/path
156
+ ambiguity. No implicit fetch or target execution; WAT is not original source.
157
+ See the [WASM guide](https://github.com/morluto/rea/blob/main/docs/wasm-artifacts.md).
158
+ - Explicit local EVM bytecode carrier: `inspect_evm_interface` with caller-selected
159
+ `raw` or `hex` encoding. Preserve carrier/decoded digests and treat selectors,
160
+ argument strings and mutability as inferred candidates; this performs no chain
161
+ lookup or target execution. For the complete inferred interface without hex or
162
+ duplicate stdout, discover support and select `detail: "summary"`; complete
163
+ Evidence stays retained under its original identity. Use the returned
164
+ `parent_evidence_id` for exact function or `bytecode_hex`/stdout/stderr pages.
165
+ Candidate coverage does not establish interface completeness. See the
166
+ [EVM bytecode guide](https://github.com/morluto/rea/blob/main/docs/evm-bytecode.md).
167
+ - Embedded Go compiler, module or build-setting metadata: `inspect_go_binary`
168
+ with the explicit local file. This built-in target-free inspection requires no
169
+ Go installation or disassembler. Preserve raw module bytes and source ranges;
170
+ absent metadata does not prove a binary is not Go, and unparsed text records
171
+ remain explicit. See the
172
+ [Go binary guide](https://github.com/morluto/rea/blob/main/docs/go-binaries.md).
173
+ - Embedded cargo-auditable Rust dependency metadata: `inspect_rust_binary`
174
+ with the explicit local ELF, PE, or thin Mach-O file. This built-in
175
+ target-free inspection requires no Rust installation or disassembler. Preserve
176
+ package order, dependency indices, and the section file range. A missing
177
+ `.dep-v0` section is null metadata, not proof the binary has no dependencies.
178
+ A rustc commit hash is an inference from a read-only `/rustc/<40-hex>/` path.
179
+ See the
180
+ [Rust binary guide](https://github.com/morluto/rea/blob/main/docs/rust-binaries.md).
181
+
182
+ - Explicit local SQLite database snapshot: `inspect_sqlite_database`. Inspect
183
+ with Node.js 24.x >=24.15 or 26+ providing native SQLite limits. Read schema
184
+ first (compact inventory by default), or select an exact ordinary table
185
+ and `columns` when rows are needed. Defaults are selected-table schema and
186
+ 20 rows; request `schema_scope: "database"` for the complete stored schema. Preserve both database and existing sibling WAL identity; row samples
187
+ report truncation and have unspecified order. Use a quiescent snapshot rather
188
+ than assuming a live database/WAL pair was copied atomically. See the
189
+ [SQLite guide](https://github.com/morluto/rea/blob/main/docs/sqlite-databases.md).
190
+ - Explicit Linux ELF file for offline layout, symbols, relocations or static
191
+ mitigation evidence: `inspect_binary_layout`. This target-free operation uses
192
+ caller-supplied pwntools without opening a disassembler database. Preserve its
193
+ raw locations and inference/coverage limits; see the
194
+ [offline binary guide](https://github.com/morluto/rea/blob/main/docs/binary-diagnostics.md).
195
+ - Supplied Linux x86-64 ELF core: `inspect_recorded_crash`. Read every recorded
196
+ thread, raw note and source-bound register without opening a live target.
197
+ Historical PIDs do not select live processes. Request `include_debugger_context`
198
+ only when core-only mapping candidates help; see the
199
+ [recorded crash guide](https://github.com/morluto/rea/blob/main/docs/recorded-crashes.md).
200
+ - PE resource type/name/language trees and static icon group references:
201
+ `inspect_pe_resources` with an explicit path. This portable operation requires
202
+ no active target or engine; opaque payloads retain file ranges and SHA-256.
203
+ - Native executable, library, or analysis database: `open_binary`, then
204
+ use focused analysis tools directly; call `binary_overview` when metadata or
205
+ inventory context is useful and available from the selected provider.
206
+
207
+ For an existing IDA MCP configuration, use `open_binary` with the original
208
+ input binary and `provider_id: "ida"`; do not pass an `.idb` or `.i64` database.
209
+ The legacy attached profile binds the already-open GUI input by SHA-256 and
210
+ leaves its database open. The modern headless profile creates and closes an
211
+ owned private database without saving. Installation and registration reuse
212
+ [mrexodia/ida-pro-mcp](https://github.com/mrexodia/ida-pro-mcp); see the
213
+ [IDA provider guide](https://github.com/morluto/rea/blob/main/docs/ida-provider.md).
214
+ Proceed directly to `analyze_function`, pseudocode, or function/string searches
215
+ after opening; IDA does not supply `binary_overview`. Consult session availability
216
+ when composing broader workflows. Modern direct callers and unsupported dossier
217
+ facets remain unknown; live IDA results are not replayed from snapshots.
218
+
219
+ With `REA_KUNA_COMMAND` configured, `provider_id: "kuna"` answers procedure
220
+ lists, lookups, pseudocode, assembly and `analyze_function` from Kuna's cached
221
+ whole-program export. Callers/callees use a separate body-free graph shared by
222
+ the session; `xrefs` returns exact-address incoming sites and filters forwarding
223
+ aliases. These queries and inventory lookups do not trigger a C export. Indirect
224
+ targets remain unknown and can make relationship coverage partial. Reference
225
+ caches expire on close; a fresh CLI process repeats the native reference walk.
226
+ Typed references, CFG, raw-memory tools and annotations remain unsupported. A cold first
227
+ answer can come from a single-function run (its limitations say so); assembly
228
+ waits for the export. For pseudocode and assembly, `raw_result.source` names the
229
+ cached `.c`/`.asm` file and byte span, which you may search directly instead of
230
+ calling per function. See the
231
+ [Kuna provider guide](https://github.com/morluto/rea/blob/main/docs/kuna-provider.md).
232
+
233
+ If the user says only "my app" without a name, path, or target already selected
234
+ for this task, ask which app before searching for artifacts. Paths in unrelated
235
+ saved reports and nearby test fixtures do not select the user's target. Resolve
236
+ an actual human-readable app name to one clear installed artifact when possible;
237
+ ask when matches are ambiguous. Never choose an example app on the user's behalf.
238
+
239
+ In a target-free session, use `open_binary` to bind any archive/package or
240
+ native target whose analysis tool operates on the active target. Do not call an
241
+ unadvertised tool; inspect `binary_session` with `{}` and its
242
+ `result.tool_availability` for availability reasons and remediation. Expand each
243
+ group's `names` into entries, inheriting the inventory-level client requirements
244
+ unless the group overrides them. In its closed effect and annotation vocabularies,
245
+ listed flags are true and omitted known flags are false. The grouped name union
246
+ is the complete tool inventory; use `tools/list` for canonical tool schemas.
247
+ Provider candidate facts describe possible providers, while top-level session
248
+ capabilities describe the current route and `analysis_provider_binding` names the
249
+ selected provider. Do not treat those scopes as interchangeable.
250
+
251
+ ## Work summary-first
252
+
253
+ Start with the default result and use its inline Evidence and graph context.
254
+ For a JavaScript application or ELF layout whose size is unknown or large,
255
+ call `analyze_javascript_application` or `inspect_binary_layout` with
256
+ `"detail": "summary"`, then inspect the retained `parent_evidence_id` with
257
+ `inspect_analysis_view`.
258
+ Page module identities and select the returned `node_id` before requesting an
259
+ item; a single file path can represent several graph roles. Do not repeat an
260
+ identical analysis or rejected call without a changed input or resolved blocker.
261
+ Recheck session state when a lifecycle change makes that status useful.
262
+ Make a focused follow-up only when the
263
+ returned result leaves a specific question unanswered.
264
+
265
+ If MCP reports `resource_constraint` with `details.resource: "transport"`, call
266
+ `inspect_analysis_view` with its reported same-session Evidence reference for a
267
+ summary, one section/module, or a stable page. Use `trace_application_feature`
268
+ once a seed is known, or call `export_evidence_bundle` to write the complete
269
+ session to a selected path. The analysis remains complete in the ledger; avoid
270
+ repeating it merely to request the same oversized response. Complete CLI JSON
271
+ output also streams without a single MCP frame.
272
+
273
+ When the retained parent ID is unknown, use `get_evidence_bundle` with
274
+ `detail: "summary"` and exact filters for operation, target SHA-256,
275
+ analysis-profile digest or canonical procedure address. Select its returned
276
+ Evidence ID for the next view instead of requesting the complete bundle.
277
+ `retention: "complete-record"` means the whole record is stored; native
278
+ value-flow truncation and unknown metadata remain separate. For an exported
279
+ portable bundle, use `rea inspect-evidence-bundle` with JSON containing `path`,
280
+ `detail: "summary"` and the same `filters`. Reading that file still requires
281
+ validating its full contents within the local memory budget.
282
+
283
+ A client can also truncate a successful tool result without a REA transport
284
+ error. Treat that preview as incomplete; use the retained parent ID for smaller
285
+ views or export when the full record is needed. Do not parse the preview as
286
+ canonical JSON or repeat the producer. For JavaScript, read the
287
+ [module-view and trace recipes](references/javascript-applications.md) before
288
+ drilling into a large graph; a broad bidirectional trace can expand unrelated
289
+ containment relationships even after summary analysis.
290
+
291
+ Every conclusion must distinguish observations, inferences, and unknowns. Cite
292
+ Evidence IDs, preserve limitations and incomplete coverage, and never imply
293
+ that static analysis observed execution. Runtime requests execute the declared
294
+ target and lifecycle; do not broaden the target or action beyond those fields.
295
+
296
+ Within the user's requested investigation, call available analysis tools
297
+ directly. REA does not require permission grants or per-call approval flags.
298
+ The agent client can independently require approval. Follow the declared request
299
+ scope and the host's actual access requirements; use the recovery guide for an
300
+ observed client-policy rejection.
301
+
302
+ ## Plan broader investigations
303
+
304
+ For requests that span multiple features or subsystems, use a staged workflow:
305
+
306
+ 1. Turn the request into a checklist of questions and the evidence each answer
307
+ needs. Resolve target identity and constraints from the conversation and
308
+ workspace before asking for information again.
309
+ 2. Inspect the current REA session, artifact identity, saved analysis database,
310
+ bookmarks, and prior evidence. Reuse matching state; do not open duplicate
311
+ sessions or repeat identical analysis.
312
+ 3. Start with the smallest useful overview or inventory. Follow each question
313
+ from its entry point through relevant data and state changes to its result.
314
+ Batch related operations around a specific hypothesis, then expand only when
315
+ the returned evidence leaves a concrete gap.
316
+ 4. Inspect relevant packaged resources and configuration alongside code when
317
+ they affect the question. Use format-aware inventory and parsers; do not
318
+ infer behavior from filenames, strings, or layout alone.
319
+ 5. Corroborate a conclusion with the evidence type it requires. Use runtime
320
+ observation only when static evidence cannot answer the question and the
321
+ required host runtime and OS access are available. For JavaScript behavior,
322
+ run probes against the actual app through the available browser, Electron,
323
+ or process capture workflow.
324
+ 6. Decompose work into independent questions. When parallel workers are
325
+ available and the questions do not depend on one another, assign distinct
326
+ scopes, point workers to existing evidence, and ask them to return sources,
327
+ conclusions, and unresolved gaps. Otherwise, work sequentially.
328
+ 7. Keep a concise finding ledger linking each conclusion to Evidence IDs,
329
+ confidence/evidence type, search boundary, and remaining unknowns. Update
330
+ the shared index or investigation report so later passes can reuse results.
331
+
332
+ Before finishing, revisit the original checklist. Mark each question as
333
+ answered, partially answered, or unresolved based on its evidence; keep
334
+ bounded negative searches bounded, and do not describe a broad investigation
335
+ as complete while required questions remain open.
336
+
337
+ ## Read only the relevant guide
338
+
339
+ - Native binaries, managed assemblies, archives, and extraction:
340
+ [references/native-and-artifacts.md](references/native-and-artifacts.md)
341
+ - ASARs, extracted JavaScript, feature tracing, and version comparison:
342
+ [references/javascript-applications.md](references/javascript-applications.md)
343
+ - Android APK declarations, classes, methods, and static references:
344
+ [references/android-applications.md](references/android-applications.md)
345
+ - Browser/Electron observation (passive and scenario) and static/runtime
346
+ reconciliation:
347
+ [references/runtime-observation.md](references/runtime-observation.md)
348
+ - Evidence paging, comparisons, residual unknowns, and verification:
349
+ [references/evidence-workflows.md](references/evidence-workflows.md)
350
+
351
+ ## Finish the task
352
+
353
+ Explain findings in plain language and tie them to returned evidence. When the
354
+ user asks to build something, use normal coding tools and separate observed
355
+ behavior from design choices. Close an opened native session with
356
+ `close_binary` when the investigation is complete.
@@ -0,0 +1,36 @@
1
+ # Android application artifacts
2
+
3
+ Use the connected server's advertised Android tools. Repository main and npm
4
+ 4.1.0 include this family. A skill installation alone cannot add it to an
5
+ older server.
6
+
7
+ Start with `inspect_android_package` on the caller's APK path for package
8
+ identity, manifest declarations, coverage, and inline Evidence. Use
9
+ `search_android_classes` to find candidates, `inspect_android_class` for one
10
+ class's members, `inspect_android_method` for decompilation, and
11
+ `trace_android_references` for incoming static references. Each call takes its
12
+ own APK path and explicit selectors; do not open a native session first.
13
+ Choose an `overload_index` from the class inventory when methods are ambiguous
14
+ instead of guessing.
15
+
16
+ The provider requires a separately supplied headless JADX MCP JAR 0.7.1 and
17
+ Java 17 or newer. `REA_JADX_MCP_JAR` selects the absolute JAR path; `JAVA_HOME`
18
+ can select Java. REA setup does not install or configure that JAR, and doctor
19
+ provider scopes cover Hopper/Ghidra rather than JADX. Use existing tools and
20
+ report missing prerequisites for the Android task specifically.
21
+
22
+ Linux and macOS use the POSIX owned-process boundary. Windows x64 requires the
23
+ matching bundled native controls and uses an owned Job Object with bidirectional
24
+ stdio. A full JDK, including `jdk.compiler`, is required on every host; Windows
25
+ `JAVA_HOME` selects `bin\java.exe`. Consult the Android guide for actual host
26
+ verification coverage. Calls use one worker and provider deadlines; optional
27
+ `REA_JADX_HEAP_MIB` selects the JVM heap and `REA_JADX_OPERATION_TIMEOUT_MS`
28
+ the per-operation deadline (default 120000 ms; the MCP client's tool timeout
29
+ must also allow it). The APK is never launched,
30
+ and no emulator is required.
31
+
32
+ Manifest entries and decompiled text are static observations, not execution or
33
+ policy enforcement. Incoming references are recovered static relationships;
34
+ reflection, dynamic loading, and unresolved calls remain unknown. Preserve
35
+ artifact digests, locations, diagnostics, and incomplete coverage. For archive
36
+ members rather than code analysis, use `open_binary` and `inspect_artifact`.