diff --git a/docs/installation.md b/docs/installation.md index b23bd3825..a76b824a2 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -68,7 +68,15 @@ selects the npm release, and persistent MCP registrations are pinned to the version that performed setup. Installing newer instructions does not update a running server or its registration. -The release checked on **2026-10-07** was **5.0.0** (133 MCP tools), published +The npm release checked on **2026-10-10** was **6.3.0**, published from +[`74cf9e14`](https://github.com/morluto/rea/commit/74cf9e1401fcd89482fe39c27cc898f5858e9b72), +with bundled skill version 34. It does not include automatic Pi or Hermes +registration: `setup --client pi` and `setup --client hermes` reject those IDs +before writing configuration. Their setup workflows below require a source build +or a later release containing those integrations; `@latest` alone cannot select +unpublished changes. + +The earlier release checked on **2026-10-07** was **5.0.0** (133 MCP tools), published from the fixed checkpoint [`b33236ec`](https://github.com/morluto/rea/releases/tag/rea-agents-5.0.0). The public CLI, MCP catalog and target-free session, and isolated update from @@ -155,6 +163,9 @@ schema constraints; REA still validates complete canonical inputs. Full-profile Windows remain unverified; see [native client verification](testing.md). For [Pi](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/mcp.md), +automatic setup requires a build containing the integration; npm 6.3.0 does not +include it. See [released package and main](#released-package-and-main). +In a supported build, setup writes a `type: "stdio"` entry under `mcpServers.rea` in the user-level `~/.pi/agent/mcp.json` and installs the bundled skill under `~/.agents/skills`. Use `rea setup --client pi --dry-run --json` to inspect the plan, then @@ -213,7 +224,10 @@ registration. Doctor treats an `enabled: false` entry as active when `enabledServers` lists `rea`, as OMP does, unless `disabledServers` also lists it. Run setup under each profile that should load REA. -For Hermes, setup writes a `mcp_servers.rea` entry to `config.yaml`, preserving +For Hermes, automatic setup also requires a build containing the integration; +npm 6.3.0 does not include it. See +[released package and main](#released-package-and-main). +In a supported build, setup writes a `mcp_servers.rea` entry to `config.yaml`, preserving comments and unrelated settings. It resolves that file from `HERMES_HOME`, else from the platform default Hermes itself uses — `%LOCALAPPDATA%\hermes` on Windows, `~/.hermes` elsewhere — including any `HERMES_DATA_DIR_SUFFIX`. Hermes diff --git a/docs/testing.md b/docs/testing.md index c1e53717a..98054e951 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -99,9 +99,12 @@ result that its client offloads, and Pi exercises default codemode execution. Use `REA_VERIFY_RUNTIME_ROOT` to select a production-only installed REA package. Receipts retain client versions, result digests, host coverage and owned-process cleanup. These POSIX lanes use a deterministic loopback model, so they do not -prove live model-provider or native Windows compatibility. Qwen and Pi use -caller-configured skill directories to isolate the fixture account from the OS -home; this does not prove their default home-directory discovery. +prove live model-provider or native Windows compatibility. Pi and Hermes bind +both `HOME` and `USERPROFILE` to the disposable account. Pi discovers the shared +personal skill through its default search path without an explicit skill setting; +Hermes discovers it through the selected `HERMES_HOME`. Qwen uses a +caller-configured skill directory; its default home-directory discovery remains +unverified. Set `REA_VERIFY_HERMES_STICKY_PROFILE=1` to exercise native Hermes selection of a named sticky profile with `HERMES_HOME` still pointing to its root. @@ -243,8 +246,9 @@ unverified; skill discovery uses an explicit isolated custom directory. verified with `@deepseek-ai/dsh@0.2.0-rc.2`) and Git. Set `REA_VERIFY_DEEPSEEK_COMMAND` to select its executable. This optional POSIX lane installs the skill through `rea setup --skill`, writes the native Cordis MCP -patch into an isolated `DSH_HOME`, and uses `DSH_AGENTS_HOME` for native personal -skill discovery. A separate Git root prevents inherited project skills from +patch into an isolated `DSH_HOME`, and binds `HOME` and `USERPROFILE` to the +disposable account. The native default `~/.agents/skills` search path discovers +the installed skill without a `DSH_AGENTS_HOME` override. A separate Git root prevents inherited project skills from masking a missing installation. The default `call` mode checks skill loading, complete catalog discovery, the actual forwarded input schemas and regexes, and full JavaScript Evidence for a Unicode path. Use `-- chat` for ordinary diff --git a/scripts/verify-deepseek-client.mjs b/scripts/verify-deepseek-client.mjs index d53131a88..12aed2a1e 100644 --- a/scripts/verify-deepseek-client.mjs +++ b/scripts/verify-deepseek-client.mjs @@ -40,9 +40,9 @@ await Promise.all([ ]); const environment = { PATH: process.env.PATH ?? "", + HOME: account, USERPROFILE: account, DSH_HOME: profile, - DSH_AGENTS_HOME: join(account, ".agents"), OPENAI_API_KEY: "local-fixture-key", REA_PROCESS_RUN_ID: verifier.run_id, }; @@ -328,7 +328,7 @@ try { "loopback custom OpenAI-compatible adapter; no live DeepSeek provider claim", modelContextWindow: 1000000, skillDiscovery: - "native DSH_AGENTS_HOME personal directory; isolated project root", + "native HOME shared personal directory; isolated project root", catalogSize: catalog?.length, patternCount, uniquePatterns: patterns.size, diff --git a/scripts/verify-native-agent-client.mjs b/scripts/verify-native-agent-client.mjs index 5b6600479..af2ab0cec 100644 --- a/scripts/verify-native-agent-client.mjs +++ b/scripts/verify-native-agent-client.mjs @@ -54,6 +54,7 @@ await writeFile( ); const environment = { PATH: process.env.PATH ?? "", + HOME: account, USERPROFILE: account, [client === "pi" ? "PI_CODING_AGENT_DIR" : "HERMES_HOME"]: profile, PI_OFFLINE: "1", @@ -71,13 +72,6 @@ const original = }) : "# Keep caller settings.\nmcp_servers:\n other:\n command: unrelated-server\n enabled: false\n"; await writeFile(configPath, original); -if (client === "pi") { - // The CLI fixture account and native os.homedir() differ; use Pi's caller-owned skill setting. - await writeFile( - join(profile, "settings.json"), - JSON.stringify({ skills: [join(account, ".agents", "skills")] }), - ); -} const clientVersion = ( await exec(command, ["--version"], { env: environment, timeout: 30_000 }) ).stdout.trim(); @@ -448,7 +442,7 @@ try { "loopback deterministic OpenAI-compatible endpoint; no live provider claim", skillDiscovery: client === "pi" - ? "caller-configured isolated shared directory; default OS home discovery unverified" + ? "native HOME shared personal directory; no explicit skill setting" : "native HERMES_HOME personal directory", stickyHermes, catalogSize: catalog?.length,