Skip to content

fix(cli): stop the memory back-out from looping on the picker - #258

Merged
0xKT merged 2 commits into
mainfrom
fix/everos_role_back_loop
Jul 31, 2026
Merged

fix(cli): stop the memory back-out from looping on the picker#258
0xKT merged 2 commits into
mainfrom
fix/everos_role_back_loop

Conversation

@0xKT

@0xKT 0xKT commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

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, Back on 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 AND
api_key), which is also the criterion _memory_enabled() already applied -- one
definition of "configured" instead of three copies that can drift apart again.

Optional roles (rerank / multimodal) were never affected: their menu offers Skip.

Type

  • Fix
  • Feature
  • Docs
  • CI / tooling
  • Refactor
  • Other

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_menu fail with
    "Back re-asked the picker instead of offering an exit".

  • Driver against the real _config_everos_role with a seeded template (model set,
    api_key empty): before the fix Back re-asked the picker indefinitely; after it, the
    second 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: Back on 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.

  • Security impact considered
  • Backward compatibility considered
  • Rollback path is clear for risky changes

Related Issues

Fixes #257

0xKT and others added 2 commits August 1, 2026 00:07
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>
@0xKT
0xKT requested a review from arelchan July 31, 2026 16:38
@0xKT
0xKT merged commit b1d5e4a into main Jul 31, 2026
9 checks passed
@0xKT
0xKT deleted the fix/everos_role_back_loop branch July 31, 2026 16:39
@0xKT 0xKT mentioned this pull request Jul 31, 2026
12 tasks
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>
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.

bug(cli): the memory step Back choice loops on the provider picker

2 participants