Skip to content

feat(config): add project-level config v1#36

Draft
scarletkc wants to merge 3 commits into
mainfrom
feat/project-config-v1
Draft

feat(config): add project-level config v1#36
scarletkc wants to merge 3 commits into
mainfrom
feat/project-config-v1

Conversation

@scarletkc

Copy link
Copy Markdown
Owner

Summary

  • load the nearest .vexor/config.json with a strict v1 allowlist and explicit credential/endpoint rejection
  • apply project config consistently across the CLI, Python API, and MCP while reporting per-field origins in config --show and doctor
  • keep project config.json trackable, migrate the generated ignore template, and synchronize docs, the bundled skill, and roadmap

Why

Project-level configuration was the remaining roadmap item for repositories that need shared behavior defaults without moving credentials or provider endpoints into attacker-controlled files.

Impact

Projects can commit safe search/index behavior overrides. Global configuration, environment overrides, runtime/per-call settings, and explicit arguments retain their documented precedence. Existing global-only callers remain compatible.

Validation

  • .\.venv\Scripts\python.exe -m pytest -q — 582 passed
  • .\.venv\Scripts\python.exe -m pytest --cov=vexor --cov-report=term -q — 91% total coverage
  • real OpenAI-compatible provider smoke check: project config origin display, index, and search all passed
  • git diff --check

scarletkc and others added 3 commits July 12, 2026 11:44
- doctor: fall back to the global config when the project config fails
  to load, so later checks report real settings instead of blank
  defaults (no more false "API key not configured")
- doctor: replace the full field-origin dump with a compact summary of
  project/environment overrides only
- config --show: treat provider env API keys as configured, show
  key-only VEXOR_REMOTE_RERANK_API_KEY as "key from env" without
  relabeling the block origin, display unset embedding dimensions as
  "auto", and sync the --show help text
- docs: deduplicate the project-config contract (cli.md and mcp.md now
  link to configuration.md) and restore the porcelain note's placement

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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