You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
State-Based Auto-Update Synchronization: The CLI now maintains a version cache (~/.debroid/update-cache.json) to track its execution state. Upon detecting a binary update, it will automatically extract the bundled SKILL.md to ~/.debroid/skills/debroid-cli/SKILL.md and synchronously alert AI agents to re-read their symlinked instructions by returning a CLI_UPDATED JSON error.
Daemon Version Handshake: The background daemon now supports a GetVersion protocol. The CLI pings this before executing commands to detect stale daemons left running after a binary update, returning a VERSION_MISMATCH JSON error to instruct agents to safely restart the daemon via debroid stop.
Points Command: Introduce debroid points to list all active debug hooks (breakpoints, watchpoints, and exception points) for an ongoing session to maintain agent state awareness (#37, #36).
Changed
Removed debroid skill Command: The CLI command to print raw skill instructions to stdout has been removed. AI agents are now instructed via README.md to symlink their internal skills directly to the auto-extracted file (~/.debroid/skills/debroid-cli/SKILL.md), significantly reducing token bloat and maintaining synchronization.
CLI Error Codes Isolation: Removed CLI-specific error codes (e.g. VERSION_MISMATCH, CLI_UPDATED) from the core JDI ErrorCode definitions, moving them to a dedicated CliErrorCode enum within the CLI module to enforce clean architectural boundaries.
Reduced Inspection Noise: Filter static and synthetic fields by default during deep object inspection and prevent useless recursion into terminal types. This drastically reduces JSON output size (~30x reduction) to save LLM context tokens (#33, #30).
Documentation: Clarify objectId lifecycle and reuse guarantees in SKILL.md so agents know nested IDs can be reused as long as the VM is suspended (#32, #29).
Fixed
Ghost Sessions & Disconnect Leaks: Deduplicate JdiSessionManager attachments by appId to prevent duplicate JDWP socket connections. Consolidate session teardown to prevent stale requests and memory leaks after unexpected disconnects (#40, #34).
Duplicate Event Requests: Implement deduplication and upsert logic for breakpoints, exception points, and watchpoints. Trying to create an identical debug hook now safely returns the existing ID or upserts the parameters instead of spawning duplicate requests in the VM (#39, #35).
Expression Evaluation for Variables: Overhaul the set-var mutation engine to use JdiExpressionEvaluator. String variables and complex types are now evaluated as pure Java expressions (with primitive coercion) rather than relying on brittle raw string parsing (#31, #28).
Deferred Exception Breakpoints: Fix exception class filtering which previously failed if the target class wasn't yet loaded by the VM. Exceptions are now deferred until the class is prepared. Also clarified Android-specific behavior around uncaught exceptions (#27, #22).
Nested Object Inspection: Cache ObjectReference proxies globally during suspension so nested object IDs revealed via --max-depth can be successfully queried in standalone inspect calls later (#26, #21).
Early Breakpoint Registration: Mitigate an Android ART bug where breakpoints registered before the first VM resume were silently ignored. The CLI now automatically re-arms early requests upon the first resume (#25, #19).