Package com.embabel.agent.api.annotation
Annotation Provided
-
- All Implemented Interfaces:
@Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) public @interface Provided
Marks an action method parameter as being provided by the platform context rather than resolved from the blackboard.
Use this annotation to inject services, components, or other platform-managed objects into action methods. This is particularly useful in
@Stateclasses where you need access to the enclosing component or other services without making the state class non-static.Example:
@EmbabelComponent class ReservationFlow( private val bookingService: BookingService, ) { @State data class CollectDetails(val customerId: String) { @Action fun confirm( details: ReservationDetails, // From blackboard @Provided flow: ReservationFlow, // From context ): ConfirmState { return ConfirmState(flow.bookingService.reserve(details)) } } }The actual resolution is handled by a com.embabel.agent.api.annotation.support.ContextProvider implementation, which is typically provided by the runtime environment (e.g., Spring).