[GH-ISSUE #1650] [Setup] Track npm 6.3.0 client release drift and ignored OpenCode config override #558

Closed
opened 2026-10-15 18:26:08 +00:00 by bsakaguchi · 1 comment
Owner

Originally created by @morluto on GitHub (Oct 10, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/1650

The published setup experience still differs from current main for client selection and OpenCode configuration paths. This follows up on #1626: that documentation fix explains Pi/Hermes, but Qwen has the same release boundary, and the released OpenCode installer ignores a configured directory override.

Verified environment

  • npm dist-tags.latest: 6.3.0, checked 2026-10-11.
  • Actual registry package: rea-agents@6.3.0, executed through npm exec from a temporary directory with an isolated home.
  • macOS, supported Node 24 runtime. An initial Node 25 invocation was correctly rejected before configuration changes; it is excluded from the results below.
  • Source comparison: 1b527f48985293fc0718fcf2b0fad6b3ced6bbcb.

Observed behavior

  1. Each of setup --client qwen_code, setup --client pi, and setup --client hermes, with --skill=false --dry-run --json, exits 1 with VALIDATION_ERROR: Unsupported agent integration. All three integrations exist in current source.
  2. With OPENCODE_CONFIG_DIR=<temporary-home>/opencode-profile, released setup --client opencode --skill=false --dry-run --json plans <temporary-home>/.config/opencode/opencode.json, rather than the selected override directory. Current source selects the override directory even when it does not yet exist.
  3. The other 14 source-supported automatic client IDs produced successful package dry-run plans. No client configurations were written by these probes. This verifies planning and argument admission, not live integration with every client.

Reproduce

Use an already installed supported Node runtime, then run this from a clean directory:

import json
import os
import subprocess
import tempfile

with tempfile.TemporaryDirectory(prefix="rea-setup-repro-") as root:
    environment = {
        "PATH": os.environ["PATH"],
        "HOME": root,
        "USERPROFILE": root,
        "NO_COLOR": "1",
        "OPENCODE_CONFIG_DIR": root + "/opencode-profile",
    }
    for client in ["qwen_code", "pi", "hermes", "opencode"]:
        result = subprocess.run(
            ["npm", "exec", "--yes", "--package=rea-agents@6.3.0", "--",
             "rea", "setup", "--client", client, "--skill=false",
             "--dry-run", "--json"],
            cwd=root, env=environment, capture_output=True, text=True,
            timeout=90,
        )
        print(client, result.returncode, result.stdout)

Expected resolution

  • Extend the explicit release-boundary documentation to Qwen as well as Pi/Hermes, including nearby setup commands; avoid implying that @latest can select unpublished integrations.
  • Track publication of the already implemented client integrations and OpenCode override handling.
  • Verify the actual registry package after release: all intended client IDs must be admitted, and OpenCode must plan the selected override path.
  • Keep source-build and published-package evidence separate. Do not silently install development builds or upgrade external runtimes as a workaround.

Related: #1626 (closed Pi/Hermes release-scope documentation correction), #1522 (closed source skill-client-list correction). No REA source change was made during these probes.

Originally created by @morluto on GitHub (Oct 10, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/1650 The published setup experience still differs from current main for client selection and OpenCode configuration paths. This follows up on #1626: that documentation fix explains Pi/Hermes, but Qwen has the same release boundary, and the released OpenCode installer ignores a configured directory override. ### Verified environment - npm `dist-tags.latest`: `6.3.0`, checked 2026-10-11. - Actual registry package: `rea-agents@6.3.0`, executed through `npm exec` from a temporary directory with an isolated home. - macOS, supported Node 24 runtime. An initial Node 25 invocation was correctly rejected before configuration changes; it is excluded from the results below. - Source comparison: `1b527f48985293fc0718fcf2b0fad6b3ced6bbcb`. ### Observed behavior 1. Each of `setup --client qwen_code`, `setup --client pi`, and `setup --client hermes`, with `--skill=false --dry-run --json`, exits 1 with `VALIDATION_ERROR: Unsupported agent integration`. All three integrations exist in current source. 2. With `OPENCODE_CONFIG_DIR=<temporary-home>/opencode-profile`, released `setup --client opencode --skill=false --dry-run --json` plans `<temporary-home>/.config/opencode/opencode.json`, rather than the selected override directory. Current source selects the override directory even when it does not yet exist. 3. The other 14 source-supported automatic client IDs produced successful package dry-run plans. No client configurations were written by these probes. This verifies planning and argument admission, not live integration with every client. ### Reproduce Use an already installed supported Node runtime, then run this from a clean directory: ```python import json import os import subprocess import tempfile with tempfile.TemporaryDirectory(prefix="rea-setup-repro-") as root: environment = { "PATH": os.environ["PATH"], "HOME": root, "USERPROFILE": root, "NO_COLOR": "1", "OPENCODE_CONFIG_DIR": root + "/opencode-profile", } for client in ["qwen_code", "pi", "hermes", "opencode"]: result = subprocess.run( ["npm", "exec", "--yes", "--package=rea-agents@6.3.0", "--", "rea", "setup", "--client", client, "--skill=false", "--dry-run", "--json"], cwd=root, env=environment, capture_output=True, text=True, timeout=90, ) print(client, result.returncode, result.stdout) ``` ### Expected resolution - Extend the explicit release-boundary documentation to Qwen as well as Pi/Hermes, including nearby setup commands; avoid implying that `@latest` can select unpublished integrations. - Track publication of the already implemented client integrations and OpenCode override handling. - Verify the actual registry package after release: all intended client IDs must be admitted, and OpenCode must plan the selected override path. - Keep source-build and published-package evidence separate. Do not silently install development builds or upgrade external runtimes as a workaround. Related: #1626 (closed Pi/Hermes release-scope documentation correction), #1522 (closed source skill-client-list correction). No REA source change was made during these probes.
bsakaguchi 2026-10-15 18:26:08 +00:00
Author
Owner

@CassieFox23 commented on GitHub (Oct 11, 2026):

TL;DR: On Linux, rea-agents 6.4.0 fixes both problems from this issue. The three missing clients (qwen_code, pi, hermes) now plan fine. OpenCode now plans the OPENCODE_CONFIG_DIR path.

I reran the issue's probes on Linux. I used the same method: npm exec of the registry package from a temporary directory, with an isolated home. Every run was a dry run with --skill=false --dry-run --json. Release 6.4.0 was published at 04:02 UTC on 2026-10-11.

  • Item 1 is fixed on Linux. Item 2 is fixed on Linux, whether or not the override directory exists.
  • 6.3.0 still shows both problems on Linux. That matches the macOS report in the issue.
  • Node 22.23.1, 24.18.0 and 26.11.1 all gave the same result.

Focus clients, Node 24.18.0

Probe 6.3.0 6.4.0
qwen_code exit 1, unsupported exit 0, $HOME/.qwen/settings.json
pi exit 1, unsupported exit 0, $HOME/.pi/agent/mcp.json
hermes exit 1, unsupported exit 0, $HOME/.hermes/config.yaml
opencode, override dir does not exist exit 0, $HOME/.config/opencode/opencode.json exit 0, $HOME/opencode-profile/opencode.json
opencode, override dir exists exit 0, $HOME/.config/opencode/opencode.json exit 0, $HOME/opencode-existing/opencode.json

With no override set, OpenCode plans $HOME/.config/opencode/opencode.json on both versions. In the table, $HOME is the throwaway home. Node 22.23.1 and 26.11.1 ran the same four probes, with the override directory missing for OpenCode. Their results match the first four rows of the table.

Nothing was written. The throwaway home held no files after the runs. The real ~/.config/opencode had the same timestamp and file list before and after.

All 18 client IDs, Node 24.18.0

The setup --help text does not list client IDs. I took the 18 IDs from dist/application/SupportedClients.js in the 6.4.0 package.

Client ID 6.3.0 6.4.0
claude_code exit 0, $HOME/.claude.json exit 0, $HOME/.claude.json
claude_desktop exit 0, $HOME/.config/Claude/claude_desktop_config.json exit 0, $HOME/.config/Claude/claude_desktop_config.json
codex exit 0, $HOME/.codex/config.toml exit 0, $HOME/.codex/config.toml
cursor exit 0, $HOME/.cursor/mcp.json exit 0, $HOME/.cursor/mcp.json
gemini_cli exit 0, $HOME/.gemini/settings.json exit 0, $HOME/.gemini/settings.json
windsurf exit 0, $HOME/.codeium/windsurf/mcp_config.json exit 0, $HOME/.codeium/windsurf/mcp_config.json
devin exit 0, $HOME/.config/devin/mcp_config.json exit 0, $HOME/.config/devin/mcp_config.json
opencode exit 0, $HOME/.config/opencode/opencode.json exit 0, $HOME/.config/opencode/opencode.json
antigravity exit 0, $HOME/.gemini/config/mcp_config.json exit 0, $HOME/.gemini/config/mcp_config.json
copilot_cli exit 0, $HOME/.copilot/mcp-config.json exit 0, $HOME/.copilot/mcp-config.json
commandcode exit 0, $HOME/.commandcode/mcp.json exit 0, $HOME/.commandcode/mcp.json
qwen_code exit 1, unsupported exit 0, $HOME/.qwen/settings.json
vscode exit 0, $HOME/.config/Code/User/mcp.json exit 0, $HOME/.config/Code/User/mcp.json
grok_build exit 0, $HOME/.grok/config.toml exit 0, $HOME/.grok/config.toml
omp exit 0, $HOME/.omp/agent/mcp.json exit 0, $HOME/.omp/agent/mcp.json
pi exit 1, unsupported exit 0, $HOME/.pi/agent/mcp.json
hermes exit 1, unsupported exit 0, $HOME/.hermes/config.yaml
grok_bot exit 0, no file (manual) exit 0, no file (manual)

The 15 clients that 6.3.0 already accepted give the same result in 6.4.0. The grok_bot client plans no file on either version, because Grok Bot needs manual registration.

Not run

  • macOS and Windows.
  • Real installs. Every run was a dry run.
  • Other home overrides, such as QWEN_HOME.

Thanks, morluto, for the clear report and the repro script.

Test setup
  • Box: Nobara 44 (Fedora 44 base), Linux 7.2.9
  • CPU: AMD Ryzen 9 5900X, 12 cores / 24 threads
  • RAM: 32 GB DDR4-3600
  • Node: 22.23.1, 24.18.0, 26.11.1
  • Packages: rea-agents 6.3.0 and 6.4.0 from npm

🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊

<!-- gh-comment-id:6105581943 --> @CassieFox23 commented on GitHub (Oct 11, 2026): **TL;DR:** On Linux, rea-agents 6.4.0 fixes both problems from this issue. The three missing clients (qwen_code, pi, hermes) now plan fine. OpenCode now plans the `OPENCODE_CONFIG_DIR` path. I reran the issue's probes on Linux. I used the same method: `npm exec` of the registry package from a temporary directory, with an isolated home. Every run was a dry run with `--skill=false --dry-run --json`. Release 6.4.0 was published at 04:02 UTC on 2026-10-11. - Item 1 is fixed on Linux. Item 2 is fixed on Linux, whether or not the override directory exists. - 6.3.0 still shows both problems on Linux. That matches the macOS report in the issue. - Node 22.23.1, 24.18.0 and 26.11.1 all gave the same result. ### Focus clients, Node 24.18.0 | Probe | 6.3.0 | 6.4.0 | |---|---|---| | qwen_code | exit 1, unsupported | exit 0, `$HOME/.qwen/settings.json` | | pi | exit 1, unsupported | exit 0, `$HOME/.pi/agent/mcp.json` | | hermes | exit 1, unsupported | exit 0, `$HOME/.hermes/config.yaml` | | opencode, override dir does not exist | exit 0, `$HOME/.config/opencode/opencode.json` | exit 0, `$HOME/opencode-profile/opencode.json` | | opencode, override dir exists | exit 0, `$HOME/.config/opencode/opencode.json` | exit 0, `$HOME/opencode-existing/opencode.json` | With no override set, OpenCode plans `$HOME/.config/opencode/opencode.json` on both versions. In the table, `$HOME` is the throwaway home. Node 22.23.1 and 26.11.1 ran the same four probes, with the override directory missing for OpenCode. Their results match the first four rows of the table. Nothing was written. The throwaway home held no files after the runs. The real `~/.config/opencode` had the same timestamp and file list before and after. <details> <summary>All 18 client IDs, Node 24.18.0</summary> The `setup --help` text does not list client IDs. I took the 18 IDs from `dist/application/SupportedClients.js` in the 6.4.0 package. | Client ID | 6.3.0 | 6.4.0 | |---|---|---| | claude_code | exit 0, `$HOME/.claude.json` | exit 0, `$HOME/.claude.json` | | claude_desktop | exit 0, `$HOME/.config/Claude/claude_desktop_config.json` | exit 0, `$HOME/.config/Claude/claude_desktop_config.json` | | codex | exit 0, `$HOME/.codex/config.toml` | exit 0, `$HOME/.codex/config.toml` | | cursor | exit 0, `$HOME/.cursor/mcp.json` | exit 0, `$HOME/.cursor/mcp.json` | | gemini_cli | exit 0, `$HOME/.gemini/settings.json` | exit 0, `$HOME/.gemini/settings.json` | | windsurf | exit 0, `$HOME/.codeium/windsurf/mcp_config.json` | exit 0, `$HOME/.codeium/windsurf/mcp_config.json` | | devin | exit 0, `$HOME/.config/devin/mcp_config.json` | exit 0, `$HOME/.config/devin/mcp_config.json` | | opencode | exit 0, `$HOME/.config/opencode/opencode.json` | exit 0, `$HOME/.config/opencode/opencode.json` | | antigravity | exit 0, `$HOME/.gemini/config/mcp_config.json` | exit 0, `$HOME/.gemini/config/mcp_config.json` | | copilot_cli | exit 0, `$HOME/.copilot/mcp-config.json` | exit 0, `$HOME/.copilot/mcp-config.json` | | commandcode | exit 0, `$HOME/.commandcode/mcp.json` | exit 0, `$HOME/.commandcode/mcp.json` | | qwen_code | exit 1, unsupported | exit 0, `$HOME/.qwen/settings.json` | | vscode | exit 0, `$HOME/.config/Code/User/mcp.json` | exit 0, `$HOME/.config/Code/User/mcp.json` | | grok_build | exit 0, `$HOME/.grok/config.toml` | exit 0, `$HOME/.grok/config.toml` | | omp | exit 0, `$HOME/.omp/agent/mcp.json` | exit 0, `$HOME/.omp/agent/mcp.json` | | pi | exit 1, unsupported | exit 0, `$HOME/.pi/agent/mcp.json` | | hermes | exit 1, unsupported | exit 0, `$HOME/.hermes/config.yaml` | | grok_bot | exit 0, no file (manual) | exit 0, no file (manual) | The 15 clients that 6.3.0 already accepted give the same result in 6.4.0. The `grok_bot` client plans no file on either version, because Grok Bot needs manual registration. </details> ### Not run - macOS and Windows. - Real installs. Every run was a dry run. - Other home overrides, such as `QWEN_HOME`. Thanks, morluto, for the clear report and the repro script. <details> <summary>Test setup</summary> - Box: Nobara 44 (Fedora 44 base), Linux 7.2.9 - CPU: AMD Ryzen 9 5900X, 12 cores / 24 threads - RAM: 32 GB DDR4-3600 - Node: 22.23.1, 24.18.0, 26.11.1 - Packages: rea-agents 6.3.0 and 6.4.0 from npm </details> 🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊
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#558
No description provided.