@mmerterden/multi-agent-pipeline 20.29.0 → 20.33.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.
- package/CHANGELOG.md +86 -0
- package/README.md +50 -5
- package/README.tr.md +64 -5
- package/docs/architecture.md +3 -3
- package/docs/ecosystem.md +5 -5
- package/docs/facts.json +9 -9
- package/install/_unattended-profile.mjs +61 -0
- package/install/catalog-history.json +1 -1
- package/install/claude.mjs +19 -3
- package/install/codex.mjs +2 -0
- package/install/copilot.mjs +13 -0
- package/install/index.mjs +10 -1
- package/install/templates/claude-hooks.json +12 -1
- package/manifest.json +230 -88
- package/package.json +3 -1
- package/pipeline/commands/multi-agent/analysis/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +13 -15
- package/pipeline/commands/multi-agent/office-off/SKILL.md +27 -0
- package/pipeline/commands/multi-agent/office-on/SKILL.md +51 -0
- package/pipeline/commands/multi-agent/office-status/SKILL.md +29 -0
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +4 -1
- package/pipeline/commands/multi-agent/review/SKILL.md +4 -3
- package/pipeline/commands/multi-agent/scenario-audit/SKILL.md +4 -2
- package/pipeline/commands/multi-agent/serve/SKILL.md +4 -2
- package/pipeline/commands/multi-agent/stack/SKILL.md +15 -8
- package/pipeline/commands/multi-agent/steer/SKILL.md +10 -9
- package/pipeline/commands/multi-agent/sync/SKILL.md +15 -3
- package/pipeline/commands/multi-agent/test-gen/SKILL.md +29 -3
- package/pipeline/contract/CHANGELOG.md +108 -0
- package/pipeline/contract/README.md +72 -12
- package/pipeline/contract/fixtures/error-invalid-request.json +1 -1
- package/pipeline/contract/fixtures/error-unauthorized.json +1 -1
- package/pipeline/contract/fixtures/error-unsigned.json +1 -1
- package/pipeline/contract/fixtures/launch-plan.json +1 -1
- package/pipeline/contract/fixtures/runs-awaiting-question.json +6 -1
- package/pipeline/contract/fixtures/runs-empty.json +1 -1
- package/pipeline/contract/fixtures/runs-failed.json +6 -1
- package/pipeline/contract/fixtures/runs-old-schema.json +6 -1
- package/pipeline/contract/fixtures/runs-pr-opened-redacted.json +5 -1
- package/pipeline/contract/fixtures/runs-pr-opened.json +6 -1
- package/pipeline/contract/fixtures/runs-running.json +6 -1
- package/pipeline/contract/manifest.json +506 -27
- package/pipeline/contract/types/index.d.ts +829 -4
- package/pipeline/lib/bg-launch.mjs +106 -0
- package/pipeline/lib/code-digest.mjs +49 -0
- package/pipeline/lib/credential-resolve.mjs +42 -2
- package/pipeline/multi-agent-refs/cross-cli-contract.md +5 -4
- package/pipeline/multi-agent-refs/features/office-threat-model.md +109 -0
- package/pipeline/multi-agent-refs/features/unattended-security.md +1 -1
- package/pipeline/multi-agent-refs/help/en.md +3 -0
- package/pipeline/multi-agent-refs/help/tr.md +3 -0
- package/pipeline/multi-agent-refs/phases/modes.md +7 -7
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +16 -10
- package/pipeline/multi-agent-refs/review-standalone-tracker.md +37 -0
- package/pipeline/multi-agent-refs/tracker-contract.md +8 -3
- package/pipeline/office/NOTICE.md +45 -0
- package/pipeline/office/assets/ARCHIVE_BOXES.png +0 -0
- package/pipeline/office/assets/BIN.png +0 -0
- package/pipeline/office/assets/BOOKSHELF.png +0 -0
- package/pipeline/office/assets/CACTUS.png +0 -0
- package/pipeline/office/assets/CLOCK.png +0 -0
- package/pipeline/office/assets/COFFEE.png +0 -0
- package/pipeline/office/assets/COFFEE_MACHINE.png +0 -0
- package/pipeline/office/assets/COFFEE_TABLE.png +0 -0
- package/pipeline/office/assets/COUNTER_SINK.png +0 -0
- package/pipeline/office/assets/CUSHIONED_BENCH.png +0 -0
- package/pipeline/office/assets/CUSHIONED_CHAIR_BACK.png +0 -0
- package/pipeline/office/assets/CUSHIONED_CHAIR_FRONT.png +0 -0
- package/pipeline/office/assets/CUSHIONED_CHAIR_SIDE.png +0 -0
- package/pipeline/office/assets/DESK_FRONT.png +0 -0
- package/pipeline/office/assets/DESK_SIDE.png +0 -0
- package/pipeline/office/assets/DEVICE_STAND.png +0 -0
- package/pipeline/office/assets/DOUBLE_BOOKSHELF.png +0 -0
- package/pipeline/office/assets/FILING_CABINET.png +0 -0
- package/pipeline/office/assets/FRIDGE.png +0 -0
- package/pipeline/office/assets/HANGING_PLANT.png +0 -0
- package/pipeline/office/assets/LARGE_PAINTING.png +0 -0
- package/pipeline/office/assets/LARGE_PLANT.png +0 -0
- package/pipeline/office/assets/MAILBOX.png +0 -0
- package/pipeline/office/assets/MOP_BUCKET.png +0 -0
- package/pipeline/office/assets/PC_BACK.png +0 -0
- package/pipeline/office/assets/PC_FRONT_OFF.png +0 -0
- package/pipeline/office/assets/PC_FRONT_ON_1.png +0 -0
- package/pipeline/office/assets/PC_FRONT_ON_2.png +0 -0
- package/pipeline/office/assets/PC_FRONT_ON_3.png +0 -0
- package/pipeline/office/assets/PC_SIDE.png +0 -0
- package/pipeline/office/assets/PLANT.png +0 -0
- package/pipeline/office/assets/PLANT_2.png +0 -0
- package/pipeline/office/assets/POT.png +0 -0
- package/pipeline/office/assets/PRINTER.png +0 -0
- package/pipeline/office/assets/RECEPTION_DESK.png +0 -0
- package/pipeline/office/assets/SERVER_RACK.png +0 -0
- package/pipeline/office/assets/SERVER_RACK_2.png +0 -0
- package/pipeline/office/assets/SMALL_PAINTING.png +0 -0
- package/pipeline/office/assets/SMALL_PAINTING_2.png +0 -0
- package/pipeline/office/assets/SMALL_TABLE_FRONT.png +0 -0
- package/pipeline/office/assets/SMALL_TABLE_SIDE.png +0 -0
- package/pipeline/office/assets/SOFA_BACK.png +0 -0
- package/pipeline/office/assets/SOFA_FRONT.png +0 -0
- package/pipeline/office/assets/SOFA_SIDE.png +0 -0
- package/pipeline/office/assets/TABLE_FRONT.png +0 -0
- package/pipeline/office/assets/TOILET_STALL.png +0 -0
- package/pipeline/office/assets/VENDING.png +0 -0
- package/pipeline/office/assets/WASHBASIN.png +0 -0
- package/pipeline/office/assets/WATER_COOLER.png +0 -0
- package/pipeline/office/assets/WHITEBOARD.png +0 -0
- package/pipeline/office/assets/WOODEN_BENCH.png +0 -0
- package/pipeline/office/assets/WOODEN_CHAIR_BACK.png +0 -0
- package/pipeline/office/assets/WOODEN_CHAIR_FRONT.png +0 -0
- package/pipeline/office/assets/WOODEN_CHAIR_SIDE.png +0 -0
- package/pipeline/office/assets/char_0.png +0 -0
- package/pipeline/office/assets/char_1.png +0 -0
- package/pipeline/office/assets/char_2.png +0 -0
- package/pipeline/office/assets/char_3.png +0 -0
- package/pipeline/office/assets/char_4.png +0 -0
- package/pipeline/office/assets/char_5.png +0 -0
- package/pipeline/office/assets/floor_0.png +0 -0
- package/pipeline/office/assets/floor_1.png +0 -0
- package/pipeline/office/assets/floor_2.png +0 -0
- package/pipeline/office/assets/floor_3.png +0 -0
- package/pipeline/office/assets/floor_4.png +0 -0
- package/pipeline/office/assets/floor_5.png +0 -0
- package/pipeline/office/assets/floor_6.png +0 -0
- package/pipeline/office/assets/floor_7.png +0 -0
- package/pipeline/office/assets/floor_8.png +0 -0
- package/pipeline/office/assets/wall_0.png +0 -0
- package/pipeline/office/index.html +8431 -0
- package/pipeline/office/toolkit.json +3 -0
- package/pipeline/schemas/activity-chat.schema.json +78 -0
- package/pipeline/schemas/activity-roles.json +48 -0
- package/pipeline/schemas/activity-roles.schema.json +49 -0
- package/pipeline/schemas/activity.schema.json +613 -0
- package/pipeline/schemas/agent-state.schema.json +493 -115
- package/pipeline/schemas/autopilot-on-request.schema.json +33 -0
- package/pipeline/schemas/autopilot-on.schema.json +111 -0
- package/pipeline/schemas/contract-error.schema.json +45 -4
- package/pipeline/schemas/issue-maturity.schema.json +68 -0
- package/pipeline/schemas/job-change.schema.json +72 -0
- package/pipeline/schemas/job-request.schema.json +38 -0
- package/pipeline/schemas/launch.json +4 -4
- package/pipeline/schemas/ledger.schema.json +202 -0
- package/pipeline/schemas/office-credentials.schema.json +71 -0
- package/pipeline/schemas/office-jobs.json +253 -0
- package/pipeline/schemas/office-jobs.schema.json +62 -0
- package/pipeline/schemas/office-memory.schema.json +105 -0
- package/pipeline/schemas/office-settings-request.schema.json +30 -0
- package/pipeline/schemas/office-settings.schema.json +67 -0
- package/pipeline/schemas/permissions.schema.json +47 -0
- package/pipeline/schemas/phases.json +10 -2
- package/pipeline/schemas/phases.schema.json +86 -19
- package/pipeline/schemas/prefs.schema.json +19 -0
- package/pipeline/schemas/prs.schema.json +78 -0
- package/pipeline/schemas/prune-logs-request.schema.json +26 -0
- package/pipeline/schemas/prune-logs.schema.json +52 -0
- package/pipeline/schemas/repo-change.schema.json +54 -0
- package/pipeline/schemas/repo-request.schema.json +29 -0
- package/pipeline/schemas/repos.schema.json +49 -1
- package/pipeline/schemas/review-verdict-request.schema.json +20 -0
- package/pipeline/schemas/review-verdict.schema.json +62 -0
- package/pipeline/schemas/routine-delete.schema.json +59 -0
- package/pipeline/schemas/routines.schema.json +38 -0
- package/pipeline/schemas/run-evidence.schema.json +29 -0
- package/pipeline/schemas/run-results.schema.json +218 -0
- package/pipeline/schemas/runs-index.schema.json +257 -46
- package/pipeline/schemas/service-read.schema.json +58 -0
- package/pipeline/schemas/stack-change.schema.json +82 -0
- package/pipeline/schemas/stack-request.schema.json +33 -0
- package/pipeline/schemas/stack.schema.json +59 -0
- package/pipeline/schemas/steer-request.schema.json +25 -0
- package/pipeline/schemas/steer.schema.json +59 -0
- package/pipeline/schemas/system-status.schema.json +111 -0
- package/pipeline/schemas/tool-call-request.schema.json +19 -0
- package/pipeline/schemas/tool-call.schema.json +47 -0
- package/pipeline/schemas/tools.schema.json +65 -0
- package/pipeline/schemas/unattended-profile.json +7 -2
- package/pipeline/scripts/_active-run.mjs +2 -1
- package/pipeline/scripts/_cost.mjs +66 -1
- package/pipeline/scripts/_office-smoke-lib.sh +115 -0
- package/pipeline/scripts/_spawn-async.mjs +77 -0
- package/pipeline/scripts/_transcript-tail.mjs +274 -0
- package/pipeline/scripts/activity-snapshot.mjs +1223 -0
- package/pipeline/scripts/autopilot-control.mjs +214 -9
- package/pipeline/scripts/autopilot-runner.mjs +7 -5
- package/pipeline/scripts/contract-server.mjs +1853 -197
- package/pipeline/scripts/cost-analyze.mjs +2 -53
- package/pipeline/scripts/cost-table.json +1 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -1
- package/pipeline/scripts/job-launch.mjs +477 -0
- package/pipeline/scripts/launch-request.mjs +94 -9
- package/pipeline/scripts/office-build.mjs +226 -0
- package/pipeline/scripts/office-control.mjs +410 -0
- package/pipeline/scripts/office-credentials.mjs +106 -0
- package/pipeline/scripts/office-ledger.mjs +409 -0
- package/pipeline/scripts/office-memory.mjs +200 -0
- package/pipeline/scripts/office-prune.mjs +125 -0
- package/pipeline/scripts/office-settings.mjs +145 -0
- package/pipeline/scripts/phase-tracker.sh +12 -5
- package/pipeline/scripts/prune-logs.sh +53 -2
- package/pipeline/scripts/routine-registry.mjs +42 -6
- package/pipeline/scripts/run-results.mjs +373 -0
- package/pipeline/scripts/runs-index.mjs +62 -2
- package/pipeline/scripts/service-read.mjs +244 -0
- package/pipeline/scripts/stack-toggle.mjs +285 -0
- package/pipeline/scripts/steer-run.mjs +97 -0
- package/pipeline/scripts/system-status.mjs +196 -0
- package/pipeline/scripts/task-mirror.mjs +150 -0
- package/pipeline/scripts/task-mirror.sh +20 -0
- package/pipeline/scripts/toolkit-tools.mjs +625 -0
- package/pipeline/scripts/transcript-index.mjs +4 -1
- package/pipeline/scripts/uninstall.mjs +3 -0
- package/pipeline/scripts/work-items.mjs +473 -0
- package/pipeline/skills/.skill-manifest.json +23 -11
- package/pipeline/skills/.skills-index.json +34 -1
- package/pipeline/skills/shared/README.md +6 -3
- package/pipeline/skills/shared/core/multi-agent-autopilot-on/SKILL.md +13 -15
- package/pipeline/skills/shared/core/multi-agent-office-off/SKILL.md +16 -0
- package/pipeline/skills/shared/core/multi-agent-office-on/SKILL.md +21 -0
- package/pipeline/skills/shared/core/multi-agent-office-status/SKILL.md +17 -0
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +4 -1
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +19 -0
- package/pipeline/skills/shared/core/multi-agent-scenario-audit/SKILL.md +4 -2
- package/pipeline/skills/shared/core/multi-agent-serve/SKILL.md +4 -2
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +14 -6
- package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +10 -9
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-test-gen/SKILL.md +26 -3
- package/pipeline/skills/skills-index.md +4 -1
|
@@ -162,25 +162,23 @@ Render `templates/multi-agent-autopilot.plist.template` and show the resolved
|
|
|
162
162
|
"Configure only" is a real answer and the safe default to offer first: the queue
|
|
163
163
|
can be watched with `autopilot-status` for a while before anything runs.
|
|
164
164
|
|
|
165
|
-
On **Start
|
|
165
|
+
On **Start**, load the schedule and the awake agent with the same script the
|
|
166
|
+
office panel's `POST /v1/autopilot/on` calls, naming every repo selected in step 3:
|
|
166
167
|
|
|
167
168
|
```bash
|
|
168
|
-
|
|
169
|
-
|| launchctl load "$HOME/Library/LaunchAgents/com.multi-agent.autopilot.plist"
|
|
169
|
+
node "$HOME/.claude/scripts/autopilot-control.mjs" on --repo <owner/name> [--repo <owner/name>...]
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
-
|
|
173
|
-
`
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
.
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
the Mac may sleep between ticks until it is fixed. The schedule itself stays on.
|
|
183
|
-
"Configure only" installs neither.
|
|
172
|
+
It keeps exactly those repos in `config.json`, probes their credentials again
|
|
173
|
+
(`autopilot-arming.mjs probeCredentials`), renders
|
|
174
|
+
`templates/multi-agent-autopilot.plist.template` with its seven placeholders
|
|
175
|
+
(NODE, TICK, LABEL, ROOT, INTERVAL, HOME, CLAUDE), loads it with `launchctl
|
|
176
|
+
bootstrap` (falling back to `load`) and installs the awake agent with the
|
|
177
|
+
`awake.display` answer saved above. `scheduled: false` with probe problems means
|
|
178
|
+
nothing was loaded; say so with the problems. Exit 1 with `launchd refused`
|
|
179
|
+
means launchd refused the job: say so, with its path, and say the Mac may sleep
|
|
180
|
+
between ticks until it is fixed. "Configure only" is `--configure-only`, which
|
|
181
|
+
saves the selection and installs neither.
|
|
184
182
|
|
|
185
183
|
### 9. Report what is now true
|
|
186
184
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-office-off
|
|
3
|
+
description: "Close the office panel and stop its local server. Use when done with the panel."
|
|
4
|
+
user-invocable: true
|
|
5
|
+
metadata:
|
|
6
|
+
language: en
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent-office-off
|
|
10
|
+
|
|
11
|
+
1. `node "$HOME/.copilot/scripts/office-control.mjs" off --json`
|
|
12
|
+
2. Report in `outputLanguage`: whether a server was `stopped`, and the
|
|
13
|
+
`remote` line as given. A panel that was already closed is not an error.
|
|
14
|
+
|
|
15
|
+
Only the recorded server is signalled, and only when its token file, command
|
|
16
|
+
and start time still match.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-office-on
|
|
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
|
+
user-invocable: true
|
|
5
|
+
metadata:
|
|
6
|
+
language: en
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent-office-on
|
|
10
|
+
|
|
11
|
+
Starts (or reuses) the local contract server with the installed panel page
|
|
12
|
+
and opens the browser at `/office` with a one-time code in the URL fragment
|
|
13
|
+
(10 seconds, one use), which the page trades for the token.
|
|
14
|
+
|
|
15
|
+
1. `node "$HOME/.copilot/scripts/office-control.mjs" on --json`
|
|
16
|
+
2. Report in `outputLanguage`: `url` (it carries no code), whether the server
|
|
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.
|
|
19
|
+
|
|
20
|
+
Never print the token, read the token file or pass `--print-token`. The server
|
|
21
|
+
listens on 127.0.0.1 only; remote access is not part of this installation.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-office-status
|
|
3
|
+
description: "Whether the office panel is running, its URL (never the token) and its last actions. Use when unsure if the panel is open."
|
|
4
|
+
user-invocable: true
|
|
5
|
+
metadata:
|
|
6
|
+
language: en
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent-office-status
|
|
10
|
+
|
|
11
|
+
1. `node "$HOME/.copilot/scripts/office-control.mjs" status --json`
|
|
12
|
+
2. Report in `outputLanguage`: `running`, `url` and `idleMinutes`; the
|
|
13
|
+
`remote` line as given ("not available in this installation" unless a
|
|
14
|
+
separate remote layer is installed); `pairedDevices`; `recentActions`
|
|
15
|
+
(route, step, status, when; never a request body).
|
|
16
|
+
|
|
17
|
+
Never print the token or read the token file.
|
|
@@ -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).
|
|
@@ -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
|
|
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
|
|
69
|
+
--verdicts "$VERDICTS" --repo "<repo>" --lang "<outputLanguage>"
|
|
68
70
|
```
|
|
69
71
|
|
|
70
72
|
## Step 4 - Report
|
|
@@ -59,5 +59,7 @@ environment `launch.json` declares; the client starts the process.
|
|
|
59
59
|
`POST /v1/runs/{id}/answer` accepts only an option the run's pending question
|
|
60
60
|
offered. `POST /v1/runs/{id}/kill` and `POST /v1/gc` act only on a second
|
|
61
61
|
request carrying the single-use confirm token the first one returned, and a
|
|
62
|
-
kill never deletes the remote branch or the logs. Autopilot
|
|
63
|
-
|
|
62
|
+
kill never deletes the remote branch or the logs. Autopilot on, a stack change
|
|
63
|
+
and a routine removal take the same two steps, accept no browser origin but
|
|
64
|
+
the server's own page, and are tagged `local-only` for any future remote
|
|
65
|
+
carrier.
|
|
@@ -100,13 +100,21 @@ for ARG in "$@"; do
|
|
|
100
100
|
done
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- every stack toolkit **not** in `$ON` is set to `false` (leave non-`@multi-agent-plugins` entries untouched),
|
|
106
|
-
- `ai-common-toolkit@multi-agent-plugins` and `ai-analyst-toolkit@multi-agent-plugins` are always `true`,
|
|
107
|
-
- every `ai-*-engineering-toolkit@multi-agent-plugins` key is **deleted** (retired names).
|
|
103
|
+
Then write it with the one writer of these rules (the office panel's
|
|
104
|
+
`POST /v1/stack` calls the same script):
|
|
108
105
|
|
|
109
|
-
|
|
106
|
+
```bash
|
|
107
|
+
node "$HOME/.claude/scripts/stack-toggle.mjs" set --repo "$PWD" "$@" --json
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
`stack-toggle.mjs` applies the write rules above (selection `true`, every other
|
|
111
|
+
stack toolkit `false`, `ai-common-toolkit` and `ai-analyst-toolkit` always
|
|
112
|
+
`true`, retired `ai-*-engineering-toolkit` keys deleted, `xcode-integration@xcode-apple`
|
|
113
|
+
following `ios` when the Apple marketplace is linked, every other key kept),
|
|
114
|
+
writes the file atomically and prints the resulting `enabledPlugins`. It refuses
|
|
115
|
+
an empty selection and an unknown stack (exit 1) and never hand-edits the JSON.
|
|
116
|
+
`stack-toggle.mjs status --repo "$PWD" --json` is the read for status mode.
|
|
117
|
+
Then print the resulting `enabledPlugins` block and run step 5 (Copilot/Codex refresh offer).
|
|
110
118
|
|
|
111
119
|
## Notes
|
|
112
120
|
|
|
@@ -70,18 +70,19 @@ is being replaced.
|
|
|
70
70
|
and `$INSTRUCTION` the text from step 3:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
|
|
74
|
-
"$(node -e 'process.stdout.write(JSON.stringify(process.argv[1]))' "$INSTRUCTION")" \
|
|
75
|
-
"$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
76
|
-
| node $HOME/.claude/scripts/write-state.mjs "$STATE_FILE"
|
|
73
|
+
node "$HOME/.claude/scripts/steer-run.mjs" "$STATE_FILE" --text "$INSTRUCTION"
|
|
77
74
|
```
|
|
78
75
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
`steer-run.mjs` takes the same lock `write-state.mjs` owns and merges
|
|
77
|
+
`pendingSteer` (`text`, `at`, `appliedAt: null`, `appliedPhase: null`) into
|
|
78
|
+
the state; the instruction is passed as one argument and JSON-encoded by the
|
|
79
|
+
script, never by hand, so a quote or newline in it cannot produce invalid
|
|
80
|
+
JSON or a payload that merges into other fields. It refuses a finished run
|
|
81
|
+
(exit 1) and prints the unconsumed instruction it replaced, if any. The
|
|
82
|
+
office panel's `POST /v1/runs/{id}/steer` calls the same function.
|
|
82
83
|
|
|
83
|
-
Exit 2 (lock timeout
|
|
84
|
-
rather than forcing the write.
|
|
84
|
+
Exit 2 (usage) or a lock timeout → the task is mid-write. Retry once, then
|
|
85
|
+
report it rather than forcing the write.
|
|
85
86
|
|
|
86
87
|
6. **Confirm**: `🧭 Steer queued for #N - applies at the entry to Phase {N+1}`
|
|
87
88
|
|
|
@@ -33,7 +33,7 @@ Run all steps automatically:
|
|
|
33
33
|
```
|
|
34
34
|
Step 0: DOCTOR node $HOME/.claude/scripts/doctor.mjs - exit 2 or 4 STOPS the sync
|
|
35
35
|
Step 1: DETECT Compare timestamps, find stale targets
|
|
36
|
-
Step 2: COPILOT Claude Code -> Copilot CLI (instructions +
|
|
36
|
+
Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 69 sub-command skills)
|
|
37
37
|
Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + sub-command specs as refs + agent TOML)
|
|
38
38
|
Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub)
|
|
39
39
|
Step 3d: DEV-TOOLKIT Companion MCP server -> detect movement, ship gates, commit + publish
|
|
@@ -229,14 +229,14 @@ When invoked with the `release` argument:
|
|
|
229
229
|
|-------------|-------------|
|
|
230
230
|
| `~/.claude/commands/multi-agent/{cmd}/SKILL.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
|
|
231
231
|
|
|
232
|
-
**
|
|
232
|
+
**69 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
|
|
233
233
|
|
|
234
234
|
```
|
|
235
235
|
analysis, analysis-jira, analysis-resolve, autopilot, autopilot-off,
|
|
236
236
|
autopilot-on, autopilot-status, bug-bash, build-optimize, channels, complaint-analysis,
|
|
237
237
|
create-jira, design-check, diff-explain, doctor, estimate, feedback, forget,
|
|
238
238
|
garbage-collect, graph, help, ios-coding-standard, issue, jira, kill,
|
|
239
|
-
language, log, manual-test, model, postmortem, prune-logs,
|
|
239
|
+
language, log, manual-test, model, office-off, office-on, office-status, postmortem, prune-logs,
|
|
240
240
|
prune-prompts, purge, refactor, research, resume, review,
|
|
241
241
|
review-analysis, review-issue, review-jira, route-off, route-on,
|
|
242
242
|
route-status, routines, save, scaffold, scan, scenario-audit, search,
|
|
@@ -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.
|
|
47
|
-
|
|
48
|
-
|
|
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
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Auto-generated by `pipeline/scripts/build-skills-index.mjs` - do not hand-edit.
|
|
4
4
|
> Regenerate with `node pipeline/scripts/build-skills-index.mjs`.
|
|
5
5
|
|
|
6
|
-
**
|
|
6
|
+
**237 skills** across 2 groups.
|
|
7
7
|
|
|
8
8
|
| Group | Name | Platform | Description |
|
|
9
9
|
|-------|------|----------|-------------|
|
|
@@ -130,6 +130,9 @@
|
|
|
130
130
|
| core | `multi-agent-log` | - | Show the agent-log.md for the given task. With no ID, shows the most recent task. Use when asked what a task did, or to read its log. |
|
|
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
|
+
| 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: a local browser page that shows runs and agents live and drives the ecosystem (new runs, jobs, PRs, keys, memory, system, c |
|
|
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. |
|
|
133
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 |
|
|
134
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 |
|
|
135
138
|
| core | `multi-agent-prune-prompts` | - | Zero-base prompt review: measure the always-on instruction footprint, classify every rule block, propose keep/trial-removal/delete; applies |
|