fix: confine config-driven dynamic class loading to intended types#1356
Merged
Conversation
477e997 to
05a5e26
Compare
825813d to
ddeb907
Compare
Config-driven loaders confine every reflectively loaded class to the intended type (BaseTool, BaseToolset, BaseExampleProvider, or the caller's expectedType) before constructing it or reading a static field, so a non-intended type is never instantiated nor its static initializer run (type-confinement, not a sandbox). CompiledAgentLoader also gains source-dir confinement (adk.agents.confine-to-source-dir), keeping compiled agents within source-dir. Type confinement is on by default; source-dir confinement is off by default (with a warning) to avoid breaking existing setups, and will default on in a future release. PiperOrigin-RevId: 948941874
ddeb907 to
3967cfa
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fix: confine config-driven dynamic class loading to intended types
Config-driven loaders confine every reflectively loaded class to the intended
type (BaseTool, BaseToolset, BaseExampleProvider, or the caller's expectedType)
before constructing it or reading a static field, so a non-intended type is never
instantiated nor its static initializer run (type-confinement, not a sandbox).
CompiledAgentLoader also gains source-dir confinement
(adk.agents.confine-to-source-dir), keeping compiled agents within source-dir.
Type confinement is on by default; source-dir confinement is off by default (with
a warning) to avoid breaking existing setups, and will default on in a future
release.