Skip to content

refactor(ethexe-sdk): extend events API, use ActorId everywhere#5123

Merged
StackOverflowExcept1on merged 2 commits intomasterfrom
av/ethexe-sdk-events-api
Feb 6, 2026
Merged

refactor(ethexe-sdk): extend events API, use ActorId everywhere#5123
StackOverflowExcept1on merged 2 commits intomasterfrom
av/ethexe-sdk-events-api

Conversation

@StackOverflowExcept1on
Copy link
Copy Markdown
Member

@StackOverflowExcept1on StackOverflowExcept1on commented Jan 31, 2026

not to master branch because there will be conflicts in future

Changes:

  • events().all() on WVara, Router, Mirror (can be used in node-loader?)
  • use ActorId everywhere
  • added Requested* events to Mirror
  • indexing by ReplyCode works fine
  • fixed this discussion

@semanticdiff-com
Copy link
Copy Markdown

semanticdiff-com Bot commented Jan 31, 2026

Review changes with  SemanticDiff

Changed Files
File Status
  ethexe/processor/src/lib.rs  94% smaller
  ethexe/processor/src/handling/events.rs  66% smaller
  ethexe/processor/src/tests.rs  66% smaller
  ethexe/common/src/events/mirror.rs  41% smaller
  ethexe/common/src/events/router.rs  39% smaller
  ethexe/service/src/tests/utils/env.rs  37% smaller
  ethexe/ethereum/src/router/mod.rs  27% smaller
  ethexe/ethereum/src/wvara/mod.rs  24% smaller
  ethexe/ethereum/src/mirror/mod.rs  21% smaller
  ethexe/service/src/tests/mod.rs  8% smaller
  ethexe/sdk/src/mirror.rs  2% smaller
  ethexe/cli/src/commands/tx.rs Unsupported file format
  ethexe/ethereum/src/lib.rs Unsupported file format
  ethexe/ethereum/src/mirror/events.rs Unsupported file format
  ethexe/ethereum/src/router/events.rs Unsupported file format
  ethexe/ethereum/src/wvara/events.rs Unsupported file format
  ethexe/sdk/src/wvara.rs  0% smaller
  ethexe/service/src/lib.rs Unsupported file format

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @StackOverflowExcept1on, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly refactors the ethexe-sdk to enhance consistency and usability. It primarily focuses on standardizing actor identification by migrating from Address to ActorId throughout the codebase. Additionally, the events API has been expanded with new subscription builders, and event data structures have been streamlined for cleaner handling. These changes aim to create a more robust and developer-friendly framework for interacting with the system's events and actors.

Highlights

  • Standardized Actor Identification: The pull request consistently replaces Address with ActorId across various structs, function signatures, and method calls throughout the ethexe-sdk and related components. This ensures a unified representation for all actors within the system.
  • Extended Events API: New event builders, such as AllEventsBuilder, MessageQueueingRequestedEventBuilder, and others, have been introduced for Mirror, Router, and WVara events. These builders provide enhanced capabilities for subscribing to and filtering specific events, improving the developer experience for event-driven logic.
  • Refactored Event Enums: The RequestEvent enums in ethexe_common have been refactored to directly wrap their corresponding event structs. This change simplifies event handling by reducing boilerplate and making the event data structures more intuitive.
  • Conditional Serialization: Serialization and deserialization traits (serde::Serialize, serde::Deserialize) are now conditionally derived for several event structs using #[cfg_attr(feature = "std", ...)]. This allows for flexible serialization support depending on the compilation environment.
  • Processor Event Handling Updates: The event handling logic within the ethexe-processor has been updated to align with the refactored RequestEvent enums and the new struct-wrapping approach for event data, ensuring compatibility and correct processing of events.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant and beneficial refactoring by consistently using ActorId instead of Address across various parts of the codebase, which improves type safety and clarity. It also extends the events API by adding serde support to more event structs, refactoring RequestEvent enums for better maintainability, and introducing new event builders, including a convenient AllEventsBuilder for subscribing to multiple events at once. While the changes are mostly positive, I've found a critical compilation error due to invalid use<> syntax in the return type of several new subscribe functions. This appears to be a copy-paste artifact and needs to be fixed for the code to compile.

Comment thread ethexe/ethereum/src/mirror/events.rs
Comment thread ethexe/ethereum/src/router/events.rs
Comment thread ethexe/ethereum/src/wvara/events.rs
@StackOverflowExcept1on StackOverflowExcept1on changed the title feat(ethexe-sdk): extend events API, use ActorId everywhere refactor(ethexe-sdk): extend events API, use ActorId everywhere Jan 31, 2026
Comment thread ethexe/ethereum/src/mirror/events.rs
Base automatically changed from gsobol/ethexe/processor to master February 5, 2026 05:41
Comment thread ethexe/cli/src/commands/tx.rs
Comment thread ethexe/ethereum/src/mirror/events.rs
Comment thread ethexe/ethereum/src/mirror/events.rs
Comment thread ethexe/ethereum/src/mirror/events.rs
Comment thread ethexe/ethereum/src/mirror/mod.rs
@StackOverflowExcept1on StackOverflowExcept1on merged commit e4c8fd9 into master Feb 6, 2026
63 of 64 checks passed
@StackOverflowExcept1on StackOverflowExcept1on deleted the av/ethexe-sdk-events-api branch February 6, 2026 09:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants