-
Notifications
You must be signed in to change notification settings - Fork 303
feat: custom ID generators #490
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Summary of ChangesHello @lkawka, 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 improves the extensibility of the system by decoupling ID generation logic from core components. It introduces a pluggable architecture for creating unique identifiers, allowing server maintainers to define and inject their own ID generation strategies. This change moves away from hardcoded UUID generation, providing greater control and adaptability for how various system objects are identified. Highlights
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this 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 flexible way to use custom ID generators for various system-created objects, which is a great feature for extensibility. The implementation is clean, with a new IDGenerator abstract class and a default UUIDGenerator. The changes are well-integrated into ResourceContext and TaskUpdater, and they are accompanied by good test coverage. I have a couple of minor suggestions to improve code consistency and clarity.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…s' into custom-id-generators
Pyright error: Method "generate" overrides class "IDGenerator" in an incompatible manner Parameter 2 name mismatch: base parameter is named "context", override parameter is named "_context" (reportIncompatibleMethodOverride)
Description
This PR introduces a new feature allowing server maintainers to provide custom ID generators for system-created objects.
I identified 2 key areas requiring ID generation:
ResourceContext: Manages the creation of new task and context IDs when not supplied by the client.TaskUpdater: Helper responsible for generating IDs for new artifacts and messages during task updates.To address this, a new abstract class,
IDGenerator, has been introduced. This class enables the creation of specific ID generators for different resource types, which can then be integrated into the relevant SDK components.Alternative approaches were considered:
IDGeneratorinstance for all resource types, with resource type information passed to the generate method. This option was discarded due to potential coupling issues and increased maintenance complexity.IDGeneratorRegistryto manage per-resource-type generators via aget_id_generator(resource_type)method. While this would simplify object passing, it introduces additional indirection and overall system complexity.BEGIN_COMMIT_OVERRIDE
feat: custom ID generators
Release-As: 0.3.9
END_COMMIT_OVERRIDE
Fixes #378 🦕