feat: Add @RequiresConsent annotation for tool execution consent mana… #3848
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.
Summary
Details
This PR addresses issue #3813 by introducing a declarative way to require user consent before executing potentially sensitive tool operations. The implementation follows Spring AI's existing patterns and integrates seamlessly with the current tool calling mechanism.
Key Features:
Implementation:
@RequiresConsent
: Main annotation for marking tools requiring consentConsentManager
: Strategy interface for handling consent requestsConsentAwareToolCallback
: Decorator pattern for enforcing consentDefaultConsentManager
: Reference implementation with in-memory storageConsentDeniedException
: Proper error handling when consent is deniedExample Usage:
Test Plan
Breaking Changes
None - this is a purely additive feature that doesn't affect existing functionality.
Future Enhancements
Fixes #3813