@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.33.0",
|
|
4
4
|
"description": "6-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -86,6 +86,8 @@
|
|
|
86
86
|
"CHANGELOG.md",
|
|
87
87
|
"LICENSE",
|
|
88
88
|
"SECURITY.md",
|
|
89
|
+
"!pipeline/office-src/**",
|
|
90
|
+
"!pipeline/office-art/**",
|
|
89
91
|
"!pipeline/scripts/smoke-figma-config-schema.sh",
|
|
90
92
|
"!pipeline/scripts/smoke-personal-data.sh",
|
|
91
93
|
"!pipeline/scripts/validate-prefs.mjs",
|
|
@@ -117,7 +117,7 @@ Two channels run in parallel at every phase boundary:
|
|
|
117
117
|
```bash
|
|
118
118
|
# Phase 0, very first shell call (every CLI):
|
|
119
119
|
bash $HOME/.claude/scripts/phase-tracker.sh init "$TASK_ID"
|
|
120
|
-
for p in "0:
|
|
120
|
+
for p in "0:Intake" "1:Evidence" "2:Synthesis" "3:Review" "4:Publish" "5:Report"; do
|
|
121
121
|
bash $HOME/.claude/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
|
|
122
122
|
done
|
|
123
123
|
bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
@@ -131,13 +131,13 @@ bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out> [cached]
|
|
|
131
131
|
|
|
132
132
|
### Visual channel - Claude Code (native TaskList widget, required)
|
|
133
133
|
|
|
134
|
-
In Claude Code the agent MUST also drive the native TaskList widget so the user sees a sticky phase tile stack - this is the only progress signal Claude Code surfaces. Register one tile per phase of the active set (`0:
|
|
134
|
+
In Claude Code the agent MUST also drive the native TaskList widget so the user sees a sticky phase tile stack - this is the only progress signal Claude Code surfaces. Register one tile per phase of the active set (`0:Intake 1:Evidence 2:Synthesis 3:Review 4:Publish 5:Report`) with `TaskCreate`, persist each `taskId` via `phase-tracker.sh meta <N> tasklist_id "<taskId>"`, and at every phase entry, sub-step and exit pair a `TaskUpdate` (status or `activeForm`) with the matching `phase-tracker.sh update`. Call pattern: `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "Call pattern". Mirror each with `phase-tracker.sh task` ("Mirroring the host's task list").
|
|
135
135
|
|
|
136
|
-
`analysis` mode
|
|
136
|
+
`analysis` mode TaskCreates all 6 phases (no phase is skipped).
|
|
137
137
|
|
|
138
138
|
#### TaskCreate ordering (strict)
|
|
139
139
|
|
|
140
|
-
**All TaskCreate calls in a batch fire in strict phase-number order BEFORE any TaskUpdate is applied**, and a later batch only ever appends phases numbered above everything already registered. For `analysis` that means: Phase 0 → Phase 1 → Phase 3 → Phase 4 → Phase 5. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks (e.g. `1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐`) even when the underlying state is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN - register the tile in order, then flip status via TaskUpdate when the phase actually short-circuits. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
|
|
140
|
+
**All TaskCreate calls in a batch fire in strict phase-number order BEFORE any TaskUpdate is applied**, and a later batch only ever appends phases numbered above everything already registered. For `analysis` that means: Phase 0 → Phase 1 → Phase 2 → Phase 3 → Phase 4 → Phase 5. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks (e.g. `1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐`) even when the underlying state is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN - register the tile in order, then flip status via TaskUpdate when the phase actually short-circuits. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
|
|
141
141
|
|
|
142
142
|
### Visual channel - Copilot CLI / plain shell
|
|
143
143
|
|
|
@@ -206,25 +206,23 @@ installer puts it; the runner tries the captured path first, then that `PATH`.
|
|
|
206
206
|
"Configure only" is a real answer and the safe default to offer first: the queue
|
|
207
207
|
can be watched with `autopilot-status` for a while before anything runs.
|
|
208
208
|
|
|
209
|
-
On **Start
|
|
209
|
+
On **Start**, load the schedule and the awake agent with the same script the
|
|
210
|
+
office panel's `POST /v1/autopilot/on` calls, naming every repo selected in step 3:
|
|
210
211
|
|
|
211
212
|
```bash
|
|
212
|
-
|
|
213
|
-
|| launchctl load "$HOME/Library/LaunchAgents/com.multi-agent.autopilot.plist"
|
|
213
|
+
node "$HOME/.claude/scripts/autopilot-control.mjs" on --repo <owner/name> [--repo <owner/name>...]
|
|
214
214
|
```
|
|
215
215
|
|
|
216
|
-
|
|
217
|
-
`
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
.
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
the Mac may sleep between ticks until it is fixed. The schedule itself stays on.
|
|
227
|
-
"Configure only" installs neither.
|
|
216
|
+
It keeps exactly those repos in `config.json`, probes their credentials again
|
|
217
|
+
(`autopilot-arming.mjs probeCredentials`), renders
|
|
218
|
+
`templates/multi-agent-autopilot.plist.template` with its seven placeholders
|
|
219
|
+
(NODE, TICK, LABEL, ROOT, INTERVAL, HOME, CLAUDE), loads it with `launchctl
|
|
220
|
+
bootstrap` (falling back to `load`) and installs the awake agent with the
|
|
221
|
+
`awake.display` answer saved above. `scheduled: false` with probe problems means
|
|
222
|
+
nothing was loaded; say so with the problems. Exit 1 with `launchd refused`
|
|
223
|
+
means launchd refused the job: say so, with its path, and say the Mac may sleep
|
|
224
|
+
between ticks until it is fixed. "Configure only" is `--configure-only`, which
|
|
225
|
+
saves the selection and installs neither.
|
|
228
226
|
|
|
229
227
|
### 9. Report what is now true
|
|
230
228
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Close the office panel and stop its local server. Use when done with the panel."
|
|
3
|
+
description-tr: "Ofis panelini hemen kapatır: office-on'un başlattığı yerel sözleşme sunucusunu durdurur. Arkada hiçbir şey kalmaz (relay yok, oturum yok, izleyici yok)."
|
|
4
|
+
argument-hint: "(no arguments)"
|
|
5
|
+
parameters: []
|
|
6
|
+
gui: button
|
|
7
|
+
destructive: false
|
|
8
|
+
confirm: none
|
|
9
|
+
allowed-tools: Bash
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# multi-agent office-off - close the panel
|
|
13
|
+
|
|
14
|
+
Stops the server `office-on` started, through the same script:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
node "$HOME/.claude/scripts/office-control.mjs" off --json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Only the pid `office-on` recorded is signalled (SIGTERM), and only when its
|
|
21
|
+
token file still names it, its command is `contract-server.mjs` and its start
|
|
22
|
+
time matches; no other process is looked up or touched. The server removes its
|
|
23
|
+
token file on the way out, so the old page stops working.
|
|
24
|
+
|
|
25
|
+
Report in `outputLanguage`: whether a server was stopped (`stopped`), and the
|
|
26
|
+
`remote` line as the script gives it. A panel that was already closed is not
|
|
27
|
+
an error.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
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."
|
|
3
|
+
description-tr: "Ofisi açar: koşuları ve ajanları canlı gösteren, ekosistemi yöneten yerel web sayfası (yeni koşu, işler, PR'lar, anahtarlar, hafıza, sistem, temizlik). Yerel sözleşme sunucusunu gerektiğinde başlatır; sunucu /multi-agent:office-off ile durdurulana kadar çalışır."
|
|
4
|
+
argument-hint: "(no arguments)"
|
|
5
|
+
parameters: []
|
|
6
|
+
gui: button
|
|
7
|
+
destructive: false
|
|
8
|
+
confirm: none
|
|
9
|
+
allowed-tools: Bash
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# multi-agent office-on - open the panel
|
|
13
|
+
|
|
14
|
+
The panel is a page (`$HOME/.claude/office/index.html`) served by the
|
|
15
|
+
pipeline's local contract server (`contract-server.mjs`, 127.0.0.1 only, a
|
|
16
|
+
fresh bearer token per start). This command and `office-off` /
|
|
17
|
+
`office-status` share one script, `office-control.mjs`.
|
|
18
|
+
|
|
19
|
+
## Steps
|
|
20
|
+
|
|
21
|
+
1. **Start or reuse the server and open the browser:**
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
node "$HOME/.claude/scripts/office-control.mjs" on --json
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
It starts `contract-server.mjs` in the background with the panel page, or
|
|
28
|
+
reuses the one it started earlier, then opens the browser at `/office` with
|
|
29
|
+
a one-time code in the URL fragment (valid 10 seconds, one use, handed over
|
|
30
|
+
through a 0600 launcher file, never on a command line), which the
|
|
31
|
+
page trades for the token. The token is never printed; do not read the
|
|
32
|
+
token file or pass `--print-token` yourself, since anything printed lands
|
|
33
|
+
in this transcript.
|
|
34
|
+
|
|
35
|
+
2. **Report** (in `outputLanguage`): the page URL (`url`, without a code),
|
|
36
|
+
whether a server was started or reused (`restarted` true means the running
|
|
37
|
+
one was older than the installed pipeline and was replaced), that it keeps
|
|
38
|
+
running until `/multi-agent:office-off` stops it. If `opened` is false, tell the user
|
|
39
|
+
to run the command again from a desktop session; a link works once, so a
|
|
40
|
+
reload of the page needs a new `office-on`.
|
|
41
|
+
|
|
42
|
+
## What it does not do
|
|
43
|
+
|
|
44
|
+
- No daemon or file watcher beside the one server, which runs until
|
|
45
|
+
`office-off`, and no hook of its own: the task lists come from the
|
|
46
|
+
`task-mirror` hook that install registers for every run.
|
|
47
|
+
- The panel's writes call the same scripts the terminal commands call; it adds
|
|
48
|
+
no behaviour of its own.
|
|
49
|
+
- The server listens on 127.0.0.1 only. Remote access is not part of this
|
|
50
|
+
installation; `office-status` says whether a separate remote layer is
|
|
51
|
+
present.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Whether the office panel is running, its URL (never the token) and its last actions. Use when unsure if the panel is open."
|
|
3
|
+
description-tr: "Ofis panelinin durumunu raporlar: yerel sunucu çalışıyor mu, sayfa adresi (token asla), boşta kapanma süresi, uzak erişim, eşleşmiş telefonlar ve panelden yapılan son işlemler."
|
|
4
|
+
argument-hint: "(no arguments)"
|
|
5
|
+
parameters: []
|
|
6
|
+
gui: button
|
|
7
|
+
destructive: false
|
|
8
|
+
confirm: none
|
|
9
|
+
allowed-tools: Bash
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# multi-agent office-status - what the panel is doing
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
node "$HOME/.claude/scripts/office-control.mjs" status --json
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Report in `outputLanguage`:
|
|
19
|
+
|
|
20
|
+
- `running`, and when it is, `url` and `idleMinutes` (0 means it runs until `office-off`);
|
|
21
|
+
- `remote`: "not available in this installation" unless a separate remote
|
|
22
|
+
layer is installed; report the line as given;
|
|
23
|
+
- `pairedDevices`: the devices the phone registry lists; revoking one is
|
|
24
|
+
`phone-devices.mjs revoke`;
|
|
25
|
+
- `recentActions`: the last writes taken through the server (route, step,
|
|
26
|
+
status, when, and whether from the panel page), from
|
|
27
|
+
`office-actions.jsonl`. They carry no request body.
|
|
28
|
+
|
|
29
|
+
Never print the token or read the token file.
|
|
@@ -21,7 +21,10 @@ whole task dirs, with optional age / project / task filters.
|
|
|
21
21
|
Backed by `$HOME/.claude/scripts/prune-logs.sh`. Safe by default: it previews
|
|
22
22
|
and deletes nothing until you confirm. The audit trail (`audit.jsonl` +
|
|
23
23
|
rotations) and the metrics corpus (`metrics.jsonl`, `metrics-summary.md`) live
|
|
24
|
-
at the log-root top level and are never removed; `.counter` files survive too.
|
|
24
|
+
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
|
|
25
|
+
finished, abandoned or cancelled) keeps its log however old it is, and
|
|
26
|
+
so does a folder written in the last 10 minutes; `--task` names one dir and
|
|
27
|
+
bypasses both.
|
|
25
28
|
|
|
26
29
|
Unlike `/multi-agent:purge` (which wipes worktrees, branches, logs, and state
|
|
27
30
|
together), this only removes log dirs and leaves your worktrees and branches
|
|
@@ -41,10 +41,11 @@ Branch-mode runs print to chat only. PR-mode runs print to chat AND post the ver
|
|
|
41
41
|
: "${TASK_ID:=review-$(date +%s)-$$}"
|
|
42
42
|
export TASK_ID
|
|
43
43
|
|
|
44
|
-
# Clean up scratch files on exit so /tmp doesn't accumulate diffs and SHAs.
|
|
45
44
|
trap 'rm -f /tmp/multi-agent-review-${TASK_ID}-*' EXIT
|
|
46
45
|
```
|
|
47
46
|
|
|
47
|
+
Standalone only (a `review-` id): register a tracker record per `$HOME/.claude/multi-agent-refs/review-standalone-tracker.md`.
|
|
48
|
+
|
|
48
49
|
### 1. Parse the input - pick a resolution path
|
|
49
50
|
|
|
50
51
|
```bash
|
|
@@ -379,10 +380,10 @@ If the post fails (network, token, harness block), `post-pr-review.sh` exits non
|
|
|
379
380
|
Per the `$HOME/.claude/multi-agent-refs/tracker-contract.md` tokens contract, after each reviewer LLM call:
|
|
380
381
|
|
|
381
382
|
```bash
|
|
382
|
-
bash $HOME/.claude/scripts/phase-tracker.sh tokens
|
|
383
|
+
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <input_count> <output_count>
|
|
383
384
|
```
|
|
384
385
|
|
|
385
|
-
|
|
386
|
+
`<N>`: the run's Review phase, or step 2 for a standalone review.
|
|
386
387
|
|
|
387
388
|
## Input matrix
|
|
388
389
|
|
|
@@ -55,7 +55,9 @@ Read the candidate lines it returns. A term nothing matched is listed under
|
|
|
55
55
|
|
|
56
56
|
## Step 3 - Verdict
|
|
57
57
|
|
|
58
|
-
Write
|
|
58
|
+
Write the verdicts to a file in a folder of this run's own
|
|
59
|
+
(`VERDICTS="$(mktemp -d)/verdicts.json"`, never a fixed `/tmp` name another
|
|
60
|
+
user or a second audit could share): `[{id, status, citations, searched, note}]`.
|
|
59
61
|
|
|
60
62
|
| Status | When | Needs |
|
|
61
63
|
|---|---|---|
|
|
@@ -66,7 +68,7 @@ Write `/tmp/ma-verdicts.json`: `[{id, status, citations, searched, note}]`.
|
|
|
66
68
|
|
|
67
69
|
```bash
|
|
68
70
|
node "$HOME/.claude/scripts/scenario-audit.mjs" verify --csv "<scenarios.csv>" \
|
|
69
|
-
--verdicts
|
|
71
|
+
--verdicts "$VERDICTS" --repo "<repo>" --lang "<outputLanguage>"
|
|
70
72
|
```
|
|
71
73
|
|
|
72
74
|
## Step 4 - Report
|
|
@@ -61,5 +61,7 @@ environment `launch.json` declares; the client starts the process.
|
|
|
61
61
|
`POST /v1/runs/{id}/answer` accepts only an option the run's pending question
|
|
62
62
|
offered. `POST /v1/runs/{id}/kill` and `POST /v1/gc` act only on a second
|
|
63
63
|
request carrying the single-use confirm token the first one returned, and a
|
|
64
|
-
kill never deletes the remote branch or the logs. Autopilot
|
|
65
|
-
|
|
64
|
+
kill never deletes the remote branch or the logs. Autopilot on, a stack change
|
|
65
|
+
and a routine removal take the same two steps, accept no browser origin but
|
|
66
|
+
the server's own page, and are tagged `local-only` for any future remote
|
|
67
|
+
carrier.
|
|
@@ -105,14 +105,21 @@ ON=$(MP="$MP" node -e 'import(process.env.HOME+"/.claude/scripts/_stack-routing.
|
|
|
105
105
|
})' "$@") || exit 1
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
108
|
+
Then write it with the one writer of these rules (the office panel's
|
|
109
|
+
`POST /v1/stack` calls the same script):
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
node "$HOME/.claude/scripts/stack-toggle.mjs" set --repo "$PWD" "$@" --json
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`stack-toggle.mjs` applies the write rules above (selection `true`, every other
|
|
116
|
+
stack toolkit `false`, `ai-common-toolkit` and `ai-analyst-toolkit` always
|
|
117
|
+
`true`, retired `ai-*-engineering-toolkit` keys deleted, `xcode-integration@xcode-apple`
|
|
118
|
+
following `ios` when the Apple marketplace is linked, every other key kept),
|
|
119
|
+
writes the file atomically and prints the resulting `enabledPlugins`. It refuses
|
|
120
|
+
an empty selection and an unknown stack (exit 1) and never hand-edits the JSON.
|
|
121
|
+
`stack-toggle.mjs status --repo "$PWD" --json` is the read for status mode.
|
|
122
|
+
Then print the resulting `enabledPlugins` block and run step 5 (Copilot/Codex refresh offer).
|
|
116
123
|
|
|
117
124
|
## Notes
|
|
118
125
|
|
|
@@ -71,18 +71,19 @@ is being replaced.
|
|
|
71
71
|
and `$INSTRUCTION` the text from step 3:
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
|
|
75
|
-
"$(node -e 'process.stdout.write(JSON.stringify(process.argv[1]))' "$INSTRUCTION")" \
|
|
76
|
-
"$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
77
|
-
| node $HOME/.claude/scripts/write-state.mjs "$STATE_FILE"
|
|
74
|
+
node "$HOME/.claude/scripts/steer-run.mjs" "$STATE_FILE" --text "$INSTRUCTION"
|
|
78
75
|
```
|
|
79
76
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
`steer-run.mjs` takes the same lock `write-state.mjs` owns and merges
|
|
78
|
+
`pendingSteer` (`text`, `at`, `appliedAt: null`, `appliedPhase: null`) into
|
|
79
|
+
the state; the instruction is passed as one argument and JSON-encoded by the
|
|
80
|
+
script, never by hand, so a quote or newline in it cannot produce invalid
|
|
81
|
+
JSON or a payload that merges into other fields. It refuses a finished run
|
|
82
|
+
(exit 1) and prints the unconsumed instruction it replaced, if any. The
|
|
83
|
+
office panel's `POST /v1/runs/{id}/steer` calls the same function.
|
|
83
84
|
|
|
84
|
-
Exit 2 (lock timeout
|
|
85
|
-
rather than forcing the write.
|
|
85
|
+
Exit 2 (usage) or a lock timeout → the task is mid-write. Retry once, then
|
|
86
|
+
report it rather than forcing the write.
|
|
86
87
|
|
|
87
88
|
6. **Confirm**: `🧭 Steer queued for #N - applies at the entry to Phase {N+1}`
|
|
88
89
|
|
|
@@ -73,12 +73,13 @@ Run every step automatically:
|
|
|
73
73
|
```
|
|
74
74
|
Step 0: DOCTOR doctor.mjs - exit 2 or 4 stops the sync
|
|
75
75
|
Step 1.5: DETECT Compare timestamps, find stale targets
|
|
76
|
-
Step 2: COPILOT Claude Code -> Copilot CLI (instructions +
|
|
76
|
+
Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 69 sub-command skills)
|
|
77
77
|
Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + sub-command specs as refs + agent TOML)
|
|
78
78
|
Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub, bash -n on all sh)
|
|
79
79
|
Step 3c: PLUGINS pipeline shared/external -> multi-agent-plugins marketplace (rebuild knowledge/,
|
|
80
80
|
bump changed plugins' patch version, commit + push the plugins repo)
|
|
81
81
|
Step 3d: DEV-TOOLKIT companion MCP server -> detect movement, run the ship gates, commit + publish
|
|
82
|
+
Step 3e: OFFICE panel page is current, installed copies match it, toolkit version recorded
|
|
82
83
|
Step 4: WEBSITE Version + phase/model counts -> {website-host} (i18n + projects.ts)
|
|
83
84
|
Step 5: Commit Commit + push all changed repos
|
|
84
85
|
Step 6: Report Summary: synced targets, platform, changed files, deploy status, multi-agent-toolkit version
|
|
@@ -131,6 +132,7 @@ Step 0 gate rules and why: `features/doctor.md`.
|
|
|
131
132
|
- `~/.claude/CLAUDE.md`, `~/.claude/rules/`, `~/.claude/knowledge/`
|
|
132
133
|
- `~/.claude/scripts/` - EXCEPT `pre-commit-check.sh`, `agent-guard.sh`, `agent-guard.py`, and `build-stack-plugins.mjs` (generic, synced)
|
|
133
134
|
- `~/.claude/settings.json`
|
|
135
|
+
- `~/.claude/office/` - the office panel flows the other way: its source is the repo (`pipeline/office-src`, built by `office-build.mjs` into `pipeline/office`), and the installer copies it to each host. Never copy it from `~/.claude` into the repo; Step 3e checks it instead
|
|
134
136
|
- `~/.claude/multi-agent-refs/registries/` - the installer copies gate registries there from `pipeline/skills/shared/external`; the repo already holds the source
|
|
135
137
|
- **Any `~/.claude/commands/multi-agent/*/SKILL.md` whose frontmatter has `local-only: true`** - these are user/repo-specific alias wrappers that delegate to a private marketplace plugin's skills exposed as `multi-agent:<name>`. Syncing them would leak the private plugin/skill names into the public pipeline. Skip them at copy time; the backstop below proves none reached `pipeline/commands/`.
|
|
136
138
|
```bash
|
|
@@ -226,9 +228,19 @@ When invoked with the `release` argument:
|
|
|
226
228
|
8. WEBSITE Version + features -> {website-host} (maintainer identity, build verified Ready)
|
|
227
229
|
9. COPILOT Copilot CLI instructions + skills sync
|
|
228
230
|
9b. CODEX Codex CLI router skill + refs + agent TOML (node install.js --codex)
|
|
231
|
+
9c. OFFICE Step 3e: the installed panel matches the release
|
|
229
232
|
10. Report Summary: version, touched repos, deploy status
|
|
230
233
|
```
|
|
231
234
|
|
|
235
|
+
### Step 3e: OFFICE (every sync, and step 9c of a release)
|
|
236
|
+
|
|
237
|
+
The office panel ships with the pipeline, so a sync carries it by checking it, not by copying it:
|
|
238
|
+
|
|
239
|
+
1. `node ~/multi-agent-pipeline/pipeline/scripts/office-build.mjs --check`: the committed page is what `pipeline/office-src` builds to, and `office/toolkit.json` carries the toolkit version in `docs/facts.json`. Either stale fails the sync until it is rebuilt and committed; a release that regenerates facts rebuilds the office right after.
|
|
240
|
+
2. After the install steps, compare `pipeline/office/index.html` with the installed copies (`~/.claude/office/`, and the Copilot and Codex trees when installed), byte for byte, plus the asset list. A difference means the install is behind: run `node install.js --installed` and compare again.
|
|
241
|
+
3. Report the toolkit version the installed `office/toolkit.json` carries: it is what the office Tools window starts, and it moves forward with every release.
|
|
242
|
+
4. An office server that is already running picks the update up by itself: the open page shows a reload banner, and `/multi-agent:office-on` replaces a server whose code changed. Nothing to restart by hand.
|
|
243
|
+
|
|
232
244
|
---
|
|
233
245
|
|
|
234
246
|
## Sub-Command Sync (Claude Code <-> Copilot CLI Skills)
|
|
@@ -241,14 +253,14 @@ same specs as reference files rather than as peer skills, via Step 2b - see
|
|
|
241
253
|
|-------------|-------------|
|
|
242
254
|
| `~/.claude/commands/multi-agent/{cmd}/SKILL.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
|
|
243
255
|
|
|
244
|
-
**
|
|
256
|
+
**69 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
|
|
245
257
|
|
|
246
258
|
```
|
|
247
259
|
analysis, analysis-jira, analysis-resolve, autopilot, autopilot-off, autopilot-on,
|
|
248
260
|
autopilot-status, bug-bash, build-optimize, channels, complaint-analysis, create-jira,
|
|
249
261
|
design-check, diff-explain, doctor, estimate, feedback, forget, garbage-collect, graph, help,
|
|
250
262
|
ios-coding-standard, issue, jira, kill, language, log,
|
|
251
|
-
manual-test, model, postmortem, prune-logs, prune-prompts, purge, refactor, research, resume, review, review-analysis, review-issue, review-jira, route-off, route-on, route-status,
|
|
263
|
+
manual-test, model, office-off, office-on, office-status, postmortem, prune-logs, prune-prompts, purge, refactor, research, resume, review, review-analysis, review-issue, review-jira, route-off, route-on, route-status,
|
|
252
264
|
routines, save, scaffold, scan, scenario-audit, search, security-review, serve, setup, stack, status, steer, store-ready, sync, test,
|
|
253
265
|
test-accessibility, test-dark-mode, test-dynamic-type, test-gen, test-screenshots,
|
|
254
266
|
testflight-validation, uninstall, update
|
|
@@ -47,9 +47,32 @@ Scripts: `test-gen-gate.mjs` (artefact, handle and write gates),
|
|
|
47
47
|
## Step 1 - Prepare
|
|
48
48
|
|
|
49
49
|
1. Repo: `--repo`, else the current directory; confirm it in one line.
|
|
50
|
-
Platform: `--platform`, else detect as `/multi-agent:test` does.
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
Platform: `--platform`, else detect as `/multi-agent:test` does. One
|
|
51
|
+
timestamp names the run everywhere: `TS="$(date +%Y%m%d%H%M%S)"`, run id
|
|
52
|
+
`tg-$TS`, `RUN="$HOME/.claude/logs/test-gen/<repo>/$TS"`, created with
|
|
53
|
+
`mkdir -p "$RUN"`.
|
|
54
|
+
Register the run so its progress shows wherever runs are read (the office
|
|
55
|
+
panel, `/multi-agent:status`), with one step per stage below:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
TG_ID="tg-$TS"
|
|
59
|
+
S="${LOGS_ROOT:-$HOME/.claude/logs/multi-agent}/$TG_ID"; mkdir -p "$S"
|
|
60
|
+
printf '{"taskId":"%s","mode":"test-gen","status":"in_progress","currentPhase":0}' "$TG_ID" \
|
|
61
|
+
| node "$HOME/.claude/scripts/write-state.mjs" "$S/agent-state.json" >/dev/null
|
|
62
|
+
export MULTI_AGENT_TASK_ID="$TG_ID"
|
|
63
|
+
bash "$HOME/.claude/scripts/phase-tracker.sh" init "$TG_ID"
|
|
64
|
+
for p in "0:Prepare" "1:Inventory" "2:Discovery" "3:Handles" "4:Tests" "5:Report"; do
|
|
65
|
+
bash "$HOME/.claude/scripts/phase-tracker.sh" add "${p%%:*}" "${p#*:}"
|
|
66
|
+
done
|
|
67
|
+
bash "$HOME/.claude/scripts/phase-tracker.sh" update 0 in_progress
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Each step below starts with `update <N> in_progress` and ends with
|
|
71
|
+
`update <N> completed` (Step 5 and Step 6 share step 4), every call prefixed
|
|
72
|
+
`MULTI_AGENT_TASK_ID=<the tg- id, written out> MULTI_AGENT_STRICT_TASK_ID=1`
|
|
73
|
+
since it runs in a new shell where `$TG_ID` is gone, and on
|
|
74
|
+
Claude Code each gets a task-widget tile named as its tracker line
|
|
75
|
+
(`tracker-contract.md`, "Call pattern").
|
|
53
76
|
2. Toolkit: `test_results_classify`, `coverage_gap` and `ui_locator_codegen`
|
|
54
77
|
need `@mmerterden/multi-agent-toolkit-mcp` >= v3.25.0. Check the tool list
|
|
55
78
|
once. Each missing tool has a fallback in `stages.md` (classify from the
|
|
@@ -122,3 +145,6 @@ inventory, the gaps, the triage). Then record the change base
|
|
|
122
145
|
Offer, one question: open the product bugs through `/multi-agent` with each
|
|
123
146
|
failing test as the acceptance check, or stop. **No commit, no push, no issue
|
|
124
147
|
from this command.**
|
|
148
|
+
|
|
149
|
+
Last, close the run record: `phase-tracker.sh update 5 completed`, then the
|
|
150
|
+
same `write-state.mjs` call with `"status":"complete","currentPhase":5`.
|
|
@@ -3,6 +3,114 @@
|
|
|
3
3
|
Versions of the client contract (`manifest.json` `contractVersion`), separate
|
|
4
4
|
from the package version. See `README.md` for what counts as minor and major.
|
|
5
5
|
|
|
6
|
+
## 1.6.0
|
|
7
|
+
|
|
8
|
+
Added. Nothing existing changes shape.
|
|
9
|
+
|
|
10
|
+
- `GET /v1/system` (`system-status.mjs --json`): CPU, memory, disk and the
|
|
11
|
+
pipeline's own processes, numbers only.
|
|
12
|
+
- `GET /v1/credentials` (`office-credentials.mjs --json [--probe]`, local-only):
|
|
13
|
+
logical names, state and probe verdict per credential, never a value.
|
|
14
|
+
- `GET /v1/memory` (`office-memory.mjs --json`, local-only): per-repository code
|
|
15
|
+
graph age and learning, finding and session-note counts, redacted.
|
|
16
|
+
- `POST /v1/prune-logs` (two steps, local-only): the task log folders older than
|
|
17
|
+
7, 30 or 90 days, then a prune of exactly that list; 409 `changed` when the
|
|
18
|
+
folders moved since the preview.
|
|
19
|
+
- `GET /v1/settings` and `POST /v1/settings` (two steps, local-only, one change
|
|
20
|
+
at a time): output language, the fable rung and model routing; a route-on
|
|
21
|
+
preview names a saved free provider chain in `change.freeChain`.
|
|
22
|
+
- runs and run (1.3.0): `source`, `prNumber`, `mode`, `channels`, and the
|
|
23
|
+
local-only `channelUrls`, dropped from a redacted answer.
|
|
24
|
+
- activity, activity stream, agent chat, routines, routine delete, repo add and
|
|
25
|
+
remove (1.1.0): tables carry `source`, `pr`, `channels`, `waitingFor`,
|
|
26
|
+
`currentTask`, `progress` and each phase's `tasks`; seats carry their own
|
|
27
|
+
`tasks` and recent `mcp` calls.
|
|
28
|
+
- prs, issue maturity, review verdict (1.1.0): a pull request names the
|
|
29
|
+
`account` it was listed for, numbered in a redacted answer.
|
|
30
|
+
|
|
31
|
+
## 1.5.0
|
|
32
|
+
|
|
33
|
+
Added. Nothing existing changes shape.
|
|
34
|
+
|
|
35
|
+
- `GET /v1/repos?all=1` (`launch-request.mjs repos --all`): `suggested`
|
|
36
|
+
(checkouts earlier runs worked in that launch does not accept yet) and
|
|
37
|
+
`missing` (registered entries whose folder is gone), each with an `id`; a
|
|
38
|
+
page sees ids and names, never paths.
|
|
39
|
+
- `POST /v1/repos` (two steps, `repo-request.schema.json`,
|
|
40
|
+
`repo-change.schema.json`, `local-only`/`high`): register a suggestion by id
|
|
41
|
+
or an absolute path to a git checkout. `DELETE /v1/repos/{id}` (two steps)
|
|
42
|
+
removes a registered entry; configured autopilot repositories are not
|
|
43
|
+
touched.
|
|
44
|
+
- `version` on `GET /v1/tools`: the exact toolkit version the panel starts.
|
|
45
|
+
- `GET /v1/jobs` (`office-jobs.schema.json`): the jobs the office can start,
|
|
46
|
+
from `schemas/office-jobs.json`. `POST /v1/jobs` (two steps,
|
|
47
|
+
`job-request.schema.json`, `job-change.schema.json`, `local-only`/`high`)
|
|
48
|
+
starts one with `claude --bg` under the unattended profile; it is the one
|
|
49
|
+
route that starts a session itself.
|
|
50
|
+
- `--idle-minutes 0` and `--max-hours 0` mean no idle stop and no lifetime.
|
|
51
|
+
|
|
52
|
+
## 1.4.0
|
|
53
|
+
|
|
54
|
+
Added. Nothing existing changes shape; one narrowing for browser pages.
|
|
55
|
+
|
|
56
|
+
- `remote` and `risk` on every surface in `manifest.json` and every route in
|
|
57
|
+
`ROUTES`: the scope a remote carrier would require (`read`, `answer`,
|
|
58
|
+
`launch`, `local-only`) and the confirmation tier (`read`, `low`, `high`).
|
|
59
|
+
- `GET /v1/activity` and `GET /v1/activity/stream` (`activity.schema.json`):
|
|
60
|
+
a room per repository, a table (team) per run, a seat per agent; the stream is
|
|
61
|
+
`text/event-stream`, at most 4 at once (429 `too-many-streams`).
|
|
62
|
+
- `GET /v1/agents/{sessionId}/{agentId}/chat` (`activity-chat.schema.json`):
|
|
63
|
+
one page of an agent's transcript, redacted; `before`, `limit`.
|
|
64
|
+
- `POST /v1/autopilot/on` (two steps, `autopilot-on.schema.json`), `POST
|
|
65
|
+
/v1/runs/{id}/steer` (two steps, `launch`/`high`: the text and a preview
|
|
66
|
+
with a token bound to the run and the text, then the token alone;
|
|
67
|
+
`steer.schema.json`), `GET /v1/routines`, `DELETE /v1/routines/{name}` (two
|
|
68
|
+
steps), `GET /v1/stack`, `POST /v1/stack` (two steps).
|
|
69
|
+
- `GET /v1/ledger` (`ledger.schema.json`): tokens and estimated USD today, this
|
|
70
|
+
week and this month, by run, repository, model and phase, each amount with
|
|
71
|
+
its source; an unmeasurable run is `not-measured`, never 0.
|
|
72
|
+
- `GET /v1/runs/{id}/results` and `/evidence/{name}`: diff summary, review
|
|
73
|
+
findings, test outcome, screenshots and analysis documents from the run's
|
|
74
|
+
own files; a document is read only inside the run's roots (log directory,
|
|
75
|
+
artifacts, a worktree git lists) and only as Markdown or HTML.
|
|
76
|
+
- `GET /v1/issues/{key}/maturity` (lib/issue-fetcher.sh), `GET /v1/prs`
|
|
77
|
+
(GitHub; Bitbucket reported as not implemented), `POST
|
|
78
|
+
/v1/runs/{id}/review-verdict` (two steps, lib/post-pr-review.sh; only for a
|
|
79
|
+
finished review with every finding triaged, 409 `review-incomplete`
|
|
80
|
+
otherwise; the token is bound to the decision and `findingsDigest`, 409
|
|
81
|
+
`confirm-mismatch` when they changed).
|
|
82
|
+
- `GET /v1/tools`, `POST /v1/tools/{name}/call` (`local-only`): the
|
|
83
|
+
registered toolkit MCP server's tools, arguments checked against each
|
|
84
|
+
inputSchema, risk from each tool's annotations, and `allowed`/`reason`:
|
|
85
|
+
calls are denied by default (403 `tool-not-allowed`) except for read-only
|
|
86
|
+
tools that take no location and are outside the web and context families;
|
|
87
|
+
a `confirm` argument is refused; the toolkit child always runs with
|
|
88
|
+
`MULTI_AGENT_UNATTENDED=1` and `MCP_TOOLKIT_URL_POLICY=strict`.
|
|
89
|
+
- `GET /v1/services/confluence`, `/crashlytics`, `/figma`: one page, issue or
|
|
90
|
+
frame through the pipeline's existing clients; a Confluence URL only on the
|
|
91
|
+
configured host (409 `host-not-allowed`); one request per service at a time
|
|
92
|
+
(429 `busy`).
|
|
93
|
+
- `GET /v1/permissions`: the shape for pending host permission prompts;
|
|
94
|
+
`available: false` until the host records them readably.
|
|
95
|
+
- `GET /office`: the optional panel page, 404 when none is installed;
|
|
96
|
+
`POST /office/code` and `POST /office/exchange` hand the page the token
|
|
97
|
+
through a one-time 10 second code instead of a URL; `GET
|
|
98
|
+
/office/assets/<name>.png` serves its sprites.
|
|
99
|
+
- `--max-hours` (default 8): an absolute lifetime for the server.
|
|
100
|
+
- `contract-error.schema.json`: `no-selection`, `repo-not-configured`,
|
|
101
|
+
`invalid-config`, `not-installed`, `repo-ambiguous`, `unreadable-settings`,
|
|
102
|
+
`not-removable`, `not-steerable`, `too-many-streams`, `no-review`,
|
|
103
|
+
`upstream-failed`, `tool-not-allowed`, `busy`, `review-incomplete`,
|
|
104
|
+
`host-not-allowed`.
|
|
105
|
+
- Narrowed: a write (POST, DELETE) from a page on an `--allow-origin` origin is
|
|
106
|
+
now 403 `forbidden-origin`; only the server's own page may write. A native
|
|
107
|
+
client sends no Origin and is unaffected.
|
|
108
|
+
- `?repo=` also takes a repository name from `GET /v1/repos` (on the stack
|
|
109
|
+
route and on `POST /v1/launch`), since a browser reads that list redacted,
|
|
110
|
+
without paths. The repository must still be a configured or registered one:
|
|
111
|
+
an unknown name is 403 `repo-not-allowed`, an ambiguous one 409
|
|
112
|
+
`repo-ambiguous`. A relative path is no longer 400 but resolved as a name.
|
|
113
|
+
|
|
6
114
|
## 1.3.0
|
|
7
115
|
|
|
8
116
|
Added. Every new field is optional for a decoder: a run written before this
|