quadwork 1.19.2 → 2.0.0

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.
Files changed (117) hide show
  1. package/README.md +19 -35
  2. package/bin/quadwork.js +48 -1118
  3. package/out/404.html +1 -1
  4. package/out/__next.__PAGE__.txt +3 -3
  5. package/out/__next._full.txt +14 -14
  6. package/out/__next._head.txt +4 -4
  7. package/out/__next._index.txt +8 -8
  8. package/out/__next._tree.txt +2 -2
  9. package/out/_next/static/chunks/{030cjkhts487t.js → 079wdniva~de1.js} +1 -1
  10. package/out/_next/static/chunks/{0n~dq4kpx9xxx.js → 07lhk_q6pmm3r.js} +1 -1
  11. package/out/_next/static/chunks/0_79hkefw1mo2.js +1 -0
  12. package/out/_next/static/chunks/{153f.fj8jlvle.js → 0_lyyn..t63bc.js} +1 -1
  13. package/out/_next/static/chunks/0oxv9vrvc17to.js +2 -0
  14. package/out/_next/static/chunks/0py7102i226n5.js +1 -0
  15. package/out/_next/static/chunks/{13fv-yi7.v52g.js → 0q4bm04c1jl_3.js} +1 -1
  16. package/out/_next/static/chunks/{0_idxioyl0p7h.js → 0sjhy6oe3mbon.js} +1 -1
  17. package/out/_next/static/chunks/13xk0vgfbrcld.css +2 -0
  18. package/out/_next/static/chunks/14k3bfe537f9_.js +25 -0
  19. package/out/_next/static/chunks/{turbopack-0qm-e3ifrz~2u.js → turbopack-0y2u-q0l2m67w.js} +1 -1
  20. package/out/_not-found/__next._full.txt +13 -13
  21. package/out/_not-found/__next._head.txt +4 -4
  22. package/out/_not-found/__next._index.txt +8 -8
  23. package/out/_not-found/__next._not-found.__PAGE__.txt +2 -2
  24. package/out/_not-found/__next._not-found.txt +3 -3
  25. package/out/_not-found/__next._tree.txt +2 -2
  26. package/out/_not-found.html +1 -1
  27. package/out/_not-found.txt +13 -13
  28. package/out/app-shell/__next._full.txt +13 -13
  29. package/out/app-shell/__next._head.txt +4 -4
  30. package/out/app-shell/__next._index.txt +8 -8
  31. package/out/app-shell/__next._tree.txt +2 -2
  32. package/out/app-shell/__next.app-shell.__PAGE__.txt +2 -2
  33. package/out/app-shell/__next.app-shell.txt +3 -3
  34. package/out/app-shell.html +1 -1
  35. package/out/app-shell.txt +13 -13
  36. package/out/index.html +1 -1
  37. package/out/index.txt +14 -14
  38. package/out/project/_/__next._full.txt +14 -14
  39. package/out/project/_/__next._head.txt +4 -4
  40. package/out/project/_/__next._index.txt +8 -8
  41. package/out/project/_/__next._tree.txt +2 -2
  42. package/out/project/_/__next.project.$d$id.__PAGE__.txt +3 -3
  43. package/out/project/_/__next.project.$d$id.txt +3 -3
  44. package/out/project/_/__next.project.txt +3 -3
  45. package/out/project/_/queue/__next._full.txt +14 -14
  46. package/out/project/_/queue/__next._head.txt +4 -4
  47. package/out/project/_/queue/__next._index.txt +8 -8
  48. package/out/project/_/queue/__next._tree.txt +2 -2
  49. package/out/project/_/queue/__next.project.$d$id.queue.__PAGE__.txt +3 -3
  50. package/out/project/_/queue/__next.project.$d$id.queue.txt +3 -3
  51. package/out/project/_/queue/__next.project.$d$id.txt +3 -3
  52. package/out/project/_/queue/__next.project.txt +3 -3
  53. package/out/project/_/queue.html +1 -1
  54. package/out/project/_/queue.txt +14 -14
  55. package/out/project/_.html +1 -1
  56. package/out/project/_.txt +14 -14
  57. package/out/settings/__next._full.txt +14 -14
  58. package/out/settings/__next._head.txt +4 -4
  59. package/out/settings/__next._index.txt +8 -8
  60. package/out/settings/__next._tree.txt +2 -2
  61. package/out/settings/__next.settings.__PAGE__.txt +3 -3
  62. package/out/settings/__next.settings.txt +3 -3
  63. package/out/settings.html +1 -1
  64. package/out/settings.txt +14 -14
  65. package/out/setup/__next._full.txt +14 -14
  66. package/out/setup/__next._head.txt +4 -4
  67. package/out/setup/__next._index.txt +8 -8
  68. package/out/setup/__next._tree.txt +2 -2
  69. package/out/setup/__next.setup.__PAGE__.txt +3 -3
  70. package/out/setup/__next.setup.txt +3 -3
  71. package/out/setup.html +1 -1
  72. package/out/setup.txt +14 -14
  73. package/package.json +4 -2
  74. package/server/ac-restore.js +128 -0
  75. package/server/bridges/discord.js +183 -0
  76. package/server/bridges/telegram.js +210 -0
  77. package/server/config.js +4 -60
  78. package/server/file-chat.js +318 -0
  79. package/server/index.js +173 -1286
  80. package/server/install-agentchattr.js +3 -284
  81. package/server/mcp-chat-shim.js +171 -0
  82. package/server/migrate-ac.js +158 -0
  83. package/server/pty-dispatcher.js +188 -0
  84. package/server/routes.js +149 -1397
  85. package/templates/CLAUDE.md +2 -2
  86. package/templates/OVERNIGHT-QUEUE.md +1 -1
  87. package/templates/seeds/butler.CLAUDE.md +30 -62
  88. package/templates/seeds/dev.AGENTS.md +10 -1
  89. package/templates/seeds/head.AGENTS.md +3 -3
  90. package/templates/seeds/re1.AGENTS.md +3 -3
  91. package/templates/seeds/re2.AGENTS.md +3 -3
  92. package/bridges/discord/__pycache__/discord_bridge.cpython-314.pyc +0 -0
  93. package/bridges/discord/discord_bridge.py +0 -666
  94. package/bridges/discord/requirements.txt +0 -2
  95. package/out/_next/static/chunks/0_bb~2.5h2ntm.css +0 -2
  96. package/out/_next/static/chunks/0makcdqkwobp6.js +0 -25
  97. package/out/_next/static/chunks/0uz5svjlo9dwl.js +0 -1
  98. package/out/_next/static/chunks/0zahstmgdrpy5.js +0 -1
  99. package/out/_next/static/chunks/0zfotsowwll1x.js +0 -2
  100. package/server/__tests__/bridge-auto-stop-guard.test.js +0 -134
  101. package/server/__tests__/rate-limit-handling.test.js +0 -168
  102. package/server/__tests__/scrub-secrets.test.js +0 -235
  103. package/server/__tests__/v1110-security-qa.test.js +0 -312
  104. package/server/agentchattr-registry.js +0 -188
  105. package/server/install-agentchattr.patchCrashTimeout.test.js +0 -71
  106. package/server/queue-watcher.js +0 -171
  107. package/server/queue-watcher.test.js +0 -64
  108. package/server/routes.batchProgress.test.js +0 -94
  109. package/server/routes.chatWsSend.test.js +0 -161
  110. package/server/routes.discordBridge.test.js +0 -80
  111. package/server/routes.parseActiveBatch.test.js +0 -88
  112. package/server/routes.telegramBridge.test.js +0 -241
  113. package/templates/config.toml +0 -72
  114. package/templates/wrapper.py +0 -70
  115. /package/out/_next/static/{K7A3YZrh4sLaRRP1-Lq7v → 479UD5Kit4YvCmtgO25VT}/_buildManifest.js +0 -0
  116. /package/out/_next/static/{K7A3YZrh4sLaRRP1-Lq7v → 479UD5Kit4YvCmtgO25VT}/_clientMiddlewareManifest.js +0 -0
  117. /package/out/_next/static/{K7A3YZrh4sLaRRP1-Lq7v → 479UD5Kit4YvCmtgO25VT}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  # {{project_name}} — Development Rules
