Skip to content

aperv-tool: register LLM variants and generate ape.properties with LLM config keys #41

@phtcosta

Description

@phtcosta

Problem Statement

The APE-RV Java side (phtcosta/ape#6, gh6-aperv-llm-integration) adds LLM integration to the exploration loop: 7 infrastructure classes, ApePromptBuilder, LlmRouter with 2 modes (new-state + stagnation), and 9 config keys with ape. prefix in Config.java. The rv-android aperv-tool needs to register the new LLM variants and generate the correct ape.properties with these config keys.

Affected Domains

  • Tools (aperv-tool)

Scope

  • Register 2 new variants: sata_llm (LLM without MOP) and sata_mop_llm (hybrid MOP+LLM)
  • Generate ape.properties with all 9 LLM config keys when variant uses LLM
  • Add APERV_LLM_BASE_URL env var override (following rvsmart-tool pattern)
  • Unit tests for new variants, configure override, and properties generation

Track

Quick Path — no design decisions needed. All design was done in phtcosta/ape#6. This is mechanical wiring of Python config → Java properties.

Dependencies

Acceptance Criteria

  • ApeRVTool.get_variants() returns 7 variants (5 existing + 2 new LLM variants)
  • sata_llm variant config includes llm_url but no mop_data
  • sata_mop_llm variant config includes both llm_url and mop_data
  • configure() applies APERV_LLM_BASE_URL env var override when llm_url is in config
  • _push_properties() writes all 9 ape.llm* keys when llm_url is present
  • _push_properties() does NOT write ape.llm* keys for non-LLM variants
  • All existing tests pass (no regression)
  • New tests cover: LLM variant structure, env var override, properties content

References

  • Ideation doc: docs/20260317_aperv_llm_rvandroid.md
  • APE gh6 design: phtcosta/ape/openspec/changes/gh6-aperv-llm-integration/design.md
  • rvsmart-tool pattern: modules/rvsmart-tool/src/rvsmart_tool/tools/rvsmart/tool.py

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions