Skip to content

feat(config): user-level model tier mapping override (02o)#283

Merged
kumaakh merged 2 commits into
mainfrom
feat/user-model-config
May 28, 2026
Merged

feat(config): user-level model tier mapping override (02o)#283
kumaakh merged 2 commits into
mainfrom
feat/user-model-config

Conversation

@kumaakh
Copy link
Copy Markdown
Contributor

@kumaakh kumaakh commented May 28, 2026

Summary

  • Adds ~/.apra-fleet/data/config.json as user-level config for overriding per-provider tier-to-model mappings
  • Precedence chain: per-member override (update_member --model-*) > user config > hardcoded provider default
  • Fixes agy display-name resolution by threading the original tier through PromptOptions instead of reverse-looking-up the resolved model ID
  • Applies user-config overrides for all five providers (claude, gemini, codex, copilot, agy) in execute-prompt.ts

Changes

  • New: src/services/user-config.ts -- loadUserConfig() reads and caches config; getModelOverride(provider, tier) returns the override or undefined
  • Modified: src/providers/provider.ts -- added tier field to PromptOptions and wrapWindowsPrompt signature
  • Modified: src/tools/execute-prompt.ts -- resolves tier, applies user-config in precedence chain, passes tier to prompt opts
  • Modified: src/providers/agy.ts -- uses opts.tier and getModelOverride() instead of reverse-lookup + hardcoded map
  • Modified: src/os/windows.ts -- passes opts.tier through to wrapWindowsPrompt
  • Docs: docs/install.md new section, docs/provider-guide.md cross-link
  • Tests: 12 new tests in tests/user-config.test.ts

Closes apra-fleet-projects-02o.

Test plan

  • npm run build clean
  • npm test passes (1310 tests, 79 files)
  • Manual smoke: write config.json with agy override, dispatch, verify settings.json gets overridden display name

Akhil Kumar and others added 2 commits May 28, 2026 00:36
Add ~/.apra-fleet/data/config.json for per-provider tier-to-model
overrides. Precedence: update_member > user config > hardcoded default.

- New src/services/user-config.ts: loadUserConfig() + getModelOverride()
- Thread tier from execute-prompt into PromptOptions so agy no longer
  reverse-looks-up the resolved model ID to find the display name
- agy buildPromptCommand/wrapWindowsPrompt use getModelOverride() with
  AGY_MODEL_FOR_TIER as fallback
- execute-prompt tier resolution: agent override > user config > provider
  default for all providers
- 12 new tests covering loader, getter, and agy integration
- Docs in install.md and provider-guide.md
@kumaakh kumaakh merged commit 89a53a0 into main May 28, 2026
9 checks passed
@kumaakh kumaakh deleted the feat/user-model-config branch May 28, 2026 05:14
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