2
2
 
3
- ## Multi-Agent System (AgentChattr)
3
+ ## Multi-Agent System
4
4
 
5
5
  | Agent | Role | Can Code? | Authority |
6
6
  |-------|------|-----------|-----------|
@@ -10,7 +10,7 @@
10
10
  | Dev | Full-Stack Builder | Yes | Implementation |
11
11
 
12
12
  - **Each agent = ONE role** — escalate to Head/RE1/RE2 if task doesn't match
13
- - **AGENTS.md is the primary instruction set** when running as an AgentChattr agent — it overrides these rules where they conflict
13
+ - **AGENTS.md is the primary instruction set** when running as a QuadWork agent — it overrides these rules where they conflict
14
14
 
15
15
  ## GitHub Workflow
16
16
 
@@ -32,4 +32,4 @@
32
32
  2. One ticket assigned to Dev at a time.
33
33
  3. Wait for both reviewers to approve before merging.
34
34
  4. After merge, immediately assign next item.
35
- 5. Operator interacts via the AgentChattr chat (top-left panel) — never via terminal.
35
+ 5. Operator interacts via the project chat panel (top-left) — never via terminal.
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### Rule 1: Communication
6
6
  **Your terminal output is INVISIBLE to all other agents. No agent can see what you print.**
7
- The ONLY way to communicate is by calling the AgentChattr MCP tool `chat_send` with an `@mention`.
7
+ The ONLY way to communicate is by calling the project chat MCP tool `chat_send` with an `@mention`.
8
8
  If you do not call `chat_send`, your message does NOT exist — it is lost forever. There is no exception.
