@mmerterden/multi-agent-pipeline 20.30.0 → 20.34.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 (195) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/README.md +47 -1
  3. package/README.tr.md +61 -1
  4. package/docs/adr/0018-cross-repo-links-not-a-global-graph.md +43 -0
  5. package/docs/adr/README.md +2 -1
  6. package/docs/facts.json +6 -5
  7. package/docs/features.md +1 -1
  8. package/install/_dev-only-files.mjs +1 -0
  9. package/install/_unattended-profile.mjs +61 -0
  10. package/install/catalog-history.json +1 -1
  11. package/install/claude.mjs +16 -2
  12. package/install/index.mjs +10 -1
  13. package/install/templates/claude-hooks.json +23 -1
  14. package/manifest.json +198 -134
  15. package/package.json +4 -1
  16. package/pipeline/agents/code-reviewer.md +9 -0
  17. package/pipeline/agents/explorer.md +4 -0
  18. package/pipeline/agents/plan-critic.md +4 -2
  19. package/pipeline/commands/multi-agent/SKILL.md +17 -136
  20. package/pipeline/commands/multi-agent/analysis/SKILL.md +4 -4
  21. package/pipeline/commands/multi-agent/channels/SKILL.md +15 -297
  22. package/pipeline/commands/multi-agent/graph/SKILL.md +5 -2
  23. package/pipeline/commands/multi-agent/language/SKILL.md +3 -3
  24. package/pipeline/commands/multi-agent/office-on/SKILL.md +8 -7
  25. package/pipeline/commands/multi-agent/office-status/SKILL.md +1 -1
  26. package/pipeline/commands/multi-agent/prune-logs/SKILL.md +4 -1
  27. package/pipeline/commands/multi-agent/resume/SKILL.md +8 -22
  28. package/pipeline/commands/multi-agent/review/SKILL.md +11 -134
  29. package/pipeline/commands/multi-agent/scenario-audit/SKILL.md +4 -2
  30. package/pipeline/commands/multi-agent/setup/SKILL.md +19 -224
  31. package/pipeline/commands/multi-agent/sync/SKILL.md +12 -0
  32. package/pipeline/commands/multi-agent/test-gen/SKILL.md +29 -3
  33. package/pipeline/contract/CHANGELOG.md +46 -0
  34. package/pipeline/contract/README.md +27 -10
  35. package/pipeline/contract/fixtures/error-invalid-request.json +1 -1
  36. package/pipeline/contract/fixtures/error-unauthorized.json +1 -1
  37. package/pipeline/contract/fixtures/error-unsigned.json +1 -1
  38. package/pipeline/contract/fixtures/launch-plan.json +1 -1
  39. package/pipeline/contract/fixtures/runs-awaiting-question.json +6 -1
  40. package/pipeline/contract/fixtures/runs-empty.json +1 -1
  41. package/pipeline/contract/fixtures/runs-failed.json +6 -1
  42. package/pipeline/contract/fixtures/runs-old-schema.json +6 -1
  43. package/pipeline/contract/fixtures/runs-pr-opened-redacted.json +5 -1
  44. package/pipeline/contract/fixtures/runs-pr-opened.json +6 -1
  45. package/pipeline/contract/fixtures/runs-running.json +6 -1
  46. package/pipeline/contract/manifest.json +153 -19
  47. package/pipeline/contract/types/index.d.ts +304 -6
  48. package/pipeline/lib/bg-launch.mjs +106 -0
  49. package/pipeline/lib/code-digest.mjs +49 -0
  50. package/pipeline/lib/credential-resolve.mjs +42 -2
  51. package/pipeline/multi-agent-refs/channels/generator.md +146 -0
  52. package/pipeline/multi-agent-refs/channels/menu.md +55 -0
  53. package/pipeline/multi-agent-refs/channels/multi-repo.md +6 -0
  54. package/pipeline/multi-agent-refs/channels/preview.md +25 -0
  55. package/pipeline/multi-agent-refs/channels/reference.md +98 -0
  56. package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +1 -1
  57. package/pipeline/multi-agent-refs/features/code-graph.md +27 -0
  58. package/pipeline/multi-agent-refs/features/office-threat-model.md +24 -6
  59. package/pipeline/multi-agent-refs/features/plan-critic.md +5 -2
  60. package/pipeline/multi-agent-refs/features/review-delta.md +4 -1
  61. package/pipeline/multi-agent-refs/features/scope-check.md +10 -1
  62. package/pipeline/multi-agent-refs/features/unattended-security.md +1 -1
  63. package/pipeline/multi-agent-refs/help/en.md +2 -2
  64. package/pipeline/multi-agent-refs/help/tr.md +2 -2
  65. package/pipeline/multi-agent-refs/knowledge.md +9 -0
  66. package/pipeline/multi-agent-refs/orchestrator/dispatcher.md +163 -0
  67. package/pipeline/multi-agent-refs/phases/modes.md +7 -7
  68. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +4 -4
  69. package/pipeline/multi-agent-refs/phases/phase-2-dev.md +9 -8
  70. package/pipeline/multi-agent-refs/phases/phase-3-review.md +12 -7
  71. package/pipeline/multi-agent-refs/phases/phase-4-commit.md +7 -3
  72. package/pipeline/multi-agent-refs/phases/phase-5-report.md +19 -10
  73. package/pipeline/multi-agent-refs/picker-contract.md +1 -1
  74. package/pipeline/multi-agent-refs/resume/details.md +35 -0
  75. package/pipeline/multi-agent-refs/review/inputs.md +87 -0
  76. package/pipeline/multi-agent-refs/review/module-guides.md +25 -0
  77. package/pipeline/multi-agent-refs/review/valven.md +42 -0
  78. package/pipeline/multi-agent-refs/review-standalone-tracker.md +37 -0
  79. package/pipeline/multi-agent-refs/setup/accounts.md +27 -0
  80. package/pipeline/multi-agent-refs/setup/app-store-connect.md +5 -0
  81. package/pipeline/multi-agent-refs/setup/firebase.md +5 -0
  82. package/pipeline/multi-agent-refs/setup/google-play.md +4 -0
  83. package/pipeline/multi-agent-refs/setup/hooks-and-plugins.md +21 -0
  84. package/pipeline/multi-agent-refs/setup/language.md +46 -0
  85. package/pipeline/multi-agent-refs/setup/multi-repo-group.md +51 -0
  86. package/pipeline/multi-agent-refs/setup/summaries.md +63 -0
  87. package/pipeline/multi-agent-refs/setup/token-save-flow.md +51 -0
  88. package/pipeline/multi-agent-refs/tracker-contract.md +8 -3
  89. package/pipeline/office/NOTICE.md +4 -1
  90. package/pipeline/office/assets/ARCHIVE_BOXES.png +0 -0
  91. package/pipeline/office/assets/COFFEE_MACHINE.png +0 -0
  92. package/pipeline/office/assets/COUNTER_SINK.png +0 -0
  93. package/pipeline/office/assets/DEVICE_STAND.png +0 -0
  94. package/pipeline/office/assets/FILING_CABINET.png +0 -0
  95. package/pipeline/office/assets/FRIDGE.png +0 -0
  96. package/pipeline/office/assets/MAILBOX.png +0 -0
  97. package/pipeline/office/assets/MOP_BUCKET.png +0 -0
  98. package/pipeline/office/assets/PRINTER.png +0 -0
  99. package/pipeline/office/assets/RECEPTION_DESK.png +0 -0
  100. package/pipeline/office/assets/SERVER_RACK.png +0 -0
  101. package/pipeline/office/assets/SERVER_RACK_2.png +0 -0
  102. package/pipeline/office/assets/TOILET_STALL.png +0 -0
  103. package/pipeline/office/assets/VENDING.png +0 -0
  104. package/pipeline/office/assets/WASHBASIN.png +0 -0
  105. package/pipeline/office/assets/WATER_COOLER.png +0 -0
  106. package/pipeline/office/index.html +3936 -819
  107. package/pipeline/office/toolkit.json +3 -0
  108. package/pipeline/rules/response-shape.md +6 -7
  109. package/pipeline/schemas/activity.schema.json +188 -4
  110. package/pipeline/schemas/agent-state.schema.json +511 -115
  111. package/pipeline/schemas/contract-error.schema.json +12 -1
  112. package/pipeline/schemas/job-change.schema.json +72 -0
  113. package/pipeline/schemas/job-request.schema.json +38 -0
  114. package/pipeline/schemas/launch.json +4 -4
  115. package/pipeline/schemas/office-credentials.schema.json +71 -0
  116. package/pipeline/schemas/office-jobs.json +253 -0
  117. package/pipeline/schemas/office-jobs.schema.json +62 -0
  118. package/pipeline/schemas/office-memory.schema.json +105 -0
  119. package/pipeline/schemas/office-settings-request.schema.json +30 -0
  120. package/pipeline/schemas/office-settings.schema.json +67 -0
  121. package/pipeline/schemas/phases.json +14 -6
  122. package/pipeline/schemas/phases.schema.json +86 -19
  123. package/pipeline/schemas/plan-critique.schema.json +9 -2
  124. package/pipeline/schemas/planning-output.schema.json +25 -2
  125. package/pipeline/schemas/prefs.schema.json +24 -1
  126. package/pipeline/schemas/prs.schema.json +5 -0
  127. package/pipeline/schemas/prune-logs-request.schema.json +26 -0
  128. package/pipeline/schemas/prune-logs.schema.json +52 -0
  129. package/pipeline/schemas/repo-change.schema.json +54 -0
  130. package/pipeline/schemas/repo-request.schema.json +29 -0
  131. package/pipeline/schemas/repos.schema.json +49 -1
  132. package/pipeline/schemas/reviewer-output.schema.json +20 -2
  133. package/pipeline/schemas/runs-index.schema.json +257 -46
  134. package/pipeline/schemas/system-status.schema.json +111 -0
  135. package/pipeline/schemas/token-budget.json +4 -4
  136. package/pipeline/schemas/tools.schema.json +5 -0
  137. package/pipeline/schemas/triage-output.schema.json +20 -2
  138. package/pipeline/schemas/unattended-profile.json +7 -2
  139. package/pipeline/scripts/_active-run.mjs +2 -1
  140. package/pipeline/scripts/_graph-analysis.mjs +270 -0
  141. package/pipeline/scripts/_memory-policy.mjs +165 -0
  142. package/pipeline/scripts/_secret-scan.mjs +105 -0
  143. package/pipeline/scripts/_spawn-async.mjs +9 -5
  144. package/pipeline/scripts/_unified-diff.mjs +2 -2
  145. package/pipeline/scripts/activity-snapshot.mjs +219 -23
  146. package/pipeline/scripts/autopilot-runner.mjs +7 -5
  147. package/pipeline/scripts/capture-flush.sh +12 -2
  148. package/pipeline/scripts/check-read-size.sh +9 -0
  149. package/pipeline/scripts/code-graph-rules/android.json +8 -3
  150. package/pipeline/scripts/contract-server.mjs +575 -28
  151. package/pipeline/scripts/debt-ledger.mjs +323 -0
  152. package/pipeline/scripts/file-context.mjs +261 -0
  153. package/pipeline/scripts/file-context.sh +20 -0
  154. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -1
  155. package/pipeline/scripts/graph-links.mjs +230 -0
  156. package/pipeline/scripts/graph-query.mjs +133 -1
  157. package/pipeline/scripts/graph-report.mjs +65 -0
  158. package/pipeline/scripts/job-launch.mjs +477 -0
  159. package/pipeline/scripts/launch-request.mjs +94 -9
  160. package/pipeline/scripts/learn-from-transcripts.mjs +12 -48
  161. package/pipeline/scripts/learnings-ledger.mjs +143 -24
  162. package/pipeline/scripts/office-build.mjs +148 -11
  163. package/pipeline/scripts/office-control.mjs +34 -7
  164. package/pipeline/scripts/office-credentials.mjs +106 -0
  165. package/pipeline/scripts/office-memory.mjs +200 -0
  166. package/pipeline/scripts/office-prune.mjs +125 -0
  167. package/pipeline/scripts/office-settings.mjs +145 -0
  168. package/pipeline/scripts/phase-tracker.sh +12 -5
  169. package/pipeline/scripts/plan-critique-gate.mjs +11 -2
  170. package/pipeline/scripts/prune-logs.sh +53 -2
  171. package/pipeline/scripts/rework-rulings.mjs +106 -0
  172. package/pipeline/scripts/runs-index.mjs +62 -2
  173. package/pipeline/scripts/scope-check-gate.mjs +149 -2
  174. package/pipeline/scripts/system-status.mjs +196 -0
  175. package/pipeline/scripts/task-mirror.mjs +150 -0
  176. package/pipeline/scripts/task-mirror.sh +20 -0
  177. package/pipeline/scripts/toolkit-tools.mjs +33 -7
  178. package/pipeline/scripts/transcript-index.mjs +4 -1
  179. package/pipeline/scripts/triage-memory.mjs +64 -37
  180. package/pipeline/scripts/validate-planning.mjs +68 -4
  181. package/pipeline/scripts/validate-reviewer.mjs +20 -0
  182. package/pipeline/scripts/validate-triage.mjs +107 -2
  183. package/pipeline/scripts/work-items.mjs +191 -22
  184. package/pipeline/skills/.skill-manifest.json +9 -9
  185. package/pipeline/skills/.skills-index.json +1 -1
  186. package/pipeline/skills/shared/README.md +1 -1
  187. package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +5 -2
  188. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +4 -4
  189. package/pipeline/skills/shared/core/multi-agent-office-on/SKILL.md +3 -4
  190. package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +4 -1
  191. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +21 -0
  192. package/pipeline/skills/shared/core/multi-agent-scenario-audit/SKILL.md +4 -2
  193. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +4 -4
  194. package/pipeline/skills/shared/core/multi-agent-test-gen/SKILL.md +26 -3
  195. package/pipeline/skills/skills-index.md +1 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: multi-agent-office-on
