feat(agent): add lmstudio integration

This commit is contained in:
Rugved Somwanshi 2026-04-25 12:30:55 -04:00 committed by kshitij
parent 7d4648461a
commit 214ca943ac
26 changed files with 1137 additions and 40 deletions

View file

@ -145,6 +145,7 @@ class TestProviderRegistry:
PROVIDER_ENV_VARS = (
"OPENROUTER_API_KEY", "OPENAI_API_KEY", "ANTHROPIC_API_KEY", "ANTHROPIC_TOKEN",
"CLAUDE_CODE_OAUTH_TOKEN",
"LM_API_KEY", "LM_BASE_URL",
"GLM_API_KEY", "ZAI_API_KEY", "Z_AI_API_KEY",
"KIMI_API_KEY", "KIMI_BASE_URL", "STEPFUN_API_KEY", "STEPFUN_BASE_URL",
"MINIMAX_API_KEY", "MINIMAX_CN_API_KEY",
@ -428,6 +429,29 @@ class TestResolveApiKeyProviderCredentials:
assert creds["base_url"] == "https://api.githubcopilot.com"
assert creds["source"] == "gh auth token"
def test_resolve_lmstudio_uses_token_and_base_url_from_env(self, monkeypatch):
monkeypatch.setenv("LM_API_KEY", "lm-token")
monkeypatch.setenv("LM_BASE_URL", "http://lmstudio.remote:4321/v1")
creds = resolve_api_key_provider_credentials("lmstudio")
assert creds["provider"] == "lmstudio"
assert creds["api_key"] == "lm-token"
assert creds["base_url"] == "http://lmstudio.remote:4321/v1"
def test_resolve_lmstudio_no_api_key_substitutes_placeholder(self, monkeypatch):
# No-auth LM Studio: when LM_API_KEY isn't set, runtime credentials
# carry a placeholder so gateway/TUI/cron paths see the local server
# as configured. get_api_key_provider_status still reports unconfigured.
monkeypatch.delenv("LM_API_KEY", raising=False)
monkeypatch.delenv("LM_BASE_URL", raising=False)
creds = resolve_api_key_provider_credentials("lmstudio")
assert creds["provider"] == "lmstudio"
assert creds["api_key"] == "dummy-lm-api-key"
assert creds["base_url"] == "http://127.0.0.1:1234/v1"
def test_try_gh_cli_token_uses_homebrew_path_when_not_on_path(self, monkeypatch):
monkeypatch.setattr("hermes_cli.copilot_auth.shutil.which", lambda command: None)
monkeypatch.setattr(