9
9
  - CORRECT: Call `chat_send` with message "@user here's the batch I created"
10
10
  - WRONG: Printing "I'll message the operator now" in your terminal output
@@ -276,42 +276,41 @@ Butler must understand QuadWork's internal architecture to diagnose issues:
276
276
  - Runs on configurable port (default 8400)
277
277
  - Serves static Next.js frontend from `out/` directory
278
278
  - Manages PTY sessions for each agent via `node-pty`
279
- - WebSocket connections for terminal I/O and chat proxy
279
+ - WebSocket connections for terminal I/O and chat
280
280
 
281
- - **AgentChattr (AC)** (Python/FastAPI/uvicorn): chat server for agent communication
282
- - Separate process, one per project
283
- - Default port 8300, auto-increments for multiple projects (8300, 8301, 8302...)
284
- - Config: `~/.quadwork/<project>/agentchattr/config.toml`
285
- - Data: `~/.quadwork/<project>/agentchattr/data/`
286
- - Log: `~/.quadwork/<project>/agentchattr.log`
287
- - Pinned to commit via git checkout (see AGENTCHATTR_PIN in `bin/quadwork.js`)
288
- - Session token: required for API access, synced between QuadWork and AC
281
+ - **File-based Chat** (`server/file-chat.js`): chat system for agent communication
282
+ - Chat messages stored as JSONL files in `~/.quadwork/<project>/chat/`
283
+ - One JSONL file per channel (e.g., `general.jsonl`)
284
+ - Server reads/writes JSONL directly — no external process or port needed
285
+ - Corrupted lines are skipped on read for resilience
286
+
287
+ - **MCP Shim**: bridges chat into agent CLI sessions
288
+ - Exposes `chat_send`, `chat_read`, and other chat tools to agents via MCP
289
+ - Configured per agent in the project settings
290
+
291
+ - **PTY Dispatcher**: delivers chat messages to agents via terminal injection
292
+ - Watches for new messages in JSONL files
293
+ - Injects relevant messages into the agent's PTY session
289
294
 
