[PR #1136] [CLOSED] feat(clients): register Grok Build and Grok Bot during setup #2673

Closed
opened 2026-10-17 21:08:53 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/1136
Author: @morluto
Created: 10/8/2026
Status: ❌ Closed

Base: main ← Head: cursor/grok-client-cherry-pick-0b56


📝 Commits (1)

  • 2f2110a feat(clients): register Grok Build and Grok Bot during setup

📊 Changes

23 files changed (+2243 additions, -35 deletions)

View changed files

📝 README.md (+1 -1)
📝 README_ar.md (+1 -1)
📝 README_ja.md (+1 -1)
📝 README_ko.md (+1 -1)
📝 README_zh.md (+1 -1)
📝 docs/installation.md (+16 -1)
📝 docs/roadmap.md (+1 -1)
📝 scripts/verify-package-environment.mjs (+2 -0)
📝 scripts/verify-package-update.mjs (+2 -0)
📝 scripts/verify-published-package.mjs (+9 -0)
📝 scripts/verify-windows-package.mjs (+4 -0)
📝 skill-src/reverse-engineer-anything/SKILL.md (+1 -1)
📝 src/application/ClientConfigurationDocument.ts (+973 -11)
📝 src/application/ClientRegistrationStatus.ts (+14 -6)
📝 src/application/SetupClientConfiguration.ts (+10 -4)
📝 src/application/SupportedClients.ts (+33 -1)
📝 src/application/Uninstall.ts (+1 -1)
📝 tests/boundary/filesystem/clientConfigurationDialects.test.ts (+36 -0)
📝 tests/boundary/filesystem/clientLifecycle.test.ts (+1076 -0)
📝 tests/boundary/filesystem/clientRegistrationStatus.test.ts (+55 -1)

...and 3 more files

📄 Description

Summary

Cherry-pick of #1132 onto current main, including the static-check and registration fixes. One commit, no merge. #1132 stays on the fork because that branch cannot accept a main merge that touches workflow files.

Problem and expected behavior

Setup already configured Claude Code, Codex, Cursor, Gemini CLI, Antigravity, GitHub Copilot CLI, and the other supported clients. It did not detect Grok Build or Grok Bot.

Grok Build also suppresses a server named in the root disabled_mcp_servers list. Writing [mcp_servers.rea] and leaving disabled_mcp_servers = ["rea"] would keep REA suppressed while doctor reported the registration aligned. Setup now removes only the rea name from that list, keeps every other name, and doctor reports the registration stale until that name is gone. Uninstall of an inline mcp_servers table whose only server is REA keeps the comments around that entry.

A detected Grok Build install receives [mcp_servers.rea] in its TOML config, with startup_timeout_sec = 30, edited without rewriting the rest of the file. A detected Grok Bot install receives mcpServers.rea in mcp.json. That file is the registration to add to the signed-in account. Setup does not call the account API.

Change and scope

Grok Build uses a grok document format. Parsing matches TOML, and serialization edits only the REA server tables and a root disabled_mcp_servers assignment that names rea. Comments, spacing, and unrelated settings stay in place. Codex keeps its existing full-document TOML rewrite.

Grok Build is found from GROK_HOME or ~/.grok. Grok Bot is found from an absolute SAND_DATA_ROOT, and otherwise from ~/.grokbot. A relative or empty SAND_DATA_ROOT falls back to ~/.grokbot. The shared skill stays under ~/.agents/skills.

The lifecycle suite is split into smaller suites so the test callback stays within the function-length check. The get-started page is reflowed to match the formatter. Translated READMEs keep main's short client list and add Grok Build and Grok Bot.

Not included: copying another client's mcp.json, writing mcpBoxServers, calling Grok Bot's account API, or duplicating the skill into the Grok Build skill directory.

Contract and boundary impact

  • Semantic owner and earliest changed stage: client setup and uninstall, at configuration write time.
  • CLI and MCP/tool-catalog contract: none. The MCP server tools are unchanged. Setup gains two client ids, grok_build and grok_bot.
  • Provider, bridge, target-format, or platform compatibility: none.
  • Evidence, artifact, provenance, or reconstruction contract: none.
  • Process execution, authorization, cleanup, or containment impact: none. Setup still writes only the local client config it already owns for other agents.
  • Generated metadata (docs/public/product-catalog.json), package, or installation impact (CI generates and validates ignored catalogs and skills/; edit authored instructions in skill-src/ and never commit build outputs): skill-src names the two new client ids. Generated skills/ and docs/public/product-catalog.json are not in this commit.

Evidence and regression coverage

  • Tests added or updated: client lifecycle, registration status, configuration dialects, and the configuration document suite. Cases cover removing rea from disabled_mcp_servers (including a \u escape and a sole entry), reporting that registration stale, keeping comments when uninstall removes the only inline Grok server, and the surgical TOML edits.
  • Base reproduction or other evidence: #1132 static checks failed on tests/boundary/filesystem/clientLifecycle.test.ts (function longer than 150 lines) and website/public/get-started/index.html (format).
  • User-visible CLI/MCP output (if applicable): setup writes the stdio entry (npx -y rea-agents@<version> mcp, startup_timeout_sec = 30) and clears the Grok disable list.
  • Remaining proof gaps: packaged Windows and published-package verifier scripts were updated but not executed here. Real Grok Build and Grok Bot installs were not exercised in this environment.

Not applicable to this client-registration change:

  • Observed, derived, and inferred claims remain distinguishable.
  • Artifact identity, source provenance, and failed attempts remain preserved.
  • Unsupported, incomplete, unavailable, or uncertain outcomes remain visible.

Validation performed

  • npm run test:focused -- tests/boundary/filesystem/clientLifecycle.test.ts tests/boundary/filesystem/clientRegistrationStatus.test.ts tests/boundary/filesystem/clientConfigurationDialects.test.ts src/application/ClientConfigurationDocument.test.ts — 82 passed on the same tree before this cherry-pick
  • npm run check:fast — typecheck and lint passed on pre-push
  • Pre-commit oxlint and oxfmt passed on this commit

Compatibility, safety, and release

  • Breaking changes or migration steps: none. Existing client configs are unchanged until setup or uninstall runs. Grok Build registration is additive except for removing the rea name from disabled_mcp_servers.
  • Real Hopper/Ghidra, browser, or OS coverage: not applicable.
  • Package or release metadata impact: no version bump. Docs, READMEs, the website get-started and FAQ pages, and the skill source list the new clients.
  • Security, privacy, process, or containment review: setup does not read or write unrelated Grok settings, and it does not send the Grok Bot registration to the account API.

Review checklist

  • The PR has one focused outcome and the title follows type(scope): outcome.
  • Related issue is linked, or the reason for not linking one is stated above. Continues #1132; no separate issue is filed.
  • Tests cover changed observable behavior and meaningful failure paths.
  • Owning docs, contracts, and generated metadata are updated where needed.
  • User-visible CLI/MCP changes include representative output.
  • I checked the final diff for secrets, unrelated cleanup, and unsupported claims.
Open in Web Open in Cursor 

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/1136 **Author:** [@morluto](https://github.com/morluto) **Created:** 10/8/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `cursor/grok-client-cherry-pick-0b56` --- ### 📝 Commits (1) - [`2f2110a`](https://github.com/morluto/rea/commit/2f2110a8ba2e8ebef3b5559dbd38083d583fb311) feat(clients): register Grok Build and Grok Bot during setup ### 📊 Changes **23 files changed** (+2243 additions, -35 deletions) <details> <summary>View changed files</summary> 📝 `README.md` (+1 -1) 📝 `README_ar.md` (+1 -1) 📝 `README_ja.md` (+1 -1) 📝 `README_ko.md` (+1 -1) 📝 `README_zh.md` (+1 -1) 📝 `docs/installation.md` (+16 -1) 📝 `docs/roadmap.md` (+1 -1) 📝 `scripts/verify-package-environment.mjs` (+2 -0) 📝 `scripts/verify-package-update.mjs` (+2 -0) 📝 `scripts/verify-published-package.mjs` (+9 -0) 📝 `scripts/verify-windows-package.mjs` (+4 -0) 📝 `skill-src/reverse-engineer-anything/SKILL.md` (+1 -1) 📝 `src/application/ClientConfigurationDocument.ts` (+973 -11) 📝 `src/application/ClientRegistrationStatus.ts` (+14 -6) 📝 `src/application/SetupClientConfiguration.ts` (+10 -4) 📝 `src/application/SupportedClients.ts` (+33 -1) 📝 `src/application/Uninstall.ts` (+1 -1) 📝 `tests/boundary/filesystem/clientConfigurationDialects.test.ts` (+36 -0) 📝 `tests/boundary/filesystem/clientLifecycle.test.ts` (+1076 -0) 📝 `tests/boundary/filesystem/clientRegistrationStatus.test.ts` (+55 -1) _...and 3 more files_ </details> ### 📄 Description <!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## Summary Cherry-pick of #1132 onto current main, including the static-check and registration fixes. One commit, no merge. #1132 stays on the fork because that branch cannot accept a main merge that touches workflow files. ## Problem and expected behavior Setup already configured Claude Code, Codex, Cursor, Gemini CLI, Antigravity, GitHub Copilot CLI, and the other supported clients. It did not detect Grok Build or Grok Bot. Grok Build also suppresses a server named in the root `disabled_mcp_servers` list. Writing `[mcp_servers.rea]` and leaving `disabled_mcp_servers = ["rea"]` would keep REA suppressed while doctor reported the registration aligned. Setup now removes only the `rea` name from that list, keeps every other name, and doctor reports the registration stale until that name is gone. Uninstall of an inline `mcp_servers` table whose only server is REA keeps the comments around that entry. A detected Grok Build install receives `[mcp_servers.rea]` in its TOML config, with `startup_timeout_sec = 30`, edited without rewriting the rest of the file. A detected Grok Bot install receives `mcpServers.rea` in `mcp.json`. That file is the registration to add to the signed-in account. Setup does not call the account API. ## Change and scope Grok Build uses a `grok` document format. Parsing matches TOML, and serialization edits only the REA server tables and a root `disabled_mcp_servers` assignment that names `rea`. Comments, spacing, and unrelated settings stay in place. Codex keeps its existing full-document TOML rewrite. Grok Build is found from `GROK_HOME` or `~/.grok`. Grok Bot is found from an absolute `SAND_DATA_ROOT`, and otherwise from `~/.grokbot`. A relative or empty `SAND_DATA_ROOT` falls back to `~/.grokbot`. The shared skill stays under `~/.agents/skills`. The lifecycle suite is split into smaller suites so the test callback stays within the function-length check. The get-started page is reflowed to match the formatter. Translated READMEs keep main's short client list and add Grok Build and Grok Bot. Not included: copying another client's `mcp.json`, writing `mcpBoxServers`, calling Grok Bot's account API, or duplicating the skill into the Grok Build skill directory. ## Contract and boundary impact - Semantic owner and earliest changed stage: client setup and uninstall, at configuration write time. - CLI and MCP/tool-catalog contract: none. The MCP server tools are unchanged. Setup gains two client ids, `grok_build` and `grok_bot`. - Provider, bridge, target-format, or platform compatibility: none. - Evidence, artifact, provenance, or reconstruction contract: none. - Process execution, authorization, cleanup, or containment impact: none. Setup still writes only the local client config it already owns for other agents. - Generated metadata (`docs/public/product-catalog.json`), package, or installation impact (CI generates and validates ignored catalogs and `skills/`; edit authored instructions in `skill-src/` and never commit build outputs): `skill-src` names the two new client ids. Generated `skills/` and `docs/public/product-catalog.json` are not in this commit. ## Evidence and regression coverage - Tests added or updated: client lifecycle, registration status, configuration dialects, and the configuration document suite. Cases cover removing `rea` from `disabled_mcp_servers` (including a `\u` escape and a sole entry), reporting that registration stale, keeping comments when uninstall removes the only inline Grok server, and the surgical TOML edits. - Base reproduction or other evidence: #1132 static checks failed on `tests/boundary/filesystem/clientLifecycle.test.ts` (function longer than 150 lines) and `website/public/get-started/index.html` (format). - User-visible CLI/MCP output (if applicable): setup writes the stdio entry (`npx -y rea-agents@<version> mcp`, `startup_timeout_sec = 30`) and clears the Grok disable list. - Remaining proof gaps: packaged Windows and published-package verifier scripts were updated but not executed here. Real Grok Build and Grok Bot installs were not exercised in this environment. Not applicable to this client-registration change: - [ ] Observed, derived, and inferred claims remain distinguishable. - [ ] Artifact identity, source provenance, and failed attempts remain preserved. - [ ] Unsupported, incomplete, unavailable, or uncertain outcomes remain visible. ## Validation performed - `npm run test:focused -- tests/boundary/filesystem/clientLifecycle.test.ts tests/boundary/filesystem/clientRegistrationStatus.test.ts tests/boundary/filesystem/clientConfigurationDialects.test.ts src/application/ClientConfigurationDocument.test.ts` — 82 passed on the same tree before this cherry-pick - `npm run check:fast` — typecheck and lint passed on pre-push - Pre-commit oxlint and oxfmt passed on this commit ## Compatibility, safety, and release - Breaking changes or migration steps: none. Existing client configs are unchanged until setup or uninstall runs. Grok Build registration is additive except for removing the `rea` name from `disabled_mcp_servers`. - Real Hopper/Ghidra, browser, or OS coverage: not applicable. - Package or release metadata impact: no version bump. Docs, READMEs, the website get-started and FAQ pages, and the skill source list the new clients. - Security, privacy, process, or containment review: setup does not read or write unrelated Grok settings, and it does not send the Grok Bot registration to the account API. ## Review checklist - [x] The PR has one focused outcome and the title follows `type(scope): outcome`. - [x] Related issue is linked, or the reason for not linking one is stated above. Continues #1132; no separate issue is filed. - [x] Tests cover changed observable behavior and meaningful failure paths. - [x] Owning docs, contracts, and generated metadata are updated where needed. - [ ] User-visible CLI/MCP changes include representative output. - [x] I checked the final diff for secrets, unrelated cleanup, and unsupported claims. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-5298c7c7-9401-4a5b-9b0e-76d332f70b56?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/background-agent?bcId=bc-5298c7c7-9401-4a5b-9b0e-76d332f70b56&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-17 21:08:53 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#2673
No description provided.