Skip to content

feat(llm): formal adapter registry for LLM backends (#1403)#1438

Merged
mrveiss merged 2 commits intoDev_new_guifrom
feat/1403-adapter-registry
Mar 7, 2026
Merged

feat(llm): formal adapter registry for LLM backends (#1403)#1438
mrveiss merged 2 commits intoDev_new_guifrom
feat/1403-adapter-registry

Conversation

@mrveiss
Copy link
Copy Markdown
Owner

@mrveiss mrveiss commented Mar 7, 2026

Summary

  • AdapterBase ABC defining standard interface: execute(), test_environment(), list_models(), optional session_codec
  • AdapterRegistry singleton with register/lookup, fallback chains, and per-agent adapter overrides
  • 5 adapter implementations wrapping existing providers:
    • OllamaAdapter — wraps existing OllamaProvider
    • AIStackAdapter — wraps existing AIStackClient
    • OpenAIAdapter — wraps existing OpenAIProvider
    • AnthropicAdapter — Anthropic Claude API via SDK
    • ProcessAdapter — CLI subprocess backends (e.g. Claude Code)
  • Structured diagnostics: DiagnosticLevel (info/warn/error), DiagnosticMessage, EnvironmentTestResult
  • API endpoints at /api/adapters:
    • GET / — list all adapters
    • GET /{type}/test — environment self-diagnosis
    • GET /{type}/models — dynamic model discovery
    • GET /health — test all adapters in parallel
    • POST /agent/{id}/override — per-agent adapter config
    • DELETE /agent/{id}/override — clear per-agent override
  • ProviderType enum extended with AI_STACK and PROCESS
  • Registry auto-initialized during LLMInterface startup

Test Plan

  • GET /api/adapters returns all 5 registered adapters
  • GET /api/adapters/ollama/test returns structured diagnostics
  • GET /api/adapters/ollama/models returns available models
  • GET /api/adapters/health tests all adapters in parallel
  • POST /api/adapters/agent/test-agent/override sets per-agent config
  • Existing LLM functionality unaffected (adapters wrap, not replace)

Closes #1403

mrveiss added 2 commits March 7, 2026 20:28
PersonalitySettings fetched /autobot-api/voice/voices directly through
nginx, but the main backend rejects the SLM JWT. Added voice_proxy.py
(same pattern as personality_proxy) that forwards with X-Internal-API-Key.
Implement pluggable adapter registry with standard interface for all
LLM backends. Each adapter provides execute, test_environment,
list_models, and optional session_codec.

- AdapterBase ABC with DiagnosticLevel/Message/EnvironmentTestResult
- AdapterRegistry singleton with register/lookup/fallback/per-agent config
- OllamaAdapter wrapping existing OllamaProvider
- AIStackAdapter wrapping existing AIStackClient
- OpenAIAdapter wrapping existing OpenAIProvider
- AnthropicAdapter for Anthropic Claude API
- ProcessAdapter for CLI subprocess backends
- API endpoints: GET /api/adapters, GET /api/adapters/{type}/test,
  GET /api/adapters/{type}/models, GET /api/adapters/health,
  POST/DELETE /api/adapters/agent/{id}/override
- ProviderType enum extended with AI_STACK and PROCESS
- Registry auto-initialized during LLMInterface startup
@mrveiss mrveiss merged commit 434948c into Dev_new_gui Mar 7, 2026
2 checks passed
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

⚠️ SSOT Configuration Compliance: Violations Found

Metric Count
Total Violations 372
SSOT Violations (high priority) 287
Other Violations 85

⚠️ 287 values have SSOT config equivalents!

These should be replaced with SSOT config imports:

Python:

from src.config.ssot_config import config
# Use: config.vm.main, config.port.backend, config.backend_url

TypeScript:

import config from '@/config/ssot-config'
// Use: config.vm.main, config.port.backend, config.backendUrl

📖 See SSOT_CONFIG_GUIDE.md for documentation.

@mrveiss mrveiss deleted the feat/1403-adapter-registry branch March 7, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant