Skip to content

feat(*): upgrade everos 1.1.2 with per-provider onboard and model verification#103

Merged
cyfyifanchen merged 8 commits into
mainfrom
chore/upgrade_everos_1_1_2
Jul 10, 2026
Merged

feat(*): upgrade everos 1.1.2 with per-provider onboard and model verification#103
cyfyifanchen merged 8 commits into
mainfrom
chore/upgrade_everos_1_1_2

Conversation

@Kendrick-Song

Copy link
Copy Markdown
Contributor

Change description

Upgrade EverOS from 1.0.1 to 1.1.2 and overhaul the onboard memory configuration step with per-provider intelligence, model verification, and UX improvements.

EverOS 1.1.2 upgrade

  • Bump everos[multimodal] from 1.0.1 to 1.1.2 in pyproject.toml
  • Adapt to config file rename: config.toml -> everos.toml
  • Switch env vars from EVEROS_CONFIG_FILE + EVEROS_MEMORY__ROOT to single EVEROS_ROOT
  • Handle exception class split: MultimodalError -> MultimodalNotEnabledError + UnsupportedModalityError

EverOS home initialization

  • Add ensure_everos_home(): copies everos.toml + ome.toml from shipped templates on first run, with legacy config.toml auto-migration
  • Called from make_backend, make_understand_media_tool, and onboard step 4

LanceDB schema auto-migration

  • Add _migrate_lancedb_schemas(): detects missing columns (e.g. deprecated_by) and adds them via pyarrow
  • _acquire_embedded_everos() catches LanceDBSchemaMismatchError, runs migration, retries lifespan
  • Eliminates the need for users to manually clear and rebuild LanceDB indexes on upgrade

Per-provider model fetching

  • Expand _EVEROS_PROVIDERS to 6 entries (add DeepInfra) with supports capability sets and rerank_provider/rerank_base_url fields
  • Provider-specific model listing APIs:
    • OpenRouter: /embeddings/models for embed, ?output_modalities=rerank for rerank, ?input_modalities=image for multimodal
    • DeepInfra: /models/list with reported_type filter (shared _fetch_deepinfra_models helper)
    • SiliconFlow: query params sub_type=embedding / sub_type=reranker
    • DashScope: fixed rerank list ["gte-rerank-v2"]
  • Only show providers that support the current role (e.g. DeepSeek excluded from embedding choices)

