ci(github): publish github releases from workflow - #3
Merged
Merged
Conversation
5 tasks
winlp4ever
added a commit
that referenced
this pull request
Jun 24, 2026
…hing - auto-model classifier routes via LiteLLM using the resolved lite model, so it works for native non-OpenAI keys (Anthropic/Gemini/Mistral/DeepSeek), not just OpenAI-compatible providers (#2) - add catalog.require_model_code() and raise a clear "No LLM API available" error in base.py / manager auto-mode / deep-research instead of letting None model codes 500 or fall through to an opaque auth error; harden normalize_code/resolve_code against non-str input (#3) - drive the Qdrant collection vector size and zero-vector padding from the active embedding model's dim (catalog) instead of a hardcoded 512 (#4) - memoize full-catalog resolution keyed on the present-provider snapshot so agent construction / validation stop re-walking ~28 models per call (#5, #7) - extract catalog.openai_compatible_client(resolved); embedder reuses it and the classifier no longer needs its own provider->client switch (#6) Adds tests for provider-agnostic classification, require_model_code, non-str normalize, and the shared client helper.
winlp4ever
added a commit
that referenced
this pull request
Jun 25, 2026
* feat(models): key-aware model catalog for minimal-key deploys
Make Dim0 run on minimal API keys (OpenAI+Linkup or OpenRouter+Linkup) by
resolving models from a route-based catalog against whichever keys are present.
- add backend/topix/models.yml (providers + llm + embedding with ordered routes)
and config/catalog.py (resolve/normalize_code/available_llms/available_embedding)
- source service_config.llm and provider availability from the catalog; trim
services.yml to search/navigate/code/image
- route validate_model and BaseAgent through normalize_code so ids, call codes,
and legacy provider-prefixed codes all map to a reachable route (fixes the
aux agents that defaulted to OpenAI-only models)
- auto-model + classifier select by tier from available models instead of
hardcoded provider-specific ids
- embeddings go through the resolved provider (OpenAI native or OpenRouter
base_url); dim stays 512 so Qdrant is unchanged
- /utils/services returns full model metadata; frontend renders the model
picker dynamically (drops the hardcoded LlmModels list) and gates the
image-gen toggle on availability
- standardize MISTRAL_API_KEY; clarify .env.sample minimal-key guidance
Tests: test/unit/config/test_catalog.py (9) + updated manager test; full unit
suite green; frontend tsc + eslint clean.
* fix(agents): detect model capabilities by bare name for routed models
support_temperature/reasoning/penalties matched only native enum codes like
"openai/gpt-5.4", so OpenRouter-routed reasoning models ("openrouter/openai/
gpt-5.4", wrapped in LitellmModel) matched none — reasoning was dropped and
temperature wrongly forced on, breaking GPT-5.x on the OpenRouter-only path.
Match on the bare model name (final path segment) so capabilities hold across
native, OpenRouter, and LitellmModel addressing. Adds regression tests.
* fix(agents): address review — classifier, none-guards, embed dim, caching
- auto-model classifier routes via LiteLLM using the resolved lite model, so it
works for native non-OpenAI keys (Anthropic/Gemini/Mistral/DeepSeek), not just
OpenAI-compatible providers (#2)
- add catalog.require_model_code() and raise a clear "No LLM API available"
error in base.py / manager auto-mode / deep-research instead of letting None
model codes 500 or fall through to an opaque auth error; harden
normalize_code/resolve_code against non-str input (#3)
- drive the Qdrant collection vector size and zero-vector padding from the
active embedding model's dim (catalog) instead of a hardcoded 512 (#4)
- memoize full-catalog resolution keyed on the present-provider snapshot so
agent construction / validation stop re-walking ~28 models per call (#5, #7)
- extract catalog.openai_compatible_client(resolved); embedder reuses it and the
classifier no longer needs its own provider->client switch (#6)
Adds tests for provider-agnostic classification, require_model_code, non-str
normalize, and the shared client helper.
* feat(models): refresh catalog lineup and add MiniMax
Revamp the curated model list and trim ModelEnum to the current generation:
- OpenAI: keep gpt-5.4 family + gpt-5.5/5.5-pro; drop 4.x/5.0/5.1/5.2
- Anthropic: opus-4.8, sonnet-4.6, haiku-4.5 (no -fast variants; too costly)
- z-ai: GLM 5.1/5.2 (drop 4.7); Google: Gemma 4 31b/26b (drop Gemini)
- Qwen 3.6 plus; DeepSeek v4 flash/pro; Mistral large/medium; Kimi k2.6
- add MiniMax M2.7 with its color brand icon (@lobehub Minimax.Color)
- OpenRouter routes use :nitro except openai/anthropic single-provider models
Capability detection (_bare) now strips the :nitro variant so reasoning/
temperature stay correct for nitro-routed models. Sub-agent ModelEnum defaults
and the agent YAML configs are updated to ids that exist in the new catalog.
Tests: dedicated _bare/support_* coverage incl. :nitro; catalog-integrity
guards (route providers, tiers, dim, nitro rule, config ids, enum handles).
* test(agents): pin a provider key in auto-model routing tests
The two _select_plan_model tests call _auto_*_model(), which now raises when no
LLM is reachable. They passed locally (real .env keys leak in) but failed on CI
(no keys). Add an openai_only fixture that clears provider keys and sets one, so
catalog resolution is deterministic across CI and local.
This was referenced Aug 26, 2026
3 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.