3
- description: "Open the office panel: a local browser page with agents at work, their chats, cost ledger and new runs. Use when you want to watch or drive runs from a browser."
3
+ description: "Open the office: a local browser page that shows runs and agents live and drives the ecosystem (new runs, jobs, PRs, keys, memory, system, cleanup). Use when you want to watch or drive runs from a browser."
4
4
  user-invocable: true
5
5
  metadata:
6
6
  language: en
@@ -14,9 +14,8 @@ and opens the browser at `/office` with a one-time code in the URL fragment
14
14
 
15
15
  1. `node "$HOME/.copilot/scripts/office-control.mjs" on --json`
16
16
  2. Report in `outputLanguage`: `url` (it carries no code), whether the server
17
- was started or `reused`, that it stops after `idleMinutes` without a request
18
- and after 8 hours in any case, and that `/multi-agent-office-off` stops it
19
- now. If `opened` is false, say to run it again from a desktop session.
17
+ was started or `reused`, and that it runs until `/multi-agent-office-off`
18
+ stops it. If `opened` is false, say to run it again from a desktop session.
20
19
 
21
20
  Never print the token, read the token file or pass `--print-token`. The server
22
21
  listens on 127.0.0.1 only; remote access is not part of this installation.
@@ -17,7 +17,10 @@ whole task dirs, with optional age / project / task filters.
17
17
  Backed by `$HOME/.claude/scripts/prune-logs.sh`. Safe by default: it previews