Per-role model verification

  • LLM: real POST /chat/completions probe (from PR fix(cli): verify onboard models with real probes and harden the wizard #102)
  • Embedding: two-step MRL dimension probe -- try dimensions=1024 first, fall back to native dim check; reject models that cannot produce 1024-dim vectors
  • Rerank: provider-specific probe dispatching to vllm (/rerank), deepinfra (/{model}), or dashscope (/api/v1/services/rerank/text-rerank/text-rerank)
  • Multimodal: POST /chat/completions probe
  • Each verifier is a peer-level function dispatched by section in _config_everos_role

Onboard UX improvements

  • Model recommendations displayed after fetching model list (gpt-4.1-mini / Qwen3-Embedding-4B / Qwen3-Reranker-4B / gemini-3-flash-preview)
  • Immediate autocomplete popup via prompt_toolkit pre_run_callables
  • Default-select LLM provider for embed/rerank/multimodal steps with auto API key reuse
  • Auto-resolve rerank service type from provider dict (no manual selection)
  • Wording: "Disable" -> "Skip", "dimension correct" -> "supports 1024-dim"
  • Multimodal purpose text alignment

Integration test isolation

  • Set EVEROS_ROOT to tmp_path in test fixtures and e2e subprocess env
  • Copy everos.toml + ome.toml from real root before redirect
  • Reset _embedded_lifespan_cm and _embedded_lifespan_refs between tests

Type of change

  • Bug fix
  • New feature
  • Document
  • Others

Related issues (if there is)

Depends on PR #102 (merged)

Checklists

Development

  • Lint rules pass locally
  • Application changes have been tested thoroughly
  • Automated tests covering modified code pass

Security

  • Security impact of change has been considered
  • Code follows security best practices and guidelines

Code review

  • Pull request has a descriptive title and context useful to a reviewer. Screenshots or screencasts are attached as necessary

Co-authored-by: Claude (claude-opus-4-6) noreply@anthropic.com

Jiayao Song and others added 8 commits July 10, 2026 15:53
- Bump everos[multimodal] pin from ==1.0.1 to ==1.1.2
- Adapt MultimodalError import: everos 1.1 split it into
  MultimodalNotEnabledError + UnsupportedModalityError
- Add _migrate_lancedb_schemas() to _acquire_embedded_everos:
  on LanceDBSchemaMismatchError, auto-add missing columns
  (e.g. deprecated_by) so upgrading users don't need to
  manually clear their index
- Fix integration test isolation: set EVEROS_ROOT (not just
  EVEROS_MEMORY__ROOT) to tmp_path so MemoryRoot.default()
  resolves to the isolated dir; copy everos.toml + ome.toml
  for LLM credentials; reset _embedded_lifespan_cm between
  tests

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
everos >=1.1 renamed its config file from config.toml to everos.toml
and dropped EVEROS_CONFIG_FILE / EVEROS_MEMORY__ROOT env vars in
favour of a single EVEROS_ROOT.

- configure_everos_env: set EVEROS_ROOT instead of the two removed
  vars; auto-rename existing config.toml -> everos.toml for users
  who onboarded on an older raven
- _migrate_lancedb_schemas: accept test-injection kwargs so the
  migration logic can be unit-tested without a live everos runtime
- Add TestMigrateLancedbSchemas (2 tests) covering add-columns and
  no-op paths
- Update all config.toml references in docstrings, test fixtures,
  and skip messages to everos.toml
- Fix integration test isolation: set EVEROS_ROOT to tmp_path, copy
  everos.toml + ome.toml for credentials, reset backend lifespan
  singleton between tests

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- add ensure_everos_home(): creates everos.toml + ome.toml from
  shipped templates (skip if exists), migrates legacy config.toml;
  called from make_backend, make_understand_media_tool, and the
  onboard memory step so all entry paths have a ready home dir
- configure_everos_env() now only sets EVEROS_ROOT (single
  responsibility); file-system init moved to ensure_everos_home()
- onboard memory llm: remove "reuse main model" shortcut; instead
  default-select the main model's provider and auto-reuse its api
  key, user still picks the model (can choose gpt-4.1-mini)
- onboard memory llm: update example to gpt-4.1-mini, add
  capability floor hint in purpose text
- update tests to match new onboard flow

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add per-provider capability filtering and DeepInfra provider
- Fetch embed/rerank models via provider-specific APIs
- Verify embedding dimension (1024) with MRL probe
- Auto-select LLM provider for embed/rerank with key reuse
- Auto-resolve rerank service type from provider dict
- Show model recommendations, trigger immediate autocomplete popup
- Filter DeepInfra rerank to Qwen3-Reranker only (protocol compat)
- UI: "disable" -> "skip", dim wording, multimodal text alignment

Co-authored-by: Claude (claude-opus-4-6) <noreply@anthropic.com>
Split _verify_everos_model into three peer-level verifiers dispatched
by section in _config_everos_role:

- _verify_everos_llm: POST /chat/completions probe
- _verify_embedding_dim: dimension probe (1024 MRL check)
- _verify_rerank: provider-specific rerank probe (vllm/deepinfra/dashscope)

Embedding models cannot be used with the chat/completions endpoint, so
a shared verifier that defaulted to chat probe was incorrect for
embedding. Each role now has its own verifier with the appropriate
probe and failure semantics.

Co-authored-by: Claude (claude-opus-4-6) <noreply@anthropic.com>
- await table.add_columns() in _migrate_lancedb_schemas (was silently
  discarding the migration on AsyncTable)
- catch httpx.InvalidURL in _fetch_openai_models and _try_embed so
  malformed base URLs return None / error string instead of crashing
- guard against non-dict items in embedding probe response
- simplify _probe_embedding_dim redundant branch
- use EVEROS_ROOT instead of legacy EVEROS_MEMORY__ROOT in e2e test
  subprocess env for proper tmp-dir isolation

Co-authored-by: Claude (claude-opus-4-6) <noreply@anthropic.com>
- Extract _fetch_deepinfra_models shared by _fetch_embedding_models
  and _fetch_rerank_models (was identical GET /models/list block)
- Hoist recommendation print above the if/else models branch
- Reuse a single httpx.Client across both _probe_embedding_dim calls

Co-authored-by: Claude (claude-opus-4-6) <noreply@anthropic.com>
…cation

- Recommend google/gemini-3-flash-preview for multimodal role
- Filter model list by provider: OpenRouter uses input_modalities=image
  API param, others use name-pattern matching
- Enable verification (POST /chat/completions) for multimodal role

Co-authored-by: Claude (claude-opus-4-6) <noreply@anthropic.com>
@cyfyifanchen
cyfyifanchen merged commit 7f12160 into main Jul 10, 2026
7 checks passed
@cyfyifanchen
cyfyifanchen deleted the chore/upgrade_everos_1_1_2 branch July 10, 2026 10:00
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.

2 participants