290
295
  - **Agent PTYs**: 4 terminal sessions per project (head, dev, re1, re2)
291
296
  - Each runs a CLI tool (claude/codex/gemini) in its own git worktree
292
297
  - Worktree layout: `<project-dir>-head`, `<project-dir>-dev`, etc.
293
- - Registered with AC for chat integration via MCP
294
- - Heartbeat every 5s to keep AC registration alive
295
- - If heartbeat misses for `_CRASH_TIMEOUT` seconds, AC deregisters the agent
298
+ - Receives chat messages via PTY injection from the dispatcher
296
299
 
297
- - **Bridges** (Python): Discord and Telegram message forwarding
298
- - Discord bridge: bundled in `bridges/discord/discord_bridge.py`
299
- - Telegram bridge: cloned separately to `~/.quadwork/agentchattr-telegram/`
300
- - Both register with AC as agents (`dc` and `tg` slugs)
301
- - Config: `~/.quadwork/discord-<project>.toml`, `~/.quadwork/telegram-<project>.toml`
302
- - Logs: `~/.quadwork/dc-bridge-<project>.log`, `~/.quadwork/tg-bridge-<project>.log`
300
+ - **Bridges** (Node.js in-process): Discord and Telegram message forwarding
301
+ - Discord bridge: `server/bridges/discord.js`
302
+ - Telegram bridge: `server/bridges/telegram.js`
303
+ - Configured per-project in `~/.quadwork/config.json` (telegram/discord blocks)
303
304
 
304
305
  ### Key Files
305
306
  | File | Purpose |
306
307
  |------|---------|
307
308
  | `~/.quadwork/config.json` | Global QuadWork config (port, projects, agents) |
308
- | `~/.quadwork/<project>/agentchattr/config.toml` | Per-project AC config (ports, agents, routing) |
309
- | `~/.quadwork/<project>/agentchattr.log` | AC process stdout/stderr log |
309
+ | `~/.quadwork/<project>/chat/*.jsonl` | Per-project chat messages (one file per channel) |
310
310
  | `~/.quadwork/<project>/OVERNIGHT-QUEUE.md` | Task queue for the project's Head agent |
311
- | `~/.quadwork/<project>/agent-token-<agent>.txt` | Persisted AC registration tokens |
312
- | `server/index.js` | Main server: agent spawning, AC health monitor, registration |
313
- | `server/routes.js` | API routes: setup wizard, chat proxy, bridges, GitHub |
314
- | `server/agentchattr-registry.js` | AC registration, heartbeat, deregistration |
311
+ | `server/index.js` | Main server: agent spawning, chat integration |
312
+ | `server/file-chat.js` | File-based chat: read/write JSONL, message dispatch |
313
+ | `server/routes.js` | API routes: setup wizard, chat, bridges, GitHub |
315
314
  | `server/config.js` | Config read/write, project resolution, secure file helpers |
316
315
  | `bin/quadwork.js` | CLI: init wizard, start, stop, doctor commands |
317
316
 
@@ -319,55 +318,24 @@ Butler must understand QuadWork's internal architecture to diagnose issues:
319
318
  | Service | Default | Config key |
320
319
  |---------|---------|------------|
321
320
  | QuadWork dashboard | 8400 | config.json `port` |
322
- | AgentChattr (project 1) | 8300 | config.toml `[server] port` |
323
- | AgentChattr (project 2) | 8301 | auto-incremented |
324
321
  | MCP HTTP | 8200 | config.json `mcp_http_port` |
325
322
  | MCP SSE | 8201 | config.json `mcp_sse_port` |
326
323
 
327
- ### Agent Registration Flow
328
- 1. QuadWork spawns agent PTY with CLI command + MCP flags
329
- 2. Before spawn, calls `waitForAgentChattrReady(port, 30s)` — polls AC root `/`
330
- 3. Deregisters stale slot using persisted token (if exists)
331
- 4. Registers with AC: `POST /api/register { base: "head", label: "Head Owner", force: true }`
332
- 5. AC returns `{ name, token, slot }` — name may be suffixed if slot conflict
333
- 6. Starts heartbeat: `POST /api/heartbeat/<name>` every 5s with Bearer token
334
- 7. On heartbeat 409: triggers re-registration recovery
335
-
336
- ### Health Monitor
337
- - Runs every 30s, checks if AC port is alive for each project
338
- - 60s grace period after AC starts (skips checks during startup)
339
- - If AC down for 3 consecutive checks -> auto-restart AC
340
- - On AC recovery -> restarts unregistered agents
341
- - Auto-reset dedup: only one reset per 30s per project
342
-
343
- ### Common Log Patterns
344
- | Log pattern | Meaning |
345
- |-------------|---------|
346
- | `[#565] Agent X: AC not reachable on port` | AC wasn't ready when agent tried to register |
347
- | `[#565] Agent X: AC not reachable after 60s` | Deferred restart timeout — health monitor will handle |
348
- | `Crash timeout: deregistering X (no heartbeat for Ns)` | AC killed agent slot — heartbeat starvation |
349
- | `auto-reset N agent(s) after AC restart` | Health monitor restarting agents after AC recovery |
350
- | `unknown base: X` | AC config.toml missing `[agents.X]` section |
351
- | `409 Conflict` on heartbeat | Agent slot was taken by another registration |
352
- | `restart: port NNNN is free, spawning AC` | AC restart in progress |
353
- | `bridge-migrate` | Startup migration renaming bridge slugs |
354
-
355
324
  ## 10. Troubleshooting Workflow
356
325
 
357
326
  Read `docs/troubleshooting.md` first for known issues. Then use the architecture knowledge above to diagnose:
358
327
 
359
328
  1. Check server logs for error patterns
360
- 2. Check AC logs: `~/.quadwork/<project>/agentchattr.log`
329
+ 2. Check chat files: `ls -la ~/.quadwork/<project>/chat/`
361
330
  3. Check agent processes: `ps aux | grep -E "claude|codex"`
362
331
  4. Check port status: `lsof -iTCP:<port> -sTCP:LISTEN`
363
- 5. Check AC health: `curl http://127.0.0.1:<port>/`
364
- 6. Check agent status via API: `curl http://127.0.0.1:8400/api/agents/<project>`
365
- 7. Diagnose root cause before suggesting fixes
366
- 8. File a ticket if it's a code bug, guide operator for config issues
332
+ 5. Check agent status via API: `curl http://127.0.0.1:8400/api/agents/<project>`
333
+ 6. Diagnose root cause before suggesting fixes
334
+ 7. File a ticket if it's a code bug, guide operator for config issues
367
335
 
368
336
  ## 11. Project Launch Guidance
369
337
 
370
- Ask for repo/CLIs/creds, guide through dashboard wizard, verify worktrees/AC/registration, help with bridges and first batch.
338
+ Ask for repo/CLIs/creds, guide through dashboard wizard, verify worktrees and chat connectivity, help with bridges and first batch.
371
339
 
372
340
  ## 12. Design Awareness
373
341
 
@@ -402,7 +370,7 @@ Butler can create batches on any project directly by editing that project's OVER
402
370
  **Started:** <YYYY-MM-DD HH:MM>
403
371
  **Status:** pending kickoff
404
372
 
405
- - #598 Fix double AC restart
373
+ - #598 Fix duplicate restart
406
374
  - #600 Display version in sidebar
407
375
  - #601 Head AGENTS.md queue format
408
376
  ```
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### Rule 1: Communication
6
6
  **Your terminal output is INVISIBLE to all other agents. No agent can see what you print.**
7
- The ONLY way to communicate is by calling the AgentChattr MCP tool `chat_send` with an `@mention`.
7
+ The ONLY way to communicate is by calling the project chat MCP tool `chat_send` with an `@mention`.
8
8
  If you do not call `chat_send`, your message does NOT exist — it is lost forever. There is no exception.
9
9
  - CORRECT: Call `chat_send` with message "@re1 @re2 please review PR #50"
10
10
  - WRONG: Printing "I'll notify the reviewers" in your terminal output
@@ -91,6 +91,15 @@ When implementing UI/frontend changes:
91
91
  7. Push branch: `git push -u origin task/<issue>-<slug>`
92
92
  8. Open PR: `gh pr create --title "[#<issue>] ..." --body "Fixes #<issue>"`
93
93
  9. **CRITICAL — Send ONE message to REVIEWERS, not Head**: Send a SINGLE message mentioning **@re1 @re2** together (NOT @head) requesting review with PR number and link. Do NOT send two separate messages. This is your first message after receiving the assignment.
94
+
95
+ **WRONG (agents won't see this):**
96
+ `@head PR #78 done. Ready for RE1/RE2 review.`
97
+
98
+ **RIGHT (agents will be notified):**
99
+ `@re1 @re2 PR #78 is ready for review: https://github.com/... Please review and post your verdict.`
100
+
101
+ The `@` symbol is REQUIRED. Without it, reviewers are never notified. "RE1" alone does nothing — only `@re1` triggers notification.
102
+
94
103
  10. Address review feedback, push fixes
95
104
  11. Send message to **@re1 AND @re2** (NOT @head): "Fixes pushed for PR #<number>, please re-review"
96
105
  12. **Wait for BOTH RE1 and RE2** to approve before proceeding — only then send message to @head requesting merge with PR number. If only one has approved, wait silently for the other.
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### Rule 1: Communication
6
6
  **Your terminal output is INVISIBLE to all other agents. No agent can see what you print.**
7
- The ONLY way to communicate is by calling the AgentChattr MCP tool `chat_send` with an `@mention`.
7
+ The ONLY way to communicate is by calling the project chat MCP tool `chat_send` with an `@mention`.
8
8
  If you do not call `chat_send`, your message does NOT exist — it is lost forever. There is no exception.
9
9
  - CORRECT: Call `chat_send` with message "@dev please implement issue #42"
10
10
  - WRONG: Printing "I'll message Dev now" in your terminal output
@@ -61,7 +61,7 @@ When checking for mentions addressed to you, match your **base role name** regar
61
61
  - If a task requires coding, delegate to Dev via @dev mention
62
62
 
63
63
  ## Combined Operator + Head Role
64
- In QuadWork, **the human operator talks to you through the AgentChattr chat panel**, not the terminal. Your terminal is for direct debugging only — every outbound message goes through `chat_send`, and every inbound instruction from the operator arrives as a chat message addressed to `@head`.
64
+ In QuadWork, **the human operator talks to you through the project chat panel**, not the terminal. Your terminal is for direct debugging only — every outbound message goes through `chat_send`, and every inbound instruction from the operator arrives as a chat message addressed to `@head`.
65
65
 
66
66
  You are therefore the *combined* T1 + operator-relay: you receive high-level instructions from the operator in chat and translate them into GitHub issues + `OVERNIGHT-QUEUE.md` updates + ticket assignments.
67
67
 
@@ -88,7 +88,7 @@ When the operator asks you in chat to start a task or batch:
88
88
  **Started:** <YYYY-MM-DD HH:MM>
89
89
  **Status:** pending kickoff
90
90
 
91
- - #598 Fix double AC restart
91
+ - #598 Fix duplicate restart
92
92
  - #600 Display version in sidebar
