dbd556043c
fix(providers): name JEB, IDA, and one-shot command deadlines ( #6014 )
...
* fix(providers): name JEB, IDA, and one-shot command deadlines
Wire JEB catalog discovery to REA_JEB_MCP_TIMEOUT_MS, name the IDA
registration timeoutMs, and add command_timeout_ms for one-shot objdump
and rizin. Debugger, Frida, and Cutter caps stay fixed and say so.
Refs #5910
Co-authored-by: morluto <morluto@users.noreply.github.com >
* fix(providers): pass remaining deadlines and name the cap that fired
Catalog discovery now sends the JEB budget still remaining to the SDK on
connect and every tools/list page. Objdump and rizin preflight share one
command_timeout_ms across stat and digest; the command still receives that
budget again. Architecture Evidence keeps a selected timeout, and Frida and
Rizin name the capture limit that actually stopped output.
Co-authored-by: morluto <morluto@users.noreply.github.com >
* fix(frida): preserve non-timeout device lookup failures
getDeviceById is a lookup deadline only when Frida rejects with
"Device not found" after the wait. A device-manager or backend failure
stays a capability error. Align the assertions that still expected the
previous capacity and capture sentences.
Co-authored-by: morluto <morluto@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: morluto <morluto@users.noreply.github.com >
2026-10-22 04:01:02 +08:00
4aa51bfe19
fix(reverse): reconcile cleanup ownership and mutation diagnostics ( #2799 )
...
* feat(process): add owned debugger shutdown lifecycle
* feat(reverse): add local inspection commands
* feat(gdb): add persistent debugger integration
* feat(cutter): add Cutter bridge integration
* test(reverse): enforce complete integration coverage
* fix(process): preserve debugger shutdown ownership
* fix(reverse): retain evidence across interrupted commands
* fix(gdb): honor captured provider environment
* test(process): cover debugger shutdown retries
* fix(reverse): retain evidence for interrupted providers
* test(process): cover debugger shutdown retries
* fix(reverse): retain evidence for interrupted providers
* fix(server): snapshot provider environment at creation
* fix(reverse): close review gaps with complete coverage
* fix(reverse): address inspection review findings
* fix(gdb): bound sessions and retain cleanup ownership
* fix(ci): require reverse-tools quality lane
* fix(process): unref inherited debugger output pipes
* fix(reverse): address remaining PR 1960 findings
* fix(gdb): address remaining PR 1961 findings
* fix(reverse): account for unrestricted provider execution
* fix(process): retain debugger ownership until safe shutdown
* fix(process): preserve replacement debugger sessions
* fix(reverse): preserve admission and output provenance
* fix(process): retain exited debugger until output settles
* fix(mcp): bound provider admission and debugger cleanup
* fix(reverse): preserve failure provenance and classify E2BIG
* fix(gdb): preserve startup cleanup and detach safety
* fix(process): retain debugger ownership after detach failure
* fix(reverse): preserve mutation and failure provenance
* fix(gdb): address debugger review findings
* fix(reverse): rebind sessions after external mutation
* fix(process): cap debugger output after exit
* fix(gdb): protect one-shot detach verification
* feat(debugger): add reverse tool coverage gate
* test(debugger): cover integrated failure paths
* fix(gdb): bound and preserve session observations
* fix(gdb): address review regressions
* style: format merged integration files
* fix(reverse): preserve session and output evidence
* refactor(gdb): share repeated test and partial result setup
* fix(gdb): invalidate TTY proof for Python aliases
* fix(reverse): retain failure output byte counts
* test(process): synchronize late debugger output
* fix(gdb): invalidate TTY proof for wrapped commands
* fix(gdb): recognize wit command abbreviation
* test(reverse): wait for cancelled descendant readiness
* test(reverse): bound descendant cancellation cleanup
* style(reverse): format integration tests and adapters
* style: format reverse engineering integration files
* test(reverse): remove duplicate environment harness
* test(gdb): share session startup assertions
* fix(gdb): invalidate output proof for command abbreviations
* test(reverse): share composition edge case scenarios
* fix(ci): recognize verification and mutation tool entries
* test(rizin): cover successful fake inferior detach
* test(cli): align full output failure envelope
* test(cli): isolate reverse command lifecycle service
* test(process): share debugger output fixture setup
* fix(binary): preserve high-bit Windows signature bytes
* style(binary): format Windows signature parser
* test(mcp): preserve call coverage in unchanged comparison
* fix(ci): include reverse tools Vitest configs in lint cache
* fix(mcp): preserve target content on delivery errors
* ci: align duplication ceiling with expanded suite
* test(reverse): allow signal admission mutants
* fix(reverse): bound retained cleanup failures to process owners
* fix(test): replace drifting mutation ranges with owned selectors
* fix(reverse): admit persistent commands and retain cleanup ownership
* fix(cutter): recover timed-out commands from exact receipts
* fix(cutter): reject unsupported bridge request kinds
* fix(ci): repair client format and shared verification fixtures
* fix(native): preserve debugger cleanup ownership and bridge authentication
* test(native): retain diagnostics without perfect coverage requirements
* chore(licenses): refresh locked dependency inventory and notices
* fix(test): exclude transient command locks from mutation sandboxes
* fix(gdb): admit only platforms with safe detach verification
* fix(cutter): retain bounded completion receipts until acknowledgement
* fix(cutter): acknowledge commands rejected before UI dispatch
* test(reverse): fail cancellation checks before fixture teardown
* test(gdb): clean up the retained broken-stdin fixture owner
* docs(test): clarify focused provider verification scope
* fix(rizin): retain close cleanup failures
* fix(gdb): wait for inferior stop and bound MI buffering
* fix(cutter): retain failed receipt acknowledgements
* fix(rizin): return retained session identity on rebind failure
* fix(gdb): preserve startup cancellation and lossy status
* fix(rizin): retain launch provenance and assemble frames once
* fix(cutter): recover receipts across callers and bound discovery
* docs: describe debugger evidence and bridge recovery
* fix(process): keep cleanup incomplete while writers remain
Stopping a debugger no longer reports success when inherited output
streams stay open, so BinarySession cannot reopen a binary a child is
still changing. Concurrent Cutter cleanup retries share one receipt
acknowledgement instead of treating a consumed receipt as failure.
* fix(debuggers): recover cleanup with captured process identities
* fix(analysis): retire sessions after unrestricted commands
* fix(cli): preserve completed evidence after cleanup recovery
* fix(cutter): bound frame collection and coalesce cleanup
* fix(windows): resolve selected provider paths absolutely
* fix(gdb): report decoding loss in failed startup evidence
* fix(rizin): scope decoding loss to collected command frames
* test(mcp): cover snapshot retirement in reverse tools CI
---------
Co-authored-by: Daniel Gonçalves Araujo <47118053+dandgabr@users.noreply.github.com >
Co-authored-by: REA Maintainers <noreply@github.com >
Co-authored-by: OpenAI Codex <codex@users.noreply.github.com >
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
2026-10-14 04:47:34 +08:00