Context
Six different subcommands in packages/loopover-mcp/bin/loopover-mcp.js resolve a GitHub login the
same way and, when it's missing, throw the same error pointing the user at an environment variable:
const contributorLogin = options.login ?? process.env.LOOPOVER_LOGIN ?? process.env.GITHUB_LOGIN;
if (!contributorLogin) throw new Error("Pass --login <github-login> or set LOOPOVER_LOGIN.");
This appears at the shared analyze-branch/preflight dispatch (~L1855-1856), reviewPrCli
(~L1927-1928), decisionPackCli (~L2164-2165), repoDecisionCli (~L2177-2178), and twice inside
runAgentCli for the plan and packet subcommands (~L2224-2225, ~L2243-2244) — seven call sites
in six commands total.
printHelp() (~L2543) has a dedicated Environment: block listing every environment variable the
CLI reads:
Environment:
LOOPOVER_API_URL
LOOPOVER_PROFILE
LOOPOVER_CONFIG_PATH or LOOPOVER_CONFIG_DIR
LOOPOVER_API_TOKEN, LOOPOVER_MCP_TOKEN, LOOPOVER_TOKEN, or a session from loopover-mcp login
GITHUB_TOKEN for non-interactive login bootstrap
GITTENSOR_SCORE_PREVIEW_CMD
GITTENSOR_ROOT
GITTENSOR_SCORE_PREVIEW_TIMEOUT_MS
LOOPOVER_UPLOAD_SOURCE=false
LOOPOVER_LOGIN and GITHUB_LOGIN are never mentioned, even though the runtime error message for
six different commands explicitly tells the user to set LOOPOVER_LOGIN. A user who runs
loopover-mcp --help to find out what environment variables exist has no way to discover this one
short of triggering the error first.
Requirements
- Add
LOOPOVER_LOGIN (and, since it's an accepted fallback in the same ?? chain, GITHUB_LOGIN)
to the Environment: block in printHelp(), with a one-line description matching the style of the
existing entries (e.g. LOOPOVER_LOGIN or GITHUB_LOGIN for --login on analyze-branch, preflight, review-pr, decision-pack, repo-decision, and agent plan/packet).
- No behavior change — this is a help-text-only fix. Do not alter the resolution order or the thrown
error message.
Deliverables
Test Coverage Requirements
packages/loopover-mcp/bin/loopover-mcp.js is outside this repo's Codecov coverage.include
(see vitest.config.ts's coverage.include, limited to src/**, packages/loopover-engine/src/**,
packages/loopover-miner/lib/**, and one review-enrichment file), so this change isn't Codecov-gated.
printHelp() is a process.stdout.write call with no branches; the substring assertion on
loopover-mcp --help's stdout added above is the only coverage that matters here, and it must run
through the existing test/unit/mcp-cli-*.test.ts subprocess suite (npm run test:mcp-pack/test:ci)
so a future edit can't silently drop the line again.
Expected Outcome
loopover-mcp --help documents LOOPOVER_LOGIN/GITHUB_LOGIN alongside every other environment
variable the CLI reads, so a user doesn't have to trigger a runtime error to discover it.
Links & Resources
packages/loopover-mcp/bin/loopover-mcp.js — printHelp() (~L2543), the six LOOPOVER_LOGIN ?? GITHUB_LOGIN call sites listed above.
Context
Six different subcommands in
packages/loopover-mcp/bin/loopover-mcp.jsresolve a GitHub login thesame way and, when it's missing, throw the same error pointing the user at an environment variable:
This appears at the shared
analyze-branch/preflightdispatch (~L1855-1856),reviewPrCli(~L1927-1928),
decisionPackCli(~L2164-2165),repoDecisionCli(~L2177-2178), and twice insiderunAgentClifor theplanandpacketsubcommands (~L2224-2225, ~L2243-2244) — seven call sitesin six commands total.
printHelp()(~L2543) has a dedicatedEnvironment:block listing every environment variable theCLI reads:
LOOPOVER_LOGINandGITHUB_LOGINare never mentioned, even though the runtime error message forsix different commands explicitly tells the user to set
LOOPOVER_LOGIN. A user who runsloopover-mcp --helpto find out what environment variables exist has no way to discover this oneshort of triggering the error first.
Requirements
LOOPOVER_LOGIN(and, since it's an accepted fallback in the same??chain,GITHUB_LOGIN)to the
Environment:block inprintHelp(), with a one-line description matching the style of theexisting entries (e.g.
LOOPOVER_LOGIN or GITHUB_LOGIN for --login on analyze-branch, preflight, review-pr, decision-pack, repo-decision, and agent plan/packet).error message.
Deliverables
LOOPOVER_LOGIN/GITHUB_LOGINadded toprintHelp()'sEnvironment:block inpackages/loopover-mcp/bin/loopover-mcp.js.test/unit/mcp-cli-basics.test.tsor whereverloopover-mcp --help'soutput is already asserted on) verifying the help text mentions
LOOPOVER_LOGIN, so a futureedit can't silently drop it again.
Test Coverage Requirements
packages/loopover-mcp/bin/loopover-mcp.jsis outside this repo's Codecovcoverage.include(see
vitest.config.ts'scoverage.include, limited tosrc/**,packages/loopover-engine/src/**,packages/loopover-miner/lib/**, and onereview-enrichmentfile), so this change isn't Codecov-gated.printHelp()is aprocess.stdout.writecall with no branches; the substring assertion onloopover-mcp --help's stdout added above is the only coverage that matters here, and it must runthrough the existing
test/unit/mcp-cli-*.test.tssubprocess suite (npm run test:mcp-pack/test:ci)so a future edit can't silently drop the line again.
Expected Outcome
loopover-mcp --helpdocumentsLOOPOVER_LOGIN/GITHUB_LOGINalongside every other environmentvariable the CLI reads, so a user doesn't have to trigger a runtime error to discover it.
Links & Resources
packages/loopover-mcp/bin/loopover-mcp.js—printHelp()(~L2543), the sixLOOPOVER_LOGIN ?? GITHUB_LOGINcall sites listed above.