@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.
- package/CHANGELOG.md +123 -0
- package/README.md +47 -1
- package/README.tr.md +61 -1
- package/docs/adr/0018-cross-repo-links-not-a-global-graph.md +43 -0
- package/docs/adr/README.md +2 -1
- package/docs/facts.json +6 -5
- package/docs/features.md +1 -1
- package/install/_dev-only-files.mjs +1 -0
- package/install/_unattended-profile.mjs +61 -0
- package/install/catalog-history.json +1 -1
- package/install/claude.mjs +16 -2
- package/install/index.mjs +10 -1
- package/install/templates/claude-hooks.json +23 -1
- package/manifest.json +198 -134
- package/package.json +4 -1
- package/pipeline/agents/code-reviewer.md +9 -0
- package/pipeline/agents/explorer.md +4 -0
- package/pipeline/agents/plan-critic.md +4 -2
- package/pipeline/commands/multi-agent/SKILL.md +17 -136
- package/pipeline/commands/multi-agent/analysis/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/channels/SKILL.md +15 -297
- package/pipeline/commands/multi-agent/graph/SKILL.md +5 -2
- package/pipeline/commands/multi-agent/language/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/office-on/SKILL.md +8 -7
- package/pipeline/commands/multi-agent/office-status/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +4 -1
- package/pipeline/commands/multi-agent/resume/SKILL.md +8 -22
- package/pipeline/commands/multi-agent/review/SKILL.md +11 -134
- package/pipeline/commands/multi-agent/scenario-audit/SKILL.md +4 -2
- package/pipeline/commands/multi-agent/setup/SKILL.md +19 -224
- package/pipeline/commands/multi-agent/sync/SKILL.md +12 -0
- package/pipeline/commands/multi-agent/test-gen/SKILL.md +29 -3
- package/pipeline/contract/CHANGELOG.md +46 -0
- package/pipeline/contract/README.md +27 -10
- 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 +153 -19
- package/pipeline/contract/types/index.d.ts +304 -6
- 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/channels/generator.md +146 -0
- package/pipeline/multi-agent-refs/channels/menu.md +55 -0
- package/pipeline/multi-agent-refs/channels/multi-repo.md +6 -0
- package/pipeline/multi-agent-refs/channels/preview.md +25 -0
- package/pipeline/multi-agent-refs/channels/reference.md +98 -0
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +1 -1
- package/pipeline/multi-agent-refs/features/code-graph.md +27 -0
- package/pipeline/multi-agent-refs/features/office-threat-model.md +24 -6
- package/pipeline/multi-agent-refs/features/plan-critic.md +5 -2
- package/pipeline/multi-agent-refs/features/review-delta.md +4 -1
- package/pipeline/multi-agent-refs/features/scope-check.md +10 -1
- package/pipeline/multi-agent-refs/features/unattended-security.md +1 -1
- package/pipeline/multi-agent-refs/help/en.md +2 -2
- package/pipeline/multi-agent-refs/help/tr.md +2 -2
- package/pipeline/multi-agent-refs/knowledge.md +9 -0
- package/pipeline/multi-agent-refs/orchestrator/dispatcher.md +163 -0
- package/pipeline/multi-agent-refs/phases/modes.md +7 -7
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +4 -4
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +9 -8
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +12 -7
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +7 -3
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +19 -10
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/resume/details.md +35 -0
- package/pipeline/multi-agent-refs/review/inputs.md +87 -0
- package/pipeline/multi-agent-refs/review/module-guides.md +25 -0
- package/pipeline/multi-agent-refs/review/valven.md +42 -0
- package/pipeline/multi-agent-refs/review-standalone-tracker.md +37 -0
- package/pipeline/multi-agent-refs/setup/accounts.md +27 -0
- package/pipeline/multi-agent-refs/setup/app-store-connect.md +5 -0
- package/pipeline/multi-agent-refs/setup/firebase.md +5 -0
- package/pipeline/multi-agent-refs/setup/google-play.md +4 -0
- package/pipeline/multi-agent-refs/setup/hooks-and-plugins.md +21 -0
- package/pipeline/multi-agent-refs/setup/language.md +46 -0
- package/pipeline/multi-agent-refs/setup/multi-repo-group.md +51 -0
- package/pipeline/multi-agent-refs/setup/summaries.md +63 -0
- package/pipeline/multi-agent-refs/setup/token-save-flow.md +51 -0
- package/pipeline/multi-agent-refs/tracker-contract.md +8 -3
- package/pipeline/office/NOTICE.md +4 -1
- package/pipeline/office/assets/ARCHIVE_BOXES.png +0 -0
- package/pipeline/office/assets/COFFEE_MACHINE.png +0 -0
- package/pipeline/office/assets/COUNTER_SINK.png +0 -0
- package/pipeline/office/assets/DEVICE_STAND.png +0 -0
- package/pipeline/office/assets/FILING_CABINET.png +0 -0
- package/pipeline/office/assets/FRIDGE.png +0 -0
- package/pipeline/office/assets/MAILBOX.png +0 -0
- package/pipeline/office/assets/MOP_BUCKET.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/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/index.html +3936 -819
- package/pipeline/office/toolkit.json +3 -0
- package/pipeline/rules/response-shape.md +6 -7
- package/pipeline/schemas/activity.schema.json +188 -4
- package/pipeline/schemas/agent-state.schema.json +511 -115
- package/pipeline/schemas/contract-error.schema.json +12 -1
- 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/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/phases.json +14 -6
- package/pipeline/schemas/phases.schema.json +86 -19
- package/pipeline/schemas/plan-critique.schema.json +9 -2
- package/pipeline/schemas/planning-output.schema.json +25 -2
- package/pipeline/schemas/prefs.schema.json +24 -1
- package/pipeline/schemas/prs.schema.json +5 -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/reviewer-output.schema.json +20 -2
- package/pipeline/schemas/runs-index.schema.json +257 -46
- package/pipeline/schemas/system-status.schema.json +111 -0
- package/pipeline/schemas/token-budget.json +4 -4
- package/pipeline/schemas/tools.schema.json +5 -0
- package/pipeline/schemas/triage-output.schema.json +20 -2
- package/pipeline/schemas/unattended-profile.json +7 -2
- package/pipeline/scripts/_active-run.mjs +2 -1
- package/pipeline/scripts/_graph-analysis.mjs +270 -0
- package/pipeline/scripts/_memory-policy.mjs +165 -0
- package/pipeline/scripts/_secret-scan.mjs +105 -0
- package/pipeline/scripts/_spawn-async.mjs +9 -5
- package/pipeline/scripts/_unified-diff.mjs +2 -2
- package/pipeline/scripts/activity-snapshot.mjs +219 -23
- package/pipeline/scripts/autopilot-runner.mjs +7 -5
- package/pipeline/scripts/capture-flush.sh +12 -2
- package/pipeline/scripts/check-read-size.sh +9 -0
- package/pipeline/scripts/code-graph-rules/android.json +8 -3
- package/pipeline/scripts/contract-server.mjs +575 -28
- package/pipeline/scripts/debt-ledger.mjs +323 -0
- package/pipeline/scripts/file-context.mjs +261 -0
- package/pipeline/scripts/file-context.sh +20 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -1
- package/pipeline/scripts/graph-links.mjs +230 -0
- package/pipeline/scripts/graph-query.mjs +133 -1
- package/pipeline/scripts/graph-report.mjs +65 -0
- package/pipeline/scripts/job-launch.mjs +477 -0
- package/pipeline/scripts/launch-request.mjs +94 -9
- package/pipeline/scripts/learn-from-transcripts.mjs +12 -48
- package/pipeline/scripts/learnings-ledger.mjs +143 -24
- package/pipeline/scripts/office-build.mjs +148 -11
- package/pipeline/scripts/office-control.mjs +34 -7
- package/pipeline/scripts/office-credentials.mjs +106 -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/plan-critique-gate.mjs +11 -2
- package/pipeline/scripts/prune-logs.sh +53 -2
- package/pipeline/scripts/rework-rulings.mjs +106 -0
- package/pipeline/scripts/runs-index.mjs +62 -2
- package/pipeline/scripts/scope-check-gate.mjs +149 -2
- 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 +33 -7
- package/pipeline/scripts/transcript-index.mjs +4 -1
- package/pipeline/scripts/triage-memory.mjs +64 -37
- package/pipeline/scripts/validate-planning.mjs +68 -4
- package/pipeline/scripts/validate-reviewer.mjs +20 -0
- package/pipeline/scripts/validate-triage.mjs +107 -2
- package/pipeline/scripts/work-items.mjs +191 -22
- package/pipeline/skills/.skill-manifest.json +9 -9
- package/pipeline/skills/.skills-index.json +1 -1
- package/pipeline/skills/shared/README.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +5 -2
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +4 -4
- package/pipeline/skills/shared/core/multi-agent-office-on/SKILL.md +3 -4
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +4 -1
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +21 -0
- package/pipeline/skills/shared/core/multi-agent-scenario-audit/SKILL.md +4 -2
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +4 -4
- package/pipeline/skills/shared/core/multi-agent-test-gen/SKILL.md +26 -3
- package/pipeline/skills/skills-index.md +1 -1
|
@@ -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,52 @@
|
|
|
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
|
+
|
|
6
52
|
## 1.4.0
|
|
7
53
|
|
|
8
54
|
Added. Nothing existing changes shape; one narrowing for browser pages.
|
|
@@ -42,7 +42,11 @@ same bytes (`test/contract-parity.test.mjs`):
|
|
|
42
42
|
| Assigned issues | `issues.mjs --json [--source S] [--project K] [--max N]` | `GET /v1/issues` |
|
|
43
43
|
| Worktrees | `worktrees.mjs --json [--measure] [--redact]` | `GET /v1/worktrees` |
|
|
44
44
|
| Launch shape | `launch-request.mjs spec` | `GET /v1/launch-spec` |
|
|
45
|
-
| Launch repositories | `launch-request.mjs repos [--redact]` | `GET /v1/repos` |
|
|
45
|
+
| Launch repositories | `launch-request.mjs repos [--redact] [--all]` | `GET /v1/repos[?all=1]` |
|
|
46
|
+
| Add a launch repository (two steps; the route also requires a git checkout) | `launch-request.mjs register-repo <path>` | `POST /v1/repos` |
|
|
47
|
+
| Remove a registered repository (two steps) | - | `DELETE /v1/repos/{id}` |
|
|
48
|
+
| Office jobs | `job-launch.mjs list` | `GET /v1/jobs` |
|
|
49
|
+
| Start an office job (two steps) | - | `POST /v1/jobs` |
|
|
46
50
|
| Start a run | write the request file, then `launch-request.mjs plan FILE --repo P --session-id U [--channel phone]` | `POST /v1/launch?repo=P` |
|
|
47
51
|
| Answer a question | `answer-question.mjs STATE --question Q --answer IDS` | `POST /v1/runs/{id}/answer` |
|
|
48
52
|
| A run's log | `run-log.mjs ID [--tail N]` (1-2000, default 200) | `GET /v1/runs/{id}/log?tail=N` |
|
|
@@ -56,6 +60,12 @@ same bytes (`test/contract-parity.test.mjs`):
|
|
|
56
60
|
| Agent activity | `activity-snapshot.mjs --json` | `GET /v1/activity`, `GET /v1/activity/stream` (SSE) |
|
|
57
61
|
| An agent's chat | `activity-snapshot.mjs chat SESSION [AGENT] [--before N] [--limit N]` | `GET /v1/agents/{sessionId}/{agentId}/chat` |
|
|
58
62
|
| Cost ledger | `office-ledger.mjs --json` | `GET /v1/ledger` |
|
|
63
|
+
| Machine resources | `system-status.mjs --json` | `GET /v1/system` |
|
|
64
|
+
| Key cabinet (names and verdicts, never values) | `office-credentials.mjs --json [--probe]` | `GET /v1/credentials` |
|
|
65
|
+
| Institutional memory | `office-memory.mjs --json` | `GET /v1/memory` |
|
|
66
|
+
| Prune old run logs (two steps) | `office-prune.mjs preview\|apply N --json` | `POST /v1/prune-logs` |
|
|
67
|
+
| Office settings | `office-settings.mjs --json` | `GET /v1/settings` |
|
|
68
|
+
| Change one setting (two steps) | `office-settings.mjs set SETTING VALUE --json` | `POST /v1/settings` |
|
|
59
69
|
| What a run produced | `run-results.mjs ID --json` | `GET /v1/runs/{id}/results` |
|
|
60
70
|
| One screenshot | `run-results.mjs ID --evidence NAME` | `GET /v1/runs/{id}/evidence/{name}` |
|
|
61
71
|
| Post a review verdict (two steps) | `work-items.mjs verdict ID [--post]` | `POST /v1/runs/{id}/review-verdict` |
|
|
@@ -72,16 +82,19 @@ same bytes (`test/contract-parity.test.mjs`):
|
|
|
72
82
|
|
|
73
83
|
Every surface in `manifest.json` carries `remote` (the scope a remote carrier
|
|
74
84
|
would require: `read`, `answer`, `launch`, or `local-only` for anything that
|
|
75
|
-
widens what runs on this machine
|
|
76
|
-
gc) and
|
|
85
|
+
widens what runs on this machine (autopilot on, stack, routine removal, kill,
|
|
86
|
+
gc, prune, settings) and for a read that stays on this machine for privacy
|
|
87
|
+
(credentials, memory, settings)) and `risk` (the confirmation tier: `read`, `low`, `high`). Locally the
|
|
77
88
|
bearer token is the only credential; nothing enforces the tags yet. They are
|
|
78
89
|
there so a later carrier reuses these routes without redefining them.
|
|
79
90
|
|
|
80
|
-
Starting a run is
|
|
91
|
+
Starting a run is the client's act. `POST /v1/launch` validates the
|
|
81
92
|
request, writes it (0600) and returns the argv, environment and working
|
|
82
|
-
directory from `launch.json`;
|
|
83
|
-
|
|
84
|
-
a
|
|
93
|
+
directory from `launch.json`; spawn the argv without a shell. The office panel
|
|
94
|
+
is a client that starts its own: `POST /v1/jobs` (two steps, `local-only`)
|
|
95
|
+
starts a job from `schemas/office-jobs.json` in the background after the
|
|
96
|
+
unattended profile, workspace trust and sandbox checks. Besides that the only
|
|
97
|
+
`claude` the server runs is `claude stop`, for a kill. `launch.json` is marked `verified: false` until a live launch trial, so
|
|
85
98
|
treat the shape as provisional.
|
|
86
99
|
|
|
87
100
|
The run starts with no permission prompts, so its input is held to a shape: a
|
|
@@ -155,15 +168,19 @@ answer to the old one.
|
|
|
155
168
|
(own Origin only, no bearer); a used, expired or unknown code is 401.
|
|
156
169
|
`GET /office/assets/<name>.png` serves the page's sprites, also without a
|
|
157
170
|
token: a plain file name, a PNG of at most 256 KiB directly in the assets
|
|
158
|
-
directory beside the page, and 404 for anything else.
|
|
171
|
+
directory beside the page, and 404 for anything else. `GET /favicon.ico`
|
|
172
|
+
answers an empty 204 without a token, since browsers request it on their own.
|
|
159
173
|
- Every write route appends one line (who, route, step, status; never a body
|
|
160
174
|
or token) to `~/.claude/logs/multi-agent/office-actions.jsonl`.
|
|
161
175
|
- Bodies are JSON, at most 64 KiB, and must satisfy the route's schema.
|
|
162
176
|
- Errors follow `contract-error.schema.json`; switch on `error`, never on
|
|
163
177
|
`message`.
|
|
164
178
|
- Service reads, the work list, the review verdict and autopilot control run
|
|
165
|
-
in child processes and never block other routes
|
|
166
|
-
|
|
179
|
+
in child processes and never block other routes. A second write, or a
|
|
180
|
+
second service read, while the same one runs is 429 `busy`; a read whose
|
|
181
|
+
answer is the same for every caller (`GET /v1/prs`, `GET /v1/autopilot`,
|
|
182
|
+
`GET /v1/issues/{key}/maturity`) is answered from the run already in
|
|
183
|
+
flight instead.
|
|
167
184
|
- The server exits after 15 idle minutes (`--idle-minutes`), after 8 hours in
|
|
168
185
|
any case (`--max-hours`, an open event stream does not extend it) or on
|
|
169
186
|
SIGTERM. It is never a service; start it when you need it.
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"MULTI_AGENT_UNATTENDED": "1",
|
|
23
23
|
"MULTI_AGENT_SESSION_ID": "00000000-0000-4000-8000-000000000201",
|
|
24
24
|
"MCP_TOOLKIT_URL_POLICY": "strict",
|
|
25
|
-
"MCP_TOOLKIT_INDEX_DENY": "~/.ssh,~/.aws,~/.gnupg,~/Library/Keychains",
|
|
25
|
+
"MCP_TOOLKIT_INDEX_DENY": "~/.ssh,~/.aws,~/.gnupg,~/Library/Keychains,~/.claude/logs/multi-agent/contract-server,~/.claude/logs/multi-agent/office",
|
|
26
26
|
"LOGS_ROOT": "/Users/example/.multi-agent-unattended/logs",
|
|
27
27
|
"MA_LAUNCH_REQUEST": "/Users/example/.claude/autopilot/requests/00000000-0000-4000-8000-000000000201.json"
|
|
28
28
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion": "1.
|
|
2
|
+
"contractVersion": "1.3.0",
|
|
3
3
|
"logsRoot": "/Users/example/.claude/logs/multi-agent",
|
|
4
4
|
"count": 1,
|
|
5
5
|
"runs": [
|
|
@@ -68,7 +68,12 @@
|
|
|
68
68
|
"estUsd": 0,
|
|
69
69
|
"unlockedWrites": 0,
|
|
70
70
|
"runType": "autopilot",
|
|
71
|
+
"mode": null,
|
|
71
72
|
"title": null,
|
|
73
|
+
"source": null,
|
|
74
|
+
"prNumber": null,
|
|
75
|
+
"channels": [],
|
|
76
|
+
"channelUrls": {},
|
|
72
77
|
"progress": 0,
|
|
73
78
|
"currentTask": null,
|
|
74
79
|
"processAlive": false
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion": "1.
|
|
2
|
+
"contractVersion": "1.3.0",
|
|
3
3
|
"logsRoot": "/Users/example/.claude/logs/multi-agent",
|
|
4
4
|
"count": 1,
|
|
5
5
|
"runs": [
|
|
@@ -88,7 +88,12 @@
|
|
|
88
88
|
"estUsd": 0.0353,
|
|
89
89
|
"unlockedWrites": 0,
|
|
90
90
|
"runType": "development",
|
|
91
|
+
"mode": null,
|
|
91
92
|
"title": null,
|
|
93
|
+
"source": null,
|
|
94
|
+
"prNumber": null,
|
|
95
|
+
"channels": [],
|
|
96
|
+
"channelUrls": {},
|
|
92
97
|
"progress": 0.75,
|
|
93
98
|
"currentTask": null,
|
|
94
99
|
"processAlive": null
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion": "1.
|
|
2
|
+
"contractVersion": "1.3.0",
|
|
3
3
|
"count": 1,
|
|
4
4
|
"runs": [
|
|
5
5
|
{
|
|
@@ -109,7 +109,11 @@
|
|
|
109
109
|
"estUsd": 0.0707,
|
|
110
110
|
"unlockedWrites": 0,
|
|
111
111
|
"runType": "development",
|
|
112
|
+
"mode": null,
|
|
112
113
|
"title": null,
|
|
114
|
+
"source": null,
|
|
115
|
+
"prNumber": 104,
|
|
116
|
+
"channels": [],
|
|
113
117
|
"progress": 1,
|
|
114
118
|
"currentTask": null,
|
|
115
119
|
"processAlive": null
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion": "1.
|
|
2
|
+
"contractVersion": "1.3.0",
|
|
3
3
|
"logsRoot": "/Users/example/.claude/logs/multi-agent",
|
|
4
4
|
"count": 1,
|
|
5
5
|
"runs": [
|
|
@@ -114,7 +114,12 @@
|
|
|
114
114
|
"estUsd": 0.0707,
|
|
115
115
|
"unlockedWrites": 0,
|
|
116
116
|
"runType": "development",
|
|
117
|
+
"mode": null,
|
|
117
118
|
"title": null,
|
|
119
|
+
"source": null,
|
|
120
|
+
"prNumber": 104,
|
|
121
|
+
"channels": [],
|
|
122
|
+
"channelUrls": {},
|
|
118
123
|
"progress": 1,
|
|
119
124
|
"currentTask": null,
|
|
120
125
|
"processAlive": null
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion": "1.
|
|
2
|
+
"contractVersion": "1.3.0",
|
|
3
3
|
"logsRoot": "/Users/example/.claude/logs/multi-agent",
|
|
4
4
|
"count": 1,
|
|
5
5
|
"runs": [
|
|
@@ -99,7 +99,12 @@
|
|
|
99
99
|
"estUsd": 0.0236,
|
|
100
100
|
"unlockedWrites": 0,
|
|
101
101
|
"runType": "autopilot",
|
|
102
|
+
"mode": null,
|
|
102
103
|
"title": "Fix the crash on the login screen",
|
|
104
|
+
"source": null,
|
|
105
|
+
"prNumber": null,
|
|
106
|
+
"channels": [],
|
|
107
|
+
"channelUrls": {},
|
|
103
108
|
"progress": 0.8333333333333334,
|
|
104
109
|
"currentTask": {
|
|
105
110
|
"subject": "Make the test pass",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion": "1.
|
|
2
|
+
"contractVersion": "1.6.0",
|
|
3
3
|
"supportedMajors": [1],
|
|
4
4
|
"description": "The pipeline's client contract: every surface a client reads or writes, the CLI invocation and the HTTP route that carry it, and the schema its JSON follows. Schemas are not copied here; schemasDir points at the one tree the producers validate against. Paths in cli are relative to the pipeline directory (installed: ~/.claude).",
|
|
5
5
|
"schemasDir": "../schemas",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"redact": "1 drops every x-sensitivity local field, as --redact does; forced for a request that carries an Origin",
|
|
14
14
|
"v": "the major to serve; see README.md"
|
|
15
15
|
},
|
|
16
|
-
"confirm": "POST /v1/runs/{id}/kill, POST /v1/gc, POST /v1/autopilot/on, POST /v1/stack, POST /v1/runs/{id}/steer
|
|
16
|
+
"confirm": "POST /v1/runs/{id}/kill, POST /v1/gc, POST /v1/autopilot/on, POST /v1/stack, POST /v1/runs/{id}/steer, POST /v1/runs/{id}/review-verdict, POST /v1/repos and POST /v1/jobs take two requests: the first returns a preview, confirmToken and expiresAt; the second sends confirmToken back. DELETE /v1/routines/{name} and DELETE /v1/repos/{id} take the token as ?confirm=. Tokens are 32 random bytes held in the server's memory, single use, valid 120 seconds, bound to the route and its target.",
|
|
17
17
|
"tags": "Every surface carries remote (the scope a remote carrier would require: read, answer, launch, or local-only for anything that widens what runs on this machine) and risk (the confirmation tier it would require: read, low, high). Locally the bearer token is the only credential; nothing enforces the tags yet.",
|
|
18
18
|
"origin": "A request may carry no Origin, the server's own (http://127.0.0.1:<port>), or one passed with --allow-origin. Writes (POST, DELETE) and the chat route accept no Origin but the server's own. The bearer token is read from the Authorization header only."
|
|
19
19
|
},
|
|
@@ -74,6 +74,11 @@
|
|
|
74
74
|
"autopilot-off-request.schema.json",
|
|
75
75
|
"autopilot-off.schema.json",
|
|
76
76
|
"repos.schema.json",
|
|
77
|
+
"repo-request.schema.json",
|
|
78
|
+
"repo-change.schema.json",
|
|
79
|
+
"office-jobs.schema.json",
|
|
80
|
+
"job-request.schema.json",
|
|
81
|
+
"job-change.schema.json",
|
|
77
82
|
"activity.schema.json",
|
|
78
83
|
"activity-chat.schema.json",
|
|
79
84
|
"routines.schema.json",
|
|
@@ -86,6 +91,11 @@
|
|
|
86
91
|
"steer-request.schema.json",
|
|
87
92
|
"steer.schema.json",
|
|
88
93
|
"ledger.schema.json",
|
|
94
|
+
"system-status.schema.json",
|
|
95
|
+
"office-credentials.schema.json",
|
|
96
|
+
"office-memory.schema.json",
|
|
97
|
+
"prune-logs.schema.json",
|
|
98
|
+
"prune-logs-request.schema.json",
|
|
89
99
|
"run-results.schema.json",
|
|
90
100
|
"run-evidence.schema.json",
|
|
91
101
|
"issue-maturity.schema.json",
|
|
@@ -97,7 +107,9 @@
|
|
|
97
107
|
"tool-call.schema.json",
|
|
98
108
|
"service-read.schema.json",
|
|
99
109
|
"permissions.schema.json",
|
|
100
|
-
"contract-error.schema.json"
|
|
110
|
+
"contract-error.schema.json",
|
|
111
|
+
"office-settings.schema.json",
|
|
112
|
+
"office-settings-request.schema.json"
|
|
101
113
|
],
|
|
102
114
|
"surfaces": [
|
|
103
115
|
{
|
|
@@ -107,7 +119,7 @@
|
|
|
107
119
|
"query": ["group", "redact"],
|
|
108
120
|
"cli": ["node", "scripts/runs-index.mjs", "--json", "[--group <group>]", "[--redact]"],
|
|
109
121
|
"schema": "runs-index.schema.json",
|
|
110
|
-
"version": "1.
|
|
122
|
+
"version": "1.3.0",
|
|
111
123
|
"remote": "read",
|
|
112
124
|
"risk": "read"
|
|
113
125
|
},
|
|
@@ -118,7 +130,7 @@
|
|
|
118
130
|
"query": ["redact"],
|
|
119
131
|
"cli": ["node", "scripts/runs-index.mjs", "--json", "--task-id", "{id}", "[--redact]"],
|
|
120
132
|
"schema": "runs-index.schema.json",
|
|
121
|
-
"version": "1.
|
|
133
|
+
"version": "1.3.0",
|
|
122
134
|
"remote": "read",
|
|
123
135
|
"risk": "read"
|
|
124
136
|
},
|
|
@@ -188,14 +200,38 @@
|
|
|
188
200
|
"id": "repos",
|
|
189
201
|
"method": "GET",
|
|
190
202
|
"path": "/v1/repos",
|
|
191
|
-
"query": ["redact"],
|
|
192
|
-
"cli": ["node", "scripts/launch-request.mjs", "repos", "[--redact]"],
|
|
203
|
+
"query": ["redact", "all"],
|
|
204
|
+
"cli": ["node", "scripts/launch-request.mjs", "repos", "[--redact]", "[--all]"],
|
|
193
205
|
"schema": "repos.schema.json",
|
|
194
206
|
"version": "1.1.0",
|
|
195
|
-
"note": "The repositories POST /v1/launch?repo= accepts: configured autopilot repos and registered ones.",
|
|
207
|
+
"note": "The repositories POST /v1/launch?repo= accepts: configured autopilot repos and registered ones. ?all=1 adds suggested checkouts from earlier runs and registered entries that are gone.",
|
|
196
208
|
"remote": "read",
|
|
197
209
|
"risk": "read"
|
|
198
210
|
},
|
|
211
|
+
{
|
|
212
|
+
"id": "repo-add",
|
|
213
|
+
"method": "POST",
|
|
214
|
+
"path": "/v1/repos",
|
|
215
|
+
"query": [],
|
|
216
|
+
"body": "repo-request.schema.json",
|
|
217
|
+
"cli": ["node", "scripts/launch-request.mjs", "register-repo", "<path>"],
|
|
218
|
+
"schema": "repo-change.schema.json",
|
|
219
|
+
"version": "1.1.0",
|
|
220
|
+
"note": "Two steps: the preview names the repository, the confirmation stores it in launch-repos.json. Only a git checkout that is neither the home directory nor the root is accepted.",
|
|
221
|
+
"remote": "local-only",
|
|
222
|
+
"risk": "high"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"id": "repo-remove",
|
|
226
|
+
"method": "DELETE",
|
|
227
|
+
"path": "/v1/repos/{id}",
|
|
228
|
+
"query": ["confirm"],
|
|
229
|
+
"schema": "repo-change.schema.json",
|
|
230
|
+
"version": "1.1.0",
|
|
231
|
+
"note": "Two steps: without confirm the preview and a token; with ?confirm=<token> the registered entry is removed. Configured autopilot repositories are not touched.",
|
|
232
|
+
"remote": "local-only",
|
|
233
|
+
"risk": "high"
|
|
234
|
+
},
|
|
199
235
|
{
|
|
200
236
|
"id": "launch",
|
|
201
237
|
"method": "POST",
|
|
@@ -341,7 +377,7 @@
|
|
|
341
377
|
"scope": "read",
|
|
342
378
|
"cli": ["node", "scripts/runs-index.mjs", "--json", "[--group <group>]", "--redact"],
|
|
343
379
|
"schema": "runs-index.schema.json",
|
|
344
|
-
"version": "1.
|
|
380
|
+
"version": "1.3.0",
|
|
345
381
|
"note": "Always redacted; redact=0 is refused.",
|
|
346
382
|
"risk": "read"
|
|
347
383
|
},
|
|
@@ -354,7 +390,7 @@
|
|
|
354
390
|
"scope": "read",
|
|
355
391
|
"cli": ["node", "scripts/runs-index.mjs", "--json", "--task-id", "{id}", "--redact"],
|
|
356
392
|
"schema": "runs-index.schema.json",
|
|
357
|
-
"version": "1.
|
|
393
|
+
"version": "1.3.0",
|
|
358
394
|
"note": "Always redacted; redact=0 is refused.",
|
|
359
395
|
"risk": "read"
|
|
360
396
|
},
|
|
@@ -447,7 +483,7 @@
|
|
|
447
483
|
"query": [],
|
|
448
484
|
"cli": ["node", "scripts/activity-snapshot.mjs", "--json"],
|
|
449
485
|
"schema": "activity.schema.json",
|
|
450
|
-
"version": "1.
|
|
486
|
+
"version": "1.1.0",
|
|
451
487
|
"note": "Derived from disk on every call; no field is machine-local, so redact changes nothing.",
|
|
452
488
|
"remote": "read",
|
|
453
489
|
"risk": "read"
|
|
@@ -459,7 +495,7 @@
|
|
|
459
495
|
"query": [],
|
|
460
496
|
"cli": ["node", "scripts/activity-snapshot.mjs", "--json"],
|
|
461
497
|
"schema": "activity.schema.json",
|
|
462
|
-
"version": "1.
|
|
498
|
+
"version": "1.1.0",
|
|
463
499
|
"note": "text/event-stream: an `activity` event carrying the document whenever it changes (checked every 2 seconds), a comment line as heartbeat. At most 4 streams at once (429 too-many-streams).",
|
|
464
500
|
"remote": "read",
|
|
465
501
|
"risk": "read"
|
|
@@ -479,7 +515,7 @@
|
|
|
479
515
|
"[--limit <n>]"
|
|
480
516
|
],
|
|
481
517
|
"schema": "activity-chat.schema.json",
|
|
482
|
-
"version": "1.
|
|
518
|
+
"version": "1.1.0",
|
|
483
519
|
"note": "agentId main is the session itself. Refused (403) to any Origin but the server's own page, even an allowed one. limit is 1 to 500, 200 by default; before is the offset the previous page returned.",
|
|
484
520
|
"remote": "read",
|
|
485
521
|
"risk": "read"
|
|
@@ -491,7 +527,7 @@
|
|
|
491
527
|
"query": [],
|
|
492
528
|
"cli": ["node", "scripts/routine-registry.mjs", "list", "--json"],
|
|
493
529
|
"schema": "routines.schema.json",
|
|
494
|
-
"version": "1.
|
|
530
|
+
"version": "1.1.0",
|
|
495
531
|
"remote": "read",
|
|
496
532
|
"risk": "read"
|
|
497
533
|
},
|
|
@@ -502,11 +538,35 @@
|
|
|
502
538
|
"query": ["confirm"],
|
|
503
539
|
"cli": ["node", "scripts/routine-registry.mjs", "remove", "--name", "{name}"],
|
|
504
540
|
"schema": "routine-delete.schema.json",
|
|
505
|
-
"version": "1.
|
|
541
|
+
"version": "1.1.0",
|
|
506
542
|
"note": "Two steps: without confirm the preview and a token; with ?confirm=<token> the removal. A shipped command is refused (409 not-removable).",
|
|
507
543
|
"remote": "local-only",
|
|
508
544
|
"risk": "high"
|
|
509
545
|
},
|
|
546
|
+
{
|
|
547
|
+
"id": "jobs",
|
|
548
|
+
"method": "GET",
|
|
549
|
+
"path": "/v1/jobs",
|
|
550
|
+
"query": [],
|
|
551
|
+
"cli": ["node", "scripts/job-launch.mjs", "list"],
|
|
552
|
+
"schema": "office-jobs.schema.json",
|
|
553
|
+
"version": "1.0.0",
|
|
554
|
+
"note": "The jobs the office can hand to someone: the command, the role that does it, team or solo, typed parameters and what it writes outside the machine; available is false when the command is not installed here.",
|
|
555
|
+
"remote": "read",
|
|
556
|
+
"risk": "read"
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"id": "job-start",
|
|
560
|
+
"method": "POST",
|
|
561
|
+
"path": "/v1/jobs",
|
|
562
|
+
"query": [],
|
|
563
|
+
"body": "job-request.schema.json",
|
|
564
|
+
"schema": "job-change.schema.json",
|
|
565
|
+
"version": "1.0.0",
|
|
566
|
+
"note": "Two steps: the preview names the role, repository, exact prompt and what the job writes; the confirmation re-checks that the repository is allowed and starts it with claude --bg under the unattended profile after the workspace trust, agent-guard registration and sandbox checks; claude's own output stays in the server's log. A team job is refused while a run is live in that repository. Never reachable from a phone.",
|
|
567
|
+
"remote": "local-only",
|
|
568
|
+
"risk": "high"
|
|
569
|
+
},
|
|
510
570
|
{
|
|
511
571
|
"id": "stack",
|
|
512
572
|
"method": "GET",
|
|
@@ -552,6 +612,80 @@
|
|
|
552
612
|
"risk": "read",
|
|
553
613
|
"note": "Estimates at list price from cost-table.json. Each amount names its source (tracker-state, transcript, mixed); a run nobody could measure is not-measured with null numbers, never 0. prices.warning names a price table older than 60 days."
|
|
554
614
|
},
|
|
615
|
+
{
|
|
616
|
+
"id": "system",
|
|
617
|
+
"method": "GET",
|
|
618
|
+
"path": "/v1/system",
|
|
619
|
+
"query": [],
|
|
620
|
+
"cli": ["node", "scripts/system-status.mjs", "--json"],
|
|
621
|
+
"schema": "system-status.schema.json",
|
|
622
|
+
"version": "1.0.0",
|
|
623
|
+
"remote": "read",
|
|
624
|
+
"risk": "read",
|
|
625
|
+
"note": "Numbers only: CPU load, memory, free disk, the pipeline's own sessions and toolkit processes and its log folder size. No path, process argument, user or host name. A value that could not be measured is null."
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"id": "prune-logs",
|
|
629
|
+
"method": "POST",
|
|
630
|
+
"path": "/v1/prune-logs",
|
|
631
|
+
"query": [],
|
|
632
|
+
"body": "prune-logs-request.schema.json",
|
|
633
|
+
"cli": ["node", "scripts/office-prune.mjs", "preview|apply", "{days}", "--json"],
|
|
634
|
+
"schema": "prune-logs.schema.json",
|
|
635
|
+
"version": "1.0.0",
|
|
636
|
+
"remote": "local-only",
|
|
637
|
+
"risk": "high",
|
|
638
|
+
"note": "Two steps: the preview lists the task log folders older than 7, 30 or 90 days; the confirmation lists them again, refuses with 409 changed when they differ, and prunes only that list (prune-logs.sh --only-from). The audit trail, metrics and counters are never removed; a folder written in the last minutes and a run that can still be resumed are spared."
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
"id": "settings",
|
|
642
|
+
"method": "GET",
|
|
643
|
+
"path": "/v1/settings",
|
|
644
|
+
"query": [],
|
|
645
|
+
"cli": ["node", "scripts/office-settings.mjs", "--json"],
|
|
646
|
+
"schema": "office-settings.schema.json",
|
|
647
|
+
"version": "1.0.0",
|
|
648
|
+
"remote": "local-only",
|
|
649
|
+
"risk": "read",
|
|
650
|
+
"note": "The output language, the fable rung and model routing, read from the preferences file."
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"id": "settings-set",
|
|
654
|
+
"method": "POST",
|
|
655
|
+
"path": "/v1/settings",
|
|
656
|
+
"query": [],
|
|
657
|
+
"body": "office-settings-request.schema.json",
|
|
658
|
+
"cli": ["node", "scripts/office-settings.mjs", "set", "{setting}", "{value}", "--json"],
|
|
659
|
+
"schema": "office-settings.schema.json",
|
|
660
|
+
"version": "1.0.0",
|
|
661
|
+
"remote": "local-only",
|
|
662
|
+
"risk": "high",
|
|
663
|
+
"note": "Two steps: the preview names the change, the confirmation runs what /multi-agent:language, /multi-agent:model or /multi-agent:route-on|off runs; one change at a time (429 busy). Route on passes the saved strategy back; widening it stays in the terminal."
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
"id": "credentials",
|
|
667
|
+
"method": "GET",
|
|
668
|
+
"path": "/v1/credentials",
|
|
669
|
+
"query": ["probe"],
|
|
670
|
+
"cli": ["node", "scripts/office-credentials.mjs", "--json", "[--probe]"],
|
|
671
|
+
"schema": "office-credentials.schema.json",
|
|
672
|
+
"version": "1.0.0",
|
|
673
|
+
"remote": "local-only",
|
|
674
|
+
"risk": "read",
|
|
675
|
+
"note": "Logical names and verdicts only, never a value. probe=1 makes one cheap authenticated request per configured credential. Renewal is /multi-agent:setup in the terminal. Local only: not even the verdicts go to a phone."
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
"id": "memory",
|
|
679
|
+
"method": "GET",
|
|
680
|
+
"path": "/v1/memory",
|
|
681
|
+
"query": [],
|
|
682
|
+
"cli": ["node", "scripts/office-memory.mjs", "--json"],
|
|
683
|
+
"schema": "office-memory.schema.json",
|
|
684
|
+
"version": "1.0.0",
|
|
685
|
+
"remote": "local-only",
|
|
686
|
+
"risk": "read",
|
|
687
|
+
"note": "Counts per repository from the learning loop's stores and the newest learnings, redacted and cut to 120 characters. Local only."
|
|
688
|
+
},
|
|
555
689
|
{
|
|
556
690
|
"id": "run-results",
|
|
557
691
|
"method": "GET",
|
|
@@ -582,7 +716,7 @@
|
|
|
582
716
|
"body": "review-verdict-request.schema.json",
|
|
583
717
|
"cli": ["node", "scripts/work-items.mjs", "verdict", "{id}", "[--post]"],
|
|
584
718
|
"schema": "review-verdict.schema.json",
|
|
585
|
-
"version": "1.
|
|
719
|
+
"version": "1.1.0",
|
|
586
720
|
"note": "Two steps. Only a finished review whose every finding is triaged is previewed (409 review-incomplete); the token is bound to the decision and findingsDigest, and a confirmation after either changed is 409 confirm-mismatch.",
|
|
587
721
|
"remote": "launch",
|
|
588
722
|
"risk": "high"
|
|
@@ -594,7 +728,7 @@
|
|
|
594
728
|
"query": [],
|
|
595
729
|
"cli": ["node", "scripts/work-items.mjs", "maturity", "{key}"],
|
|
596
730
|
"schema": "issue-maturity.schema.json",
|
|
597
|
-
"version": "1.
|
|
731
|
+
"version": "1.1.0",
|
|
598
732
|
"note": "key is URL-encoded (owner%2Frepo%23N for a GitHub issue).",
|
|
599
733
|
"remote": "read",
|
|
600
734
|
"risk": "read"
|
|
@@ -606,8 +740,8 @@
|
|
|
606
740
|
"query": ["redact"],
|
|
607
741
|
"cli": ["node", "scripts/work-items.mjs", "prs"],
|
|
608
742
|
"schema": "prs.schema.json",
|
|
609
|
-
"version": "1.
|
|
610
|
-
"note": "
|
|
743
|
+
"version": "1.1.0",
|
|
744
|
+
"note": "One list across every GitHub account gh is logged in to (each asked with its own token in GH_TOKEN) and the configured Bitbucket Server (https, token in the header). A source that cannot be read says why. Redacted, URLs and logins are dropped.",
|
|
611
745
|
"remote": "read",
|
|
612
746
|
"risk": "read"
|
|
613
747
|
},
|