93
93
  ```
94
94
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### Rule 1: Communication
6
6
  **Your terminal output is INVISIBLE to all other agents. No agent can see what you print.**
7
- The ONLY way to communicate is by calling the AgentChattr MCP tool `chat_send` with an `@mention`.
7
+ The ONLY way to communicate is by calling the project chat MCP tool `chat_send` with an `@mention`.
8
8
  If you do not call `chat_send`, your message does NOT exist — it is lost forever. There is no exception.
9
9
  - CORRECT: Call `chat_send` with message "@dev PR #50 — REQUEST CHANGES: [findings]"
10
10
  - WRONG: Printing "Review complete" in your terminal output
@@ -30,7 +30,7 @@ This rule applies to ALL output that touches GitHub or git — issues, PR bodies
30
30
 
31
31
  ---
32
32
 
33
- You are **RE1**, the first reviewer agent. Your AgentChattr identity is `re1`.
33
+ You are **RE1**, the first reviewer agent. Your chat identity is `re1`.
34
34
  The other reviewer is **RE2** (`re2`). You are independent — review separately.
35
35
 
36
36
  ### Identity & Suffix Awareness
@@ -127,7 +127,7 @@ Reference `DESIGN-GUIDE.md` in the workspace for full details on each rule.
127
127
  8. On approve, notify @dev (Dev aggregates approvals and notifies Head)
128
128
 
129
129
  ## Error Recovery
130
- - **Network failures** (`gh` API errors, DNS issues): retry the `gh` command automatically up to 5 times with 30-second intervals. Do NOT ask the user — just retry silently. If still failing after 5 retries, post your review verdict via AgentChattr chat message to @dev instead (so the loop isn't blocked).
130
+ - **Network failures** (`gh` API errors, DNS issues): retry the `gh` command automatically up to 5 times with 30-second intervals. Do NOT ask the user — just retry silently. If still failing after 5 retries, post your review verdict via chat message to @dev instead (so the loop isn't blocked).
131
131
 
132
132
  ## Communication
133
133
  - **ALL messages MUST be sent via `chat_send` MCP tool** — terminal output is invisible, printing text is NOT communicating
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### Rule 1: Communication
6
6
  **Your terminal output is INVISIBLE to all other agents. No agent can see what you print.**
7
- The ONLY way to communicate is by calling the AgentChattr MCP tool `chat_send` with an `@mention`.
7
+ The ONLY way to communicate is by calling the project chat MCP tool `chat_send` with an `@mention`.
8
8
  If you do not call `chat_send`, your message does NOT exist — it is lost forever. There is no exception.
9
9
  - CORRECT: Call `chat_send` with message "@dev PR #50 — REQUEST CHANGES: [findings]"
10
10
  - WRONG: Printing "Review complete" in your terminal output
@@ -30,7 +30,7 @@ This rule applies to ALL output that touches GitHub or git — issues, PR bodies
30
30
 
31
31
  ---
32
32
 
33
- You are **RE2**, the second reviewer agent. Your AgentChattr identity is `re2`.
33
+ You are **RE2**, the second reviewer agent. Your chat identity is `re2`.
34
34
  The other reviewer is **RE1** (`re1`). You are independent — review separately.
35
35
 
36
36
  ### Identity & Suffix Awareness
@@ -127,7 +127,7 @@ Reference `DESIGN-GUIDE.md` in the workspace for full details on each rule.
127
127
  8. On approve, notify @dev (Dev aggregates approvals and notifies Head)
128
128
 
129
129
  ## Error Recovery
130
- - **Network failures** (`gh` API errors, DNS issues): retry the `gh` command automatically up to 5 times with 30-second intervals. Do NOT ask the user — just retry silently. If still failing after 5 retries, post your review verdict via AgentChattr chat message to @dev instead (so the loop isn't blocked).
130
+ - **Network failures** (`gh` API errors, DNS issues): retry the `gh` command automatically up to 5 times with 30-second intervals. Do NOT ask the user — just retry silently. If still failing after 5 retries, post your review verdict via chat message to @dev instead (so the loop isn't blocked).
131
131
 
132
132
  ## Communication
133
133
  - **ALL messages MUST be sent via `chat_send` MCP tool** — terminal output is invisible, printing text is NOT communicating