Repository navigation
feat(rpc): plan mode for RPC hosts - #60
Merged
Merged
Conversation
This was referenced Nov 14, 2026
Oh My Pi plans only in its terminal and for ACP clients, so Scient Desktop could not offer plan mode for Scient Agent. A new plan command (enter, exit, get) gives an RPC host the same flow. In plan mode the agent reads and drafts a plan file but changes nothing else. When it proposes the plan through xd://propose, a plan_proposed frame carries the plan (for the host's plan card), and a select request asks Approve or Refine while the tool call waits. Only an explicit approval leaves plan mode; the same run then carries out the plan. Refine, a typed answer (sent to the model as feedback) or a cancelled question keeps planning. An answer that arrives after plan mode was left never approves. Unlike ACP, there is no auto-approval for a host without a question surface: a host that sends plan answers it. Planning is refused while a goal is set. Hosts that do not send plan are unaffected. Scient-Divergence: SA-PLAN-MODE Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Scient-Generator: rpc Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A proposal still waiting for approval belonged to the old conversation. After new_session or switch_session, approving it cleared plan mode in the new conversation and recorded the old plan's approval there. A new, switched or forked conversation now leaves plan mode, so the old answer is refused like any answer after plan mode ended. Scient-Divergence: SA-PLAN-MODE Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Approving a plan, or changing conversation, leaves plan mode without
the host asking. A plan_updated frame ({ enabled, planFilePath? }) now
reports every change, so Scient Desktop can show whether the agent is
planning.
Scient-Divergence: SA-PLAN-MODE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Scient-Generator: rpc Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refine returned a tool result telling the model to stop and ask, but the model often proposed the same plan again in the same run. Refine now asks the host what should change (an input request) and gives the answer to the model as feedback. A cancelled question falls back to asking in the conversation. Scient-Divergence: SA-PLAN-MODE Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
yaacovcorcos
force-pushed
the
claude/plan-mode-20261113
branch
from
November 14, 2026 18:36
1417006 to
908038f
Compare
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.
#59 is merged, so this is now based on
main.Oh My Pi plans only in its terminal and for ACP clients, so Scient Desktop could not offer plan mode for Scient Agent. A new RPC
plancommand gives a host the same flow.What's new
plancommand withop: "enter" | "exit" | "get".xd://propose, aplan_proposedframe ({ title, planFilePath, markdown }) carries the plan for the host's plan card. Then a select request asks Approve or Refine while the tool call waits.plan_updatedframe ({ enabled, planFilePath? }) reports every time plan mode turns on or off, including after an approval or a change of conversation, so the host can show whether the agent is planning.inputrequest) and gives the answer to the model as feedback. Without it, the model often proposed the same plan again in the same run (seen live). A cancelled question falls back to asking in the conversation.planare unaffected.src/scient/rpc-plan.ts; marked hooks inrpc-mode.ts,rpc-types.tsandwire/*. Clients regenerated in a separate(generated)commit.Desktop: ScientFactory/scient-desktop#925 (plan mode, stacked on ScientFactory/scient-desktop#924 goal mode), and the composer chips PR on top of #925.
Checked
test/scient/rpc-plan.test.ts,prompt-cache.test.ts,rpc-prompt-result.test.ts: 26 pass;rpc-dictation.test.tspassed before the last two commits, which don't touch it. Divergence check: 37 commits, 8 generated, all accounted for.bun run check:tsand the divergence check pass./plan Add a file plan-check.txt ...proposed a plan, Desktop showed the plan card and the Approve/Refine question, nothing was written before the answer, and Approve created the file in the same turn. Screenshots inreviews/scient-agent-next-20261111/build-all-20261113/agentmodes-shots/in the ScientFactory workspace.Platforms: no platform-specific code. Tested on macOS only; Windows and Linux are covered by CI.
Release: ships in the next Scient Agent release, held until #53 merges.
Scient-Divergence: SA-PLAN-MODE
🤖 Generated with Claude Code