feat: provider and model registry, OpenAI-compatible adapter, discovery and health (P-a) #22

Merged
KofTwentyTwo merged 3 commits from feature/p1-provider-registry into develop 2026-10-13 22:59:53 +00:00
3 Commits
Author SHA1 Message Date
james.maesandClaude Opus 5.5 311c37c23d fix(openai): a transport error at the deadline is a TIMEOUT, not a race with the guard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:47:24 -05:00
james.maesandClaude Opus 5.5 a7be39db0f feat: readable labels for the provider registry; P-a demo server and screenshots
- Kind, source and field labels (HIPAA-eligible, API version, prices
  per million tokens, timeouts) instead of raw ids.
- Test-only OpenAiDemoServer: a mock OpenAI-compatible host, real
  Discover models / Test connection runs and one turn.
- Screenshots of the home providers card, a local provider, its Models
  child list and a model, light and dark at 390 and 1440 px.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:33:43 -05:00
james.maesandClaude Opus 5.5 8d869f65cd feat: provider and model registry, OpenAI-compatible adapter, discovery and health (P-a)
- assistant_provider gains kind, location, hipaa_eligible, region, api
  version, timeouts, a CA bundle reference and discovery status.
- New assistant_model table (child list on the provider): capabilities,
  prices per million tokens, enabled flag, last test.
- Provider SPI: ProviderSettings, kinds, discovery and health as default
  methods; create(apiKey, baseUrl) implementations keep working.
- New module qbit-assistant-provider-openai: OpenAI, Azure OpenAI,
  OpenRouter, Ollama, LM Studio, vLLM and llama.cpp over JDK HTTP, with
  streaming, tool calls, usage, timeouts, cancel, strict only where
  supported (and the existing fallback on refusal), keyless local
  endpoints and per-provider private CA trust.
- Record actions: Discover models (provider), Test connection (model);
  provider Test connection checks health first.
- Mock-server contract tests, a golden tool round trip, TLS tests and a
  config-driven live check (skipped unless configured).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:17:39 -05:00