Skip to content

CLIENT role should include message producer classes, not just HTTP clients #253

@HumanBean17

Description

@HumanBean17

Problem

The CLIENT role is currently only assigned to types annotated @FeignClient (ast_java.py:102). Classes that inject messaging templates (KafkaTemplate, RabbitTemplate, JmsTemplate, StreamBridge, ApplicationEventPublisher) get the MESSAGE_PRODUCER capability but no meaningful role — they fall through to OTHER.

This is wrong: a class whose job is to produce messages to Kafka/RabbitMQ is genuinely a client of another service, same as a Feign HTTP client. The CLIENT role should cover both HTTP and async outbound call wrappers.

Current behavior

@FeignClient  → role: CLIENT, capability: HTTP_CLIENT
KafkaTemplate injection → role: OTHER, capability: MESSAGE_PRODUCER

Expected behavior

@FeignClient  → role: CLIENT, capability: HTTP_CLIENT
KafkaTemplate injection → role: CLIENT, capability: MESSAGE_PRODUCER

Scope

  • Role inference in ast_java.py (likely _INJECTED_TYPES_TO_CAPABILITY or infer_role_for_type)
  • Ontology glossary in docs/AGENT-GUIDE.md, skills/explore-codebase/SKILL.md, agents/java-codebase-rag.md
  • VALID_ROLES documentation in docs/CONFIGURATION.md
  • Likely ontology bump (re-index required)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions