@link-assistant/hive-mind 1.50.10 → 1.50.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @link-assistant/hive-mind
2
2
 
3
+ ## 1.50.12
4
+
5
+ ### Patch Changes
6
+
7
+ - 065deae: ## Summary
8
+
9
+ Fix Playwright MCP setup guidance and verification for Codex environments.
10
+
11
+ ## 1.50.11
12
+
13
+ ### Patch Changes
14
+
15
+ - bf9cf54: Fix prompt template builders crashing when literal `.png` appears in screenshot guidance.
16
+
3
17
  ## 1.50.10
4
18
 
5
19
  ### Patch Changes
package/README.md CHANGED
@@ -174,6 +174,10 @@ claude
174
174
  # Optionally test Claude connection
175
175
  claude -p hi --model haiku
176
176
 
177
+ # Verify Playwright MCP is registered for both CLIs in this container image
178
+ claude mcp list | grep playwright
179
+ codex mcp list | grep playwright
180
+
177
181
  # You might need to update hive-mind and agent to latest versions:
178
182
  bun install -g @link-assistant/hive-mind
179
183
  bun install -g @link-assistant/agent
@@ -195,25 +199,28 @@ docker attach hive-mind
195
199
 
196
200
  # --- Persisting auth data across restarts ---
197
201
 
198
- # Extract auth data from a running (or stopped) container to the host:
199
- mkdir -p ~/.hive-mind
200
- docker cp hive-mind:/workspace/.claude ~/.hive-mind/claude
201
- docker cp hive-mind:/workspace/.claude.json ~/.hive-mind/claude.json
202
- docker cp hive-mind:/workspace/.config/gh ~/.hive-mind/gh
203
-
204
- # Fix ownership to match the sandbox user inside the container:
205
- SANDBOX_UID=$(docker exec hive-mind id -u sandbox)
206
- chown -R $SANDBOX_UID:$SANDBOX_UID ~/.hive-mind/claude ~/.hive-mind/gh
207
- chown $SANDBOX_UID:$SANDBOX_UID ~/.hive-mind/claude.json
202
+ # On the host, create the directories used by the current Docker workflow:
203
+ mkdir -p /root/.hive-mind/claude /root/.hive-mind/codex /root/.hive-mind/gh
204
+ touch -a /root/.hive-mind/claude.json
208
205
 
209
- # On subsequent runs, mount the auth data to keep it between restarts:
210
- docker run -dit \
211
- --name hive-mind \
212
- --restart unless-stopped \
206
+ # In our Docker images HOME=/workspace, so Codex stores its data in /workspace/.codex.
207
+ # Mount the full Codex directory so auth.json, config.toml, and sessions survive restarts.
208
+ docker run -dit --user sandbox --name hive-mind --restart unless-stopped \
213
209
  -v /root/.hive-mind/claude:/workspace/.claude \
210
+ -v /root/.hive-mind/codex:/workspace/.codex \
214
211
  -v /root/.hive-mind/claude.json:/workspace/.claude.json \
215
212
  -v /root/.hive-mind/gh:/workspace/.config/gh \
216
- konard/hive-mind:latest
213
+ konard/hive-mind:latest bash -l -c 'bash /workspace/start-bot.sh'
214
+
215
+ # After the first start, fix ownership to match the sandbox user inside the container:
216
+ SANDBOX_UID=$(docker exec hive-mind id -u sandbox)
217
+ chown -R $SANDBOX_UID:$SANDBOX_UID /root/.hive-mind/claude /root/.hive-mind/codex /root/.hive-mind/gh
218
+ chown $SANDBOX_UID:$SANDBOX_UID /root/.hive-mind/claude.json
219
+
220
+ # Important: mounted ~/.codex data overrides the image-baked Codex config.
221
+ # If the host directory was created before Playwright MCP was added to the image,
222
+ # re-register it once inside the running container:
223
+ docker exec -it hive-mind bash -lc 'codex mcp list && codex mcp add playwright -- npx -y @playwright/mcp@latest --isolated --headless --no-sandbox --timeout-action=600000 --viewport-size 1920x1080'
217
224
  ```
218
225
 
219
226
  **Benefits of Docker:**
@@ -224,6 +231,8 @@ docker run -dit \
224
231
  - ✅ Easy to run multiple instances with different GitHub accounts
225
232
  - ✅ Consistent environment across different machines
226
233
 
234
+ The Docker image itself now registers Playwright MCP for both Claude and Codex during build, and CI verifies those registrations in the built container. If `codex mcp list` is still empty in a running container, the usual cause is not the published image itself but a mounted `/workspace/.codex` directory from the host that replaces the image's default Codex configuration.
235
+
227
236
  See [docs/DOCKER.md](./docs/DOCKER.md) for advanced Docker usage.
228
237
 
229
238
  #### Stoping and removing docker container
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@link-assistant/hive-mind",
3
- "version": "1.50.10",
3
+ "version": "1.50.12",
4
4
  "description": "AI-powered issue solver and hive mind for collaborative problem solving",
5
5
  "main": "src/hive.mjs",
6
6
  "type": "module",
@@ -20,8 +20,8 @@
20
20
  "lint": "eslint 'src/**/*.{js,mjs,cjs}'",
21
21
  "lint:fix": "eslint 'src/**/*.{js,mjs,cjs}' --fix",
22
22
  "check:duplication": "jscpd .",
23
- "format": "prettier --write \"**/*.{js,mjs,json,md}\"",
24
- "format:check": "prettier --check \"**/*.{js,mjs,json,md}\"",
23
+ "format": "prettier --write \"**/*.{js,mjs,json,md}\" --ignore-path .prettierignore",
24
+ "format:check": "prettier --check \"**/*.{js,mjs,json,md}\" --ignore-path .prettierignore",
25
25
  "changeset": "changeset",
26
26
  "changeset:version": "changeset version",
27
27
  "changeset:publish": "npm run build:pre && changeset publish",
@@ -0,0 +1,34 @@
1
+ ## Summary
2
+
3
+ Fixes #1606 by documenting and verifying Playwright MCP registration for Codex in addition to Claude Code, including the Docker-specific case where persisted Codex state overrides the image defaults.
4
+
5
+ ## Root Cause
6
+
7
+ The reported environment had `@playwright/mcp` installed and registered in Claude, but `codex mcp list` had no configured servers. The immediate cause was missing Codex MCP registration. Local reproduction confirmed that `/workspace/.codex/config.toml` can exist without a Playwright MCP entry and that `codex mcp add playwright ...` fixes the state immediately. In Docker deployments, the most likely explanation is that a host-mounted `/workspace/.codex` directory preserved an older Codex config and replaced the image-baked MCP registration. Existing docs and helper scripts also focused mainly on Claude setup, so the mismatch was easy to miss even though `/version` already reported it correctly.
8
+
9
+ ## Changes
10
+
11
+ - added regression coverage for the mixed MCP state where Claude is connected and Codex is not
12
+ - updated Playwright MCP verification and integration scripts to check Codex MCP registration explicitly
13
+ - updated Docker verification to fail if Claude or Codex is missing the Playwright MCP registration
14
+ - updated configuration and Docker docs to include both `claude mcp add ...` and `codex mcp add ...`
15
+ - documented that mounting `/workspace/.codex` can override the image defaults and reintroduce the problem
16
+ - added the investigation record and collected evidence under `docs/case-studies/issue-1606`
17
+
18
+ ## Reproduction
19
+
20
+ 1. Install `@playwright/mcp` and register it only with Claude.
21
+ 2. Run `claude mcp list` and confirm `playwright` is present.
22
+ 3. Run `codex mcp list` and observe `No MCP servers configured yet`.
23
+ 4. Run `/version` and observe `Playwright MCP: <version> | Claude Code: connected | Codex: not connected`.
24
+
25
+ ## Verification
26
+
27
+ - `node tests/test-version-info.mjs`
28
+ - `node tests/test-version-parsing.mjs`
29
+ - `bash scripts/verify-docker-image.sh`
30
+
31
+ ## Evidence
32
+
33
+ - case study: `docs/case-studies/issue-1606/README.md`
34
+ - PR: https://github.com/link-assistant/hive-mind/pull/1607
@@ -160,7 +160,7 @@ Initial research.
160
160
  - When you start, create a detailed plan for yourself and follow your todo list step by step. Add as many relevant points from these guidelines to the todo list as practical so you can track the work clearly.
161
161
  - When the user mentions CI failures or asks to investigate logs, consider adding these todos to track the investigation: (1) list recent CI runs with timestamps, (2) download logs from failed runs to the ci-logs/ directory, (3) analyze error messages and identify the root cause, (4) implement a fix, (5) verify that the fix resolves the specific errors found in the logs.
162
162
  - When you read the issue, read all details and comments thoroughly.
163
- - When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, download the image to a local file first, then use the Read tool to view and analyze it. Before reading downloaded images with the Read tool, verify that the file is a valid image rather than HTML by using a CLI tool such as the 'file' command. When corrupted or non-image files, such as GitHub "Not Found" pages saved as `.png`, are read, they can cause "Could not process image" errors and crash the AI solver process. When the file command shows "HTML", "text", or "ASCII text", the download failed, so do not call Read on that file. Instead: (1) when images are from GitHub issues or PRs, such as URLs containing "github.com/user-attachments", retry with: curl -L -H "Authorization: token $(gh auth token)" -o <filename> "<url>" (2) when the retry still fails, skip the image and note that it was unavailable.
163
+ - When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, download the image to a local file first, then use the Read tool to view and analyze it. Before reading downloaded images with the Read tool, verify that the file is a valid image rather than HTML by using a CLI tool such as the 'file' command. When corrupted or non-image files, such as GitHub "Not Found" pages saved as \`.png\`, are read, they can cause "Could not process image" errors and crash the AI solver process. When the file command shows "HTML", "text", or "ASCII text", the download failed, so do not call Read on that file. Instead: (1) when images are from GitHub issues or PRs, such as URLs containing "github.com/user-attachments", retry with: curl -L -H "Authorization: token $(gh auth token)" -o <filename> "<url>" (2) when the retry still fails, skip the image and note that it was unavailable.
164
164
  - When you need issue details, use gh issue view https://github.com/${owner}/${repo}/issues/${issueNumber}.
165
165
  - When you need related code, use gh search code --owner ${owner} [keywords].
166
166
  - When you need repo context, read files in your working directory.${
@@ -137,7 +137,7 @@ ${workspaceInstructions}
137
137
  Initial research.
138
138
  - When you start, create a detailed plan for yourself and follow your todo list step by step. Add as many relevant points from these guidelines to the todo list as practical so you can track the work clearly.
139
139
  - When you read the issue, read all details and comments thoroughly.
140
- - When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, download the image to a local file first, then use the Read tool to view and analyze it. Before reading downloaded images with the Read tool, verify that the file is a valid image rather than HTML by using a CLI tool such as the 'file' command. When corrupted or non-image files, such as GitHub "Not Found" pages saved as `.png`, are read, they can cause "Could not process image" errors and crash the AI solver process. When the file command shows "HTML", "text", or "ASCII text", the download failed, so do not call Read on that file. Instead: (1) when images are from GitHub issues or PRs, such as URLs containing "github.com/user-attachments", retry with: curl -L -H "Authorization: token $(gh auth token)" -o <filename> "<url>" (2) when the retry still fails, skip the image and note that it was unavailable.
140
+ - When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, download the image to a local file first, then use the Read tool to view and analyze it. Before reading downloaded images with the Read tool, verify that the file is a valid image rather than HTML by using a CLI tool such as the 'file' command. When corrupted or non-image files, such as GitHub "Not Found" pages saved as \`.png\`, are read, they can cause "Could not process image" errors and crash the AI solver process. When the file command shows "HTML", "text", or "ASCII text", the download failed, so do not call Read on that file. Instead: (1) when images are from GitHub issues or PRs, such as URLs containing "github.com/user-attachments", retry with: curl -L -H "Authorization: token $(gh auth token)" -o <filename> "<url>" (2) when the retry still fails, skip the image and note that it was unavailable.
141
141
  - When you need issue details, use gh issue view https://github.com/${owner}/${repo}/issues/${issueNumber}.
142
142
  - When you need related code, use gh search code --owner ${owner} [keywords].
143
143
  - When you need repo context, read files in your working directory.${