Skip to content

ci(github): publish github releases from workflow - #3

Merged
winlp4ever merged 1 commit into
mainfrom
add-github-release
Mar 21, 2026
Merged

winlp4ever merged 1 commit into
mainfrom
add-github-release

Conversation

@winlp4ever

Copy link
Copy Markdown
Contributor

No description provided.

@winlp4ever
winlp4ever merged commit 8e52447 into main Mar 21, 2026
1 check passed
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.
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