feat(cli): add /plan slash command to view agent's todo list#36931
Open
TumCucTom wants to merge 4 commits into
Open
feat(cli): add /plan slash command to view agent's todo list#36931TumCucTom wants to merge 4 commits into
TumCucTom wants to merge 4 commits into
Conversation
Contributor
Author
|
Pushed a follow-up commit that adds both my contributor emails to `scripts/release.py` AUTHOR_MAP: ``` This unblocks the new `Contributor Attribution Check` workflow. Locally I verified the check passes against the new commit: ``` @maintainers — would you mind re-running the `check-attribution` job to confirm? |
This was referenced Jun 1, 2026
Adds a new /plan slash command (cli-only) that renders the agent's in-process TodoStore as a boxed table with status markers, so users can check task progress without waiting for the agent to respond. Subcommands: /plan show all items (pending/in_progress/completed/cancelled) /plan pending show only pending + in_progress /plan clear wipe the list (with confirmation, --yes/now to skip) Reads self.agent._todo_store (initialized in agent/agent_init.py) directly -- no LLM round-trip. /plan clear respects the existing destructive-slash confirmation gate and the inline --yes/-y/now skip tokens used by /new and /reset. Fixes NousResearch#36821. Co-authored-by: Zippy AI <tomkinsbale@icloud.com> Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The new contributor-check CI workflow requires every new committer email to be mapped to a GitHub username in scripts/release.py. Adds both known emails for the same contributor. Co-authored-by: Zippy AI <tomkinsbale@icloud.com> Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
31ad6c8 to
17f7e14
Compare
The test times out under xdist load (drain thread stuck in select.select) on a 30s pytest-timeout. Not related to /plan changes. Re-poke CI to get a fresh runner slot. Co-authored-by: Zippy AI <tomkinsbale@icloud.com> Co-Authored-By: Claude Opus 4.7 <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
Implements the
/planslash command requested in #36821. The command renders the agent's in-processTodoStoreas a boxed table with status markers, so users can check task progress without waiting for the agent to respond. No LLM round-trip.Subcommands
/plan— show all items (pending / in_progress / completed / cancelled)/plan pending— only pending + in_progress/plan clear— wipe the list (with confirmation;--yes/nowskip)Example
Implementation
CommandDef("plan", "Show the agent's current todo list", "Session", cli_only=True, args_hint="[pending|clear]")inhermes_cli/commands.py.HermesCLI._handle_plan_commandincli.pythat readsself.agent._todo_store(initialized inagent/agent_init.py:1042) and renders a Unicode-bordered table.HermesCLI.process_command./plan clearreuses the existing destructive-slash confirmation gate (_confirm_destructive_slash) and inline--yes/nowskip tokens, matching the/newand/resetpatterns.Why CLI-only
The issue labels include
comp/cli, comp/tuiand the body describes "in the TUI". The agent'sTodoStoreis per-AIAgent, and surfacing it through the gateway would require sourcing the right agent for the session key plus i18n translations. Keeping it CLI-only matches the issue's "first PR" framing and the scope of existing CLI-only commands like/historyand/save. Gateway support can be added as a follow-up if there's demand.Test plan
tests/cli/test_cli_plan_command.py(19 tests) covers:process_commanddispatch + no collision with/statusor/historypendingfilter behaviourclearwith approval, cancellation, empty store, no agent--yesandnowskip tokens bypass the gateMagicMock-backedHermesCLIinstances and a realTodoStore.Platforms
check-windows-footguns.pyreports no issues.ruff checkclean.Out of scope
/planfrom Telegram/Discord/Slack) — see "Why CLI-only" above.Fixes #36821.
🤖 Generated with Claude Code