Reflection-based runtime for annotation-driven ACP agents