add interactive microservice-selection checklist to install wizard#312
Merged
Conversation
Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What
Implements the interactive microservice-selection checklist from
propose/completed/CLI-INSTALL-PROPOSE.mdStage 1 (Case B) — a step that was specified in the proposal but never built. Previously,java-codebase-rag installauto-selected every detected microservice with no user interaction, so a user installing into a microservice monorepo had no way to exclude services.User-visible changes
installdetects 2 or more microservices (a monorepo where cwd has no root build file but multiple subdirectories containpom.xml/build.gradle*), it now shows an interactive checklist (questionary.checkbox) with all services pre-checked. Toggle off the ones to exclude (Space), confirm with Enter:microservice_rootsis omitted from.java-codebase-rag.yml(the indexer walks the entire tree — equivalent to accepting the default).microservice_roots.installinto an existing config, choosing Update), the previously-selectedmicroservice_rootssubset is pre-checked, so the user can adjust rather than start over.Behavior change to note
In non-interactive mode (
--non-interactiveor piped stdin), a multi-service install previously wrote an explicit fullmicroservice_rootslist to the YAML; it now omits the key entirely. Both index everything — the new behavior just matches the proposal's "accept default → omitted" rule and produces cleaner YAML. No test asserted the old shape.Scope / impact
--microserviceflag added — non-interactive keeps the "index all" default per the proposal's non-interactive section.Tests
TestSelectMicroservices(7 tests): non-interactive →None; non-TTY →None(default=all); subset selection; all-selected →None; empty + decline → exit 2; re-runpreselectedmarks the rightcheckedchoices; single dir →None.tests/test_installer.py: 73 passed. Full suite: 760 passed, 11 skipped.ruff checkclean.Manual verification (interactive TTY — can't run under CI)
In a real terminal from a multi-service fixture dir (
service-a/pom.xml,service-b/pom.xml,service-c/pom.xml, no root build file):.java-codebase-rag.ymllists only the selected subset undermicroservice_roots.install, choose Update → the previously-unchecked service starts unchecked.Non-interactive end-to-end (proves the wiring):
java-codebase-rag install --non-interactive --agent claude-code→.java-codebase-rag.ymlhas nomicroservice_rootskey.Implements
propose/completed/CLI-INSTALL-PROPOSE.mdStage 1 (Case B).🤖 Generated with Claude Code