Skip to content

Onboarding: reliable MCP attach, a setup wizard everywhere, and reevesagents-win (1.5.0) - #9

Merged
mertkayacs merged 12 commits into
masterfrom
feature/mcp-onboarding-windows-native
Jul 11, 2026
Merged

Onboarding: reliable MCP attach, a setup wizard everywhere, and reevesagents-win (1.5.0)#9
mertkayacs merged 12 commits into
masterfrom
feature/mcp-onboarding-windows-native

Conversation

@mertkayacs

Copy link
Copy Markdown
Owner

Closes the onboarding gaps in #8 and adds a native-Windows package. Target: 1.5.0.

MCP attach is reliable now

  • attach resolves an absolute node + entry launcher, so a host CLI starts the server regardless of its own PATH (the classic "attached but never starts" failure with nvm/fnm/pnpm/volta or GUI-launched CLIs)
  • pin -s user for Claude Code so one attach covers every project
  • attach self-verifies with a real MCP handshake and prints a restart reminder; doctor gains an "mcp server" check
  • attach --force rewrites a stale pre-1.5.0 registration so upgraders get the absolute launcher

The agent onboards itself

  • the MCP server ships connect-time instructions and a reevesagents://guide resource, so a freshly attached agent knows what reevesagents is and the drive loop without being told

A setup wizard on every surface

  • CLI reevesagents setup (reports the environment and the two ways to use it; --attach connects installed hosts and verifies)
  • TUI first-run setup screen, routed to after the language pick
  • Web first-visit getting-started popup
  • every new string in ten languages, QA'd for native voice

reevesagents-win: MCP-only, native Windows

  • a new package that drives AI CLIs through ConPTY instead of tmux, so a host CLI on Windows can spawn and steer others with no WSL
  • the 13-tool drive loop plus the guide resource and instructions; its own registry; Windows attach via where and cmd.exe; mutually exclusive with the unix registration
  • ships at 1.5.0; publish.yml publishes it on the same tag (continue-on-error until its npm trusted publisher is configured)

Tested

  • pnpm verify:release green for both packages (typecheck, lint, tests, build, smoke, package check, install matrix)
  • dogfooded by driving Codex and Kimi over reevesagents to review the diff; every real finding fixed (exit codes, cmd.exe quoting, a Windows verifier that could archive a live session's runs, doctor JSON parity)

Release notes

  • main package bumps 1.4.0 -> 1.5.0 on merge (release-it, from master)
  • reevesagents-win needs its npm trusted publisher set up before it publishes; bump both packages together so versions match the tag

Attach wrote a bare `reevesagents mcp` command, so a host CLI that
launched the server with a PATH lacking the reevesagents bin
(nvm/fnm/pnpm/volta installs, GUI-launched CLIs) silently failed to
start it, while attach and hosts still reported success.

- resolve the launcher to an absolute node + entry (or absolute bin)
  so the command no longer depends on the host's PATH
- pin -s user for Claude Code so one attach covers every project
- verify the server actually starts after attach, and print a restart reminder
- doctor: add an mcp server self-launch check
- opencode: point at the manual add instead of a dead end

Refs #8
A freshly attached host CLI had no in-band explanation of what
reevesagents is or how to drive it. Surface that proactively so the
model can start spawning agents without guesswork.

- set the MCP server instructions to what reevesagents is plus the drive
  loop (list_providers, spawn, send_text, send_key enter, read)
- add a reevesagents://guide resource with a worked example
- expose the resource list and read dispatch as pure functions for tests

Refs #8
Nothing walked a newcomer from install to a first driven agent. Add a
setup wizard that reports the environment and connects installed CLIs,
built on one core so the TUI and web can reuse it.

- core onboard: buildOnboardingState (tmux, node, installed providers,
  host attach status, launcher resolution, ready) and runOnboarding
  (attach all installed hosts, then verify the server launches)
- cli setup: report the two ways to use reevesagents; with --attach,
  connect every installed host and verify, then print the next step
- export checkTmux so onboarding reads it without the full doctor

Refs #8
New users landed on the main menu with no guidance. Route the first run
to a setup screen after the language pick: it shows the environment, the
two ways to use reevesagents, and one-key actions to connect installed
CLIs or start a run.

- Setup screen built on the shared onboarding core
- first run (no config) routes here from the language picker
- Setup screen name, router case, and a render test
- setup.* strings in all ten languages

Refs #8
The web UI dropped you straight into an empty board. Show a one-time
welcome dialog that explains the two ways to use reevesagents and links
to Agent control to connect a CLI.

- welcome dialog shown once per browser (localStorage flag)
- Connect button opens the Agent control panel
- reuses the setup.* strings, so it is localized in every language

Refs #8
Native Windows has no tmux, so the main package cannot run there. Add a
separate, MCP-only sibling that drives AI CLIs through ConPTY instead, so
a host CLI on Windows can spawn and steer other CLIs during its session.

- ConPTY runtime via node-pty; agents are children of the MCP process, so
  they live for the session while the JSON registry stays the source of truth
- the 13-tool drive loop, the guide resource, and connect-time instructions
- Windows attach through `where` and cmd.exe, with the launcher resolved to
  an absolute node plus entry so it starts regardless of the host PATH
- registration name reevesagents-win, mutually exclusive with the unix name
- shared catalog copied with a drift guard; ships at 1.5.0
- pnpm workspace now includes packages/*

Refs #8
Dogfood review: attach, detach, and setup printed failures but exited 0,
so a script read a failed connect as success.

- attach, detach, and setup --attach exit 1 when nothing attaches or the
  server does not verify
- attach --force rewrites a stale registration (a pre-1.5.0 bare-name
  command) by removing it first, so upgraders get the absolute launcher

Refs #8
Dogfood review of reevesagents-win.

- the launch verifier now marks its throwaway server (REEVES_WIN_VERIFY)
  so it skips reconcile-on-start; before, running attach or setup while a
  host session was live archived that session's runs
- drop cmd.exe /s: it strips the outer quotes of the whole command, which
  corrupts a .cmd path that contains spaces
- setup exits 1 on failure; doctor --json emits { ok, checks } to match
  the unix package

Refs #8
A native-voice QA of the setup wizard strings flagged three:
- zh-Hans setup.intro / setup.noProviders read stiff or incomplete
- ar setup.done carried an article the other button labels drop
The other seven languages were clean.

Refs #8
Prepare the native-Windows package for its first publish alongside the
main package.

- add a README and the Apache-2.0 LICENSE, plus the repository directory,
  bugs, and homepage fields
- publish.yml publishes reevesagents-win on the same tag; it is
  continue-on-error until the package's npm trusted publisher is set up,
  and the version must match the tag, so bump both packages together

Refs #8
- shorter timeout for the read-only mcp list status probe so hosts/setup
  do not stall on a slow host CLI; attach/detach keep the 15s cap
- web attach-all now verifies the server launches (like the CLI) and adds
  a verify field to the response
- web delete-preset uses an i18n confirm string, translated in all ten
  languages, instead of a hardcoded English confirm
- reach the setup wizard from Settings for a returning user

Refs #8
- resolveLaunchCmd skips a .cmd fallback (a host launching via execFile
  cannot run a .cmd shim); doctor warns instead of reporting it ok
- setup gains --json for parity with the unix package
- the mcp list status probe uses a shorter timeout than attach/detach

Refs #8
@mertkayacs
mertkayacs merged commit 8fef33d into master Jul 11, 2026
2 checks passed
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