fix(cli): stop the memory back-out from looping on the picker - #258
Merged
Conversation
The wizard's EverOS memory step judged "already configured" two ways: the role menu required a model AND an api_key, while the back-out branch accepted a model alone. The shipped everos.toml template seeds every section's model with an empty api_key, so on any install that had already created that file, Back sent a required role (llm / embedding) straight back to the provider picker forever. The give-up exit that falls back to Markdown memory was unreachable, leaving Ctrl+C as the only way out. Collapse both call sites onto one _everos_role_configured() helper (model AND api_key), the criterion _memory_enabled() already applied. Co-authored-by: Claude (claude-opus-5) <noreply@anthropic.com>
Co-authored-by: Claude (claude-opus-5) <noreply@anthropic.com>
arelchan
approved these changes
Jul 31, 2026
0xKT
added a commit
that referenced
this pull request
Jul 31, 2026
## Summary Bump the package version from 0.1.9 to 0.1.10 (patch release). 22 PRs merged since v0.1.9, no breaking changes. Features: - #260 feat(tui): list the providers that work, and the rest one level down - #252 feat(*): offer every supported provider in the onboarding picker - #251 feat(tools): read images with read_file, and fix four silent type-check bugs - #239 feat: add shell command approval flow - #217 feat: rework the TUI transcript into collapsible episodes - #220 feat(cli): nudge raven upgrade in the tui status bar when behind - #209 feat(providers): add MiniMax Global and CN OAuth Refactors: - #259 refactor(*): one answer to which credentials a provider needs - #249 refactor(providers): unify provider management on litellm The remaining PRs are fixes (#255, #256, #258, #253, #238, #226), test work (#236, #230, #224), docs (#250, #215, #200), and benchmark tooling (#207). ## Type - [ ] Fix - [ ] Feature - [ ] Docs - [ ] CI / tooling - [ ] Refactor - [x] Other ## Verification - [x] Relevant tests pass locally - [x] Relevant lint / type checks pass locally - [ ] User-facing docs or screenshots are updated when needed Bump is limited to `pyproject.toml` and `uv.lock` (`uv lock` sync). Local preflight covers the branch CI checks (commit lint, PR title and body lint, ruff, large-file gate). ## Risk - [x] Security impact considered - [x] Backward compatibility considered - [x] Rollback path is clear for risky changes Version-only change; no code or behavior change. Rollback is a revert of this commit. ## Related Issues N/A Co-authored-by: Claude (claude-opus-5[1m]) <noreply@anthropic.com>
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.
Summary
The onboarding wizard's EverOS memory step judged "already configured" two different
ways: the role menu required a model AND an api_key, while the back-out branch after
the provider picker accepted a model alone. Since the shipped everos.toml template
seeds every section's model with an empty api_key,
Backon a required role(llm / embedding) fell into
continue, the role menu decided nothing was configured,and control dropped straight back into the picker -- forever. The bounded exit added
for this case ("Give up EverOS (use native Markdown memory)") was unreachable, so
Ctrl+C was the only way out of the wizard.
Both call sites now share one
_everos_role_configured(section)helper (model ANDapi_key), which is also the criterion
_memory_enabled()already applied -- onedefinition of "configured" instead of three copies that can drift apart again.
Optional roles (rerank / multimodal) were never affected: their menu offers Skip.
Type
Verification
uv run pytest tests/test_cli_onboard_commands.py tests/test_config_update_everos.py -q-> 150 passed
bash .claude/scripts/preflight_ci.sh(commitlint, commit-message check, large files,pre-commit, ruff lint, focused pytest) -> all green, 5123 passed / 30 skipped
Regression gate proven to bite: reverting only the back-out branch to the old
model-only check makes
test_memory_required_role_back_reaches_give_up_menufail with"Back re-asked the picker instead of offering an exit".
Driver against the real
_config_everos_rolewith a seeded template (model set,api_key empty): before the fix
Backre-asked the picker indefinitely; after it, thesecond prompt is the give-up menu and the call returns
_ABORT_EVEROS.Relevant tests pass locally
Relevant lint / type checks pass locally
User-facing docs or screenshots are updated when needed
Risk
User-visible change, wizard only:
Backon a required memory role now reaches the"pick a provider / give up EverOS" menu instead of re-asking the provider picker. A
role whose everos.toml entry has a model but no api_key is now treated as
unconfigured, so its menu no longer offers "Keep current" for an entry that could not
work anyway. No config, schema, or runtime path changes; rollback is reverting this
commit.
Related Issues
Fixes #257