diff --git a/blueprint/ansible/group_vars/all/base.yml b/blueprint/ansible/group_vars/all/base.yml index 6f84ab4e..c08a49bd 100644 --- a/blueprint/ansible/group_vars/all/base.yml +++ b/blueprint/ansible/group_vars/all/base.yml @@ -54,10 +54,11 @@ crewship_tools_root: "{{ crewship_share_dir }}/tools" crewship_omp_root: "{{ crewship_share_dir }}/omp/{{ crewship_omp_version }}" # AXI must launch the chrome-devtools MCP build the installer installed (the # latest release) instead of resolving `npx ...@latest` at runtime. The -# installer re-points `current` at that release, so this text, and with it the -# Herdr unit and the profile block, stays the same between releases. Exported -# to the managed shell environment and to the Herdr service environment. -crewship_chrome_devtools_mcp_path: "{{ crewship_share_dir }}/chrome-devtools-mcp/current/node_modules/chrome-devtools-mcp/out/Default/gen/src/bin/chrome-devtools-mcp.js" +# installer links this command from the package's own `bin` field, so a release +# that moves its entry file still resolves, and this text, with it the Herdr +# unit and the profile block, stays the same between releases. Exported to the +# managed shell environment and to the Herdr service environment. +crewship_chrome_devtools_mcp_path: "{{ crewship_local_bin }}/chrome-devtools-mcp" # Environment shared by the interactive shell profile and the Herdr unit. # Consumed only when the agents profile is on, because the npm set that # provides the MCP entrypoint is installed by `--npm`. Nothing here may be a diff --git a/changelog.d/1341.fixed.md b/changelog.d/1341.fixed.md new file mode 100644 index 00000000..b906ef7f --- /dev/null +++ b/changelog.d/1341.fixed.md @@ -0,0 +1 @@ +Point the chrome-devtools MCP path at the command the installer links from the package's own `bin`, so a release that moves its entry file keeps working. diff --git a/docs/dependencies.md b/docs/dependencies.md index efb32d89..b27d10ff 100644 --- a/docs/dependencies.md +++ b/docs/dependencies.md @@ -136,7 +136,7 @@ Bun output stays in one labeled block per package, including command failures. - `agents` profile, native: gws, the Google Workspace CLI ([googleworkspace/cli](https://github.com/googleworkspace/cli/releases/latest), the static musl build), verified against the `.sha256` file the release publishes. Signing in Google accounts is manual: see [Google Workspace CLI](google-workspace.md). - `agents` profile, native: rtk ([rtk-ai/rtk](https://github.com/rtk-ai/rtk/releases/latest), the plain edition: the musl build for x86_64, the gnu build for arm64), verified against the line for its asset in the `checksums.txt` the release publishes. Apply then runs `rtk init -g --hook-only --auto-patch` and `rtk init -g --agent omp`, which add the command-rewrite hook to `~/.claude/settings.json` and the extension `~/.omp/agent/extensions/rtk.ts`. Each command reports no change when its hook is already present. `rtk gain` shows the tokens saved. - `agents` profile, no-mistakes ([kunchenguid/no-mistakes](https://github.com/kunchenguid/no-mistakes/releases)): the one tool that tracks the prerelease channel. Each apply resolves the newest non-draft release, betas included (not only the latest stable one), and verifies it against the GitHub release-asset digest. -- `agents` profile, bun: omp (`@oh-my-pi/pi-coding-agent`), chrome-devtools-axi, gh-axi, lavish-axi, quota-axi, tasks-axi, forgejo-axi (the no-mistakes Forgejo provider; see [no-mistakes](forgejo.md#no-mistakes)), [backpass](https://github.com/kunchenguid/backpass) (proposes evidence-backed edits to AGENTS.md and CLAUDE.md from real sessions; runs through acpx and lavish-axi), [api-anything](https://github.com/goodnight000/api-anything) (site operations over plain HTTP; see [api-anything](fleet-guards.md#api-anything)), acpx (runs `omp acp`; see [no-mistakes pipeline agent](omp.md#no-mistakes-pipeline-agent)), and chrome-devtools-mcp (the MCP build chrome-devtools-axi launches through `CHROME_DEVTOOLS_AXI_MCP_PATH`, which points at `~/.local/share/crewship/chrome-devtools-mcp/current`, a link the installer re-points at each release, so a new release never changes the Herdr unit or the `.profile` block and never restarts `herdr.service`). The fleet requires at least quota-axi 0.1.54 and tasks-axi 0.2.6. Shells and user units have `~/.bun/bin` on `PATH`, after `~/.local/bin`, for tools you add yourself with `bun add -g`. +- `agents` profile, bun: omp (`@oh-my-pi/pi-coding-agent`), chrome-devtools-axi, gh-axi, lavish-axi, quota-axi, tasks-axi, forgejo-axi (the no-mistakes Forgejo provider; see [no-mistakes](forgejo.md#no-mistakes)), [backpass](https://github.com/kunchenguid/backpass) (proposes evidence-backed edits to AGENTS.md and CLAUDE.md from real sessions; runs through acpx and lavish-axi), [api-anything](https://github.com/goodnight000/api-anything) (site operations over plain HTTP; see [api-anything](fleet-guards.md#api-anything)), acpx (runs `omp acp`; see [no-mistakes pipeline agent](omp.md#no-mistakes-pipeline-agent)), and chrome-devtools-mcp (the MCP build chrome-devtools-axi launches through `CHROME_DEVTOOLS_AXI_MCP_PATH`, which points at `~/.local/bin/chrome-devtools-mcp`, the command the installer links from the package `bin` field and re-points at each release, so a new release never changes the Herdr unit or the `.profile` block and never restarts `herdr.service`). The fleet requires at least quota-axi 0.1.54 and tasks-axi 0.2.6. Shells and user units have `~/.bun/bin` on `PATH`, after `~/.local/bin`, for tools you add yourself with `bun add -g`. See [Diagrams](#diagrams) for the Ondine entry. - `agents` profile, no-mistakes pi adapter check: every apply downloads four pi adapter source files of the no-mistakes release it installs from `raw.githubusercontent.com` (each fetch gives up after 30 seconds) and compares them with the sha256 pins in `blueprint/config/omp-as-pi/check-adapter.sh`. A source that differs from its pin, or is gone from the tag (HTTP 404), switches the gate agent to `acp:omp`; a network error, a timeout or any other HTTP status leaves the agent setting as it is and prints a warning; neither fails the apply (see [no-mistakes pipeline agent](omp.md#no-mistakes-pipeline-agent)). - Retired: codex and pnpm are no longer installed (bun is the single package manager and runner; omp is the pi agent). An apply on a host that still has them removes the `codex`, `pnpm` and `pnpx` links in `~/.local/bin` that point into the old `~/.local/share/crewship/npm` prefix and changes `defaultAgent` in `~/.acpx/config.json` from `codex` to `omp` when it is still `codex`. The old prefix stays on disk, like every superseded install, so shells and AXI bridges started before the upgrade keep their files; delete it by hand when nothing uses it. Commands of the same name installed any other way are left alone. diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 62baf039..eabae2b7 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1080,9 +1080,7 @@ def test_the_managed_environment_never_carries_a_process_wide_runtime_limit(tmp_ def test_a_new_chrome_devtools_mcp_release_leaves_the_managed_environment_unchanged(tmp_path): before = _managed_environment(tmp_path, True, "1.0.0") assert _managed_environment(tmp_path, True, "1.1.0") == before - assert before["CHROME_DEVTOOLS_AXI_MCP_PATH"].endswith( - "/chrome-devtools-mcp/current/node_modules/chrome-devtools-mcp/out/Default/gen/src/bin/chrome-devtools-mcp.js" - ) + assert before["CHROME_DEVTOOLS_AXI_MCP_PATH"] == f"{tmp_path}/.local/bin/chrome-devtools-mcp" def test_board_environment_reaches_new_shells_and_agents_and_is_removed_on_opt_out(tmp_path): @@ -1146,8 +1144,7 @@ def test_board_environment_reaches_new_shells_and_agents_and_is_removed_on_opt_o ) assert shell.stdout.splitlines() == [ socket if board is not None else "unset", - f"{tmp_path}/.local/share/crewship/chrome-devtools-mcp/current/" - "node_modules/chrome-devtools-mcp/out/Default/gen/src/bin/chrome-devtools-mcp.js", + f"{tmp_path}/.local/bin/chrome-devtools-mcp", ] for line in ( 'Environment="FM_OMP_ARM_READY_TIMEOUT_MS=45000"',