18
18
  and deletes nothing until you confirm. The audit trail (`audit.jsonl` +
19
19
  rotations) and the metrics corpus (`metrics.jsonl`, `metrics-summary.md`) live
20
- at the log-root top level and are never removed; `.counter` files survive too.
20
+ at the log-root top level and are never removed; `.counter` files survive too. A run that can still be resumed (its `agent-state.json` status is not
21
+ finished, abandoned or cancelled) keeps its log however old it is, and
22
+ so does a folder written in the last 10 minutes; `--task` names one dir and
23
+ bypasses both.
21
24
 
22
25
  Unlike `/multi-agent:purge` (which wipes worktrees, branches, logs, and state
23
26
  together), this only removes log dirs and leaves your worktrees and branches
@@ -20,6 +20,25 @@ Skip Phase 0-3 and review a diff only. Input shapes: a PR (`#N`, `repo#N`, GitHu
20
20
 
21
21
  ## Steps
22
22
 
23
+ 0. **Session id and tracker record.** A pipeline run passes its own `TASK_ID`; a standalone review seeds a `review-` one and registers a tracker record, so the review shows wherever runs are read (the office panel, `multi-agent-status`):
24
+
25
+ ```bash
26
+ : "${TASK_ID:=review-$(date +%s)-$$}"
27
+ case "$TASK_ID" in review-*)
28
+ S="${LOGS_ROOT:-$HOME/.claude/logs/multi-agent}/$TASK_ID"; mkdir -p "$S"
29
+ printf '{"taskId":"%s","mode":"review","status":"in_progress","currentPhase":0}' "$TASK_ID" \
30
+ | node "$HOME/.copilot/scripts/write-state.mjs" "$S/agent-state.json" >/dev/null
31
+ export MULTI_AGENT_TASK_ID="$TASK_ID"
32
+ bash "$HOME/.copilot/scripts/phase-tracker.sh" init "$TASK_ID"
33
+ for p in "0:Input" "1:Diff" "2:Reviewers" "3:Triage" "4:Report"; do
34
+ bash "$HOME/.copilot/scripts/phase-tracker.sh" add "${p%%:*}" "${p#*:}"
35
+ done
36
+ bash "$HOME/.copilot/scripts/phase-tracker.sh" update 0 in_progress ;;
37
+ esac
38
+ ```
39
+
40
+ The steps map to tracker steps as in `$HOME/.claude/multi-agent-refs/review-standalone-tracker.md` (1/1a is 0, 2 is 1, 3-4 are 2, 5 is 3, 6-7 are 4), each call prefixed `MULTI_AGENT_TASK_ID=<the review- id> MULTI_AGENT_STRICT_TASK_ID=1`; there is no task widget, so call `phase-tracker.sh render` after each change. After step 7 close the record with `"status":"complete","currentPhase":4` through the same `write-state.mjs` call.
41
+
23
42
  1. **Resolve the input** (`{kind, provider}`):
24
43
  - PR URL / `#N` / `repo#N` -> `kind=pr` (`github` or `bitbucket-server`).
25
44
  - branch name -> `kind=branch` (local).
@@ -101,6 +120,8 @@ Skip Phase 0-3 and review a diff only. Input shapes: a PR (`#N`, `repo#N`, GitHu
101
120
  - 🟡 **Important** → fix recommended
102
121
  - 🟢 **Suggestion** → optional
103
122
 
123
+ Triage also settles every reviewer `cannotVerify` row: `verified` with the file:line read, `finding` with the file:line of the accepted or deferred finding, or `out-of-scope`. Unsettled rows are listed in the summary.
124
+
104
125
  6. **Show a summary** (always prints, any mode):
105
126
  ```
106
127
  🔍 Review Complete
@@ -53,7 +53,9 @@ Read the candidate lines it returns. A term nothing matched is listed under
53
53
 
54
54
  ## Step 3 - Verdict
55
55
 
56
- Write `/tmp/ma-verdicts.json`: `[{id, status, citations, searched, note}]`.
56
+ Write the verdicts to a file in a folder of this run's own
57
+ (`VERDICTS="$(mktemp -d)/verdicts.json"`, never a fixed `/tmp` name another
58
+ user or a second audit could share): `[{id, status, citations, searched, note}]`.
57
59
 
58
60
  | Status | When | Needs |
59
61
  |---|---|---|
@@ -64,7 +66,7 @@ Write `/tmp/ma-verdicts.json`: `[{id, status, citations, searched, note}]`.
64
66
 
65
67
  ```bash
66
68
  node "$HOME/.claude/scripts/scenario-audit.mjs" verify --csv "<scenarios.csv>" \
67
- --verdicts /tmp/ma-verdicts.json --repo "<repo>" --lang "<outputLanguage>"
69
+ --verdicts "$VERDICTS" --repo "<repo>" --lang "<outputLanguage>"
68
70
  ```
69
71
 
70
72
  ## Step 4 - Report
@@ -39,7 +39,7 @@ Ask BEFORE anything else, so every subsequent setup prompt and the rest of the p
39
39
  - `promptLanguage`: picker chrome only (the `AskUserQuestion` `header` chip, host error UI, internal contract identifiers). **Not configurable - fixed to `en`**; the chip is capped at 12 chars, which most Turkish equivalents overflow.
40
40
  - `outputLanguage`: the assistant's non-interactive explanations, status updates, error messages and pipeline-generated reports. Set here, changeable later via `/multi-agent-language <en|tr>`.
41
41
 
42
- `promptLanguage` is seeded as `"en"` and never offered to the user. **External payloads always stay English** (commits, PR titles/bodies, Jira comments, wiki content, reviewer/triage prompts, agent-log.md).
42
+ `promptLanguage` is seeded as `"en"` and never offered to the user. Language matrix: `multi-agent-refs/rules.md`.
43
43
 
44
44
  The wizard asks one question (English UI per skill-prompt rules):
45
45
 
@@ -55,8 +55,8 @@ Select (1-2):
55
55
 
56
56
  - **Already set in prefs** → skip silently. User can change later with `/multi-agent-language <en|tr>` or `/multi-agent-language output <en|tr>`.
57
57
  - **New value** → validate against the schema enum (`en`, `tr`), write `prefs.global.outputLanguage` via atomic rename, force `prefs.global.promptLanguage = "en"`, then echo a confirmation in the just-chosen `outputLanguage`:
58
- - `en`: `outputLanguage=<Y>. promptLanguage stays "en". External payloads (PR bodies, Jira comments, reviewer prompts) stay English regardless.`
59
- - `tr`: `outputLanguage=<Y>. promptLanguage "en" sabit. Dış çıktılar (PR açıklamaları, Jira yorumları, review istemleri) her durumda İngilizce kalır.`
58
+ - `en`: `outputLanguage=<Y>. promptLanguage stays "en". Commits stay English; PR/Jira/wiki bodies follow it.`
59
+ - `tr`: `outputLanguage=<Y>. promptLanguage "en" sabit. Commit'ler İngilizce; PR/Jira/wiki metinleri onu izler.`
60
60
  - **Unknown input** → re-ask once, then abort setup with a hint pointing to `/multi-agent-language`.
61
61
 
62
62
  From here on, every prompt in Steps 1-6 follows the per-field matrix in
@@ -324,7 +324,7 @@ All tokens are optional in the sense that every service can be answered with Ski
324
324
 
325
325
  ### Step 8 - Enforcement hooks (optional)
326
326
 
327
- On Claude Code, offer to merge `$HOME/.claude/templates/claude-hooks.json`: three blocking `PreToolUse` gates (secret scan, agent-guard, read-size) plus four non-blocking hooks (`PreCompact`, `SessionEnd`, `SessionStart`, `PostToolUse`). What each does: `$HOME/.claude/multi-agent-refs/picker-contract.md`.
327
+ On Claude Code, offer to merge `$HOME/.claude/templates/claude-hooks.json`: three blocking `PreToolUse` gates (secret scan, agent-guard, read-size) plus non-blocking hooks on `PreCompact`, `SessionEnd`, `SessionStart` and `PostToolUse`, and a blocking `Stop` hook (`run-stop-guard.sh`). What each does: `$HOME/.claude/multi-agent-refs/picker-contract.md`.
328
328
 
329
329
  - Ask (picker): "Install the pipeline's hooks into `~/.claude/settings.json`?" Default Yes.
330
330
  - On Yes, deep-merge EVERY event in the template's `hooks` object (merging `PreToolUse` alone drops the capture hooks); keep existing hooks, never duplicate a matcher calling the same script.
@@ -43,9 +43,32 @@ Scripts: `test-gen-gate.mjs` (artefact, handle and write gates),
43
43
  ## Step 1 - Prepare
44
44
 
45
45
  1. Repo: `--repo`, else the current directory; confirm it in one line.
46
- Platform: `--platform`, else detect as `multi-agent-test` does. Run id
47
- `tg-<timestamp>`; `RUN="$HOME/.claude/logs/test-gen/<repo>/<timestamp>"`,
48
- created with `mkdir -p "$RUN"`.
46
+ Platform: `--platform`, else detect as `multi-agent-test` does. One
47
+ timestamp names the run everywhere: `TS="$(date +%Y%m%d%H%M%S)"`, run id
48
+ `tg-$TS`, `RUN="$HOME/.claude/logs/test-gen/<repo>/$TS"`, created with
49
+ `mkdir -p "$RUN"`.
50
+ Register the run so its progress shows wherever runs are read (the office
51
+ panel, `multi-agent-status`), with one step per stage below:
52
+
53
+ ```bash
54
+ TG_ID="tg-$TS"
55
+ S="${LOGS_ROOT:-$HOME/.claude/logs/multi-agent}/$TG_ID"; mkdir -p "$S"
56
+ printf '{"taskId":"%s","mode":"test-gen","status":"in_progress","currentPhase":0}' "$TG_ID" \
57
+ | node "$HOME/.copilot/scripts/write-state.mjs" "$S/agent-state.json" >/dev/null
58
+ export MULTI_AGENT_TASK_ID="$TG_ID"
59
+ bash "$HOME/.copilot/scripts/phase-tracker.sh" init "$TG_ID"
60
+ for p in "0:Prepare" "1:Inventory" "2:Discovery" "3:Handles" "4:Tests" "5:Report"; do
61
+ bash "$HOME/.copilot/scripts/phase-tracker.sh" add "${p%%:*}" "${p#*:}"
62
+ done
63
+ bash "$HOME/.copilot/scripts/phase-tracker.sh" update 0 in_progress
64
+ ```
65
+
66
+ Each step below starts with `update <N> in_progress` and ends with
67
+ `update <N> completed` (Step 5 and Step 6 share step 4), every call prefixed
68
+ `MULTI_AGENT_TASK_ID=<the tg- id, written out> MULTI_AGENT_STRICT_TASK_ID=1`.
69
+ There is no task widget here: call `phase-tracker.sh render` after each
70
+ change, and close the record with `"status":"complete","currentPhase":5`
71
+ through the same `write-state.mjs` call when the report is written.
49
72
  2. Toolkit: `test_results_classify`, `coverage_gap` and `ui_locator_codegen`
50
73
  need `@mmerterden/multi-agent-toolkit-mcp` >= v3.25.0. Check the tool list
51
74
  once. Each missing tool has a fallback in `stages.md` (classify from the
@@ -131,7 +131,7 @@
131
131
  | core | `multi-agent-manual-test` | - | Switch to the active task's branch and prepare it for manual testing in Xcode. Phase 3 user-test step, standalone (the UI Bug Hunter lives a |
132
132
  | core | `multi-agent-model` | - | Turn the top model rung on or off and keep the cost ledger's pricing in step with it. Use when asked to enable or disable Fable, or which mo |
133
133
  | core | `multi-agent-office-off` | - | Close the office panel and stop its local server. Use when done with the panel. |
134
- | core | `multi-agent-office-on` | - | Open the office panel: a local browser page with agents at work, their chats, cost ledger and new runs. Use when you want to watch or drive |
134
+ | core | `multi-agent-office-on` | - | Open the office: a local browser page that shows runs and agents live and drives the ecosystem (new runs, jobs, PRs, keys, memory, system, c |
135
135
  | core | `multi-agent-office-status` | - | Whether the office panel is running, its URL (never the token) and its last actions. Use when unsure if the panel is open. |
136
136
  | core | `multi-agent-postmortem` | - | Post-mortem of a run from its session transcripts: loops, stalls, root-cause hypotheses on file:line, fixes. Read-only, redacted. Use when a |
137
137
  | core | `multi-agent-prune-logs` | - | Delete per-task project logs under ~/.claude/logs/multi-agent (filter by age/project/task). Audit trail + metrics are preserved. Dry-run fir |