Skip to content

LIA

v1.19.0 Breaking

This release includes 3 breaking changes for platform teams planning a safe upgrade.

βœ“ No known CVEs patched
Read the diff β†’ Tool health β†’ What is this tool? β†’

✓ No known CVEs patched in this version

Topics

ai ai-assistant apple llm claude conversational-ai
+13 more
docker emotional-ai google healthcare-ai human-in-the-loop langchain langgraph mcp multi-agent personal-assistant self-hosted skills vision-ai

Affected surfaces

auth rbac

Summary

AI summary

Updates ✨ Highlights, πŸ“š Documentation, and πŸ› οΈ Migration across a mixed release.

Full changelog

LLM catalogue DB-source-of-truth

Iteration on top of v1.18.1 β€” admin-facing release. The chat + image LLM catalogue moves from frozen Python constants to the database as source of truth. Administrators can now declare new models and tune their full capability + pricing profile from the admin UI, with no code change, no release, and no redeploy.

πŸ“ Architectural decision: ADR-078

✨ Highlights

  • LLM catalogue lives in the database β€” Three tables replace ~750 lines of frozen Python constants: llm_models (catalogue with provider enum + 8 capability flags: max input/output tokens, tools, structured output, strict mode, streaming, vision, reasoning), llm_model_pricing refactored to FK on the catalogue (composite unique on model_id, effective_from), and image_generation_pricing gains a NOT NULL provider column.
  • 14-field admin form for Tarification LLM Texte β€” A 3-section modal (ModΓ¨le / CapacitΓ©s / Tarification) lets you declare every aspect of a new model in one shot. The Provider is a typed <Select>, every capability is a <Switch>. The form is the single entry point β€” no SQL required.
  • Live propagation across workers β€” Two singleton in-memory caches (ModelCapabilitiesCache, ImageOptionsCache) load the catalogue at boot. Every admin write triggers a Redis Pub/Sub message (ADR-063); every API worker reloads in milliseconds. The factory, agent constraints UI, image preferences dropdowns and cost tracker all see the change immediately.
  • Live propagation across the dashboard β€” A new React Context (CatalogueInvalidationProvider) emits typed events after a successful admin write. The LLM Configuration section (per-agent constraints) and the Image Generation Settings page (user preferences) refetch automatically β€” no page reload needed.
  • Reasoning-model toggle is finally honored at runtime β€” Three call sites used to silently bypass the admin's intent via a hardcoded regex (REASONING_MODELS_PATTERN). All three now consult ModelCapabilitiesCache.is_reasoning_model() first and fall back to the regex only for brand-new models not yet in the catalogue. Disabling is_reasoning_model on a model in the admin UI now disables the reasoning-effort UI on the agents that use it.
  • Image generation options driven by the live catalogue β€” User preferences dropdowns (quality, size, format) are rebuilt from useImageGenerationOptions calling the new GET /api/v1/image-generation/options endpoint. Adding a new image model (or new quality/size combination) is now an admin operation, not a code change.

πŸ› οΈ Migration (3-step pattern, ADR-040)

  • 2026_05_05_0001-llm_models_schema.py β€” creates the new tables and adds nullable columns.
  • 2026_05_05_0002-llm_models_backfill.py β€” backfills 47 known models from a frozen MODELS_DATA list (preserves capability profiles from the deleted FALLBACK_PROFILES dict).
  • 2026_05_05_0003-llm_models_constraints.py β€” flips backfilled columns to NOT NULL, drops legacy llm_model_pricing.model_name, adds the composite unique constraint.

All three are reversible via standard alembic downgrade -1. Seeds rewritten to match: chat seed inserts 119 catalogue rows then pricing rows via INSERT … SELECT … JOIN; image seed includes provider='openai'::llm_provider_enum on all 27 rows.

πŸ› Fixes

  • Pricing PUT toast error on existing models β€” lazy=\"raise\" on LLMModelPricing.model was being invalidated by an unnecessary db.refresh() after flush(). Removed three refreshes; defaults are all Python-side and the pre-populated relationship survives flush.
  • UserSkillState mapper init failure at boot β€” eager mapper configuration via sa_inspect(LLMModel).mapper.column_attrs was firing before all domain models loaded. Replaced with table-level introspection (LLMModel.__table__.columns.keys()).
  • Pricing seed id NOT NULL violation β€” the rewritten seed now provides gen_random_uuid() explicitly in the INSERT … SELECT.

🌍 i18n (6 languages)

  • 14 new keys for the admin LLM pricing form (provider label + 8 capability labels + 4 pricing labels) + 5 keys for the section headers + buttons.
  • 2 new keys for the image options metadata (provider column header + price range tooltip).

πŸ§ͺ Tests + tooling

  • All migrations are revertible and tested via the standard alembic upgrade head / alembic downgrade -1 cycle.
  • Pre-commit hook (host MyPy + Ruff + Black, host ESLint + tsc, i18n parity check across 4315 keys Γ— 6 languages) green on the full branch.
  • All 7400+ unit tests pass.

πŸ“š Documentation

  • New ADR-078 β€” LLM Catalogue DB-Source-of-Truth.
  • ADR-026 (LLM Model Selection Strategy) β€” Evolution header pointing to ADR-078.
  • ADR-039 (Cost Optimization & Token Management) β€” Evolution note on the MODEL_PROFILES β†’ DB tables move.
  • ADR-063 (Cross-Worker Cache Invalidation) β€” ModelCapabilitiesCache + ImageOptionsCache added to the documented consumer list.
  • Technical docs aligned: DATABASE_SCHEMA, LLM_PRICING_MANAGEMENT, IMAGE_GENERATION, LLM_PROVIDERS, LLM_PROVIDER_CONSTRAINTS, LLM_CONFIG_ADMIN.

πŸ€– Released with Claude Code

Breaking Changes

  • Removed ~750 frozen Python constants for the LLM catalogue; replaced by three database tables (`llm_models`, `llm_model_pricing`, `image_generation_pricing`).
  • Renamed and restructured pricing schema: dropped legacy column `llm_model_pricing.model_name`.
  • Changed default behavior of reasoning‑model toggle to consult live cache instead of hardcoded regex.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track LIA

Get notified when new releases ship.

Sign up free

Beta — feedback welcome: [email protected]