@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
|
@@ -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` |
|
|
@@ -51,12 +55,46 @@ same bytes (`test/contract-parity.test.mjs`):
|
|
|
51
55
|
| Garbage-collect (two steps) | `gc-plan.mjs preview [--scope S,...]`, then `gc-plan.mjs apply < items` | `POST /v1/gc` |
|
|
52
56
|
| Autopilot status | `autopilot-control.mjs status` | `GET /v1/autopilot` |
|
|
53
57
|
| Autopilot off | `autopilot-control.mjs off [--now]` | `POST /v1/autopilot/off` |
|
|
54
|
-
|
|
55
|
-
|
|
58
|
+
| Autopilot on (two steps) | `autopilot-control.mjs on-preview --repo R...`, then `on --repo R... [--configure-only]` | `POST /v1/autopilot/on` |
|
|
59
|
+
| Steer a run (two steps on the server) | `steer-run.mjs STATE --text T` | `POST /v1/runs/{id}/steer` |
|
|
60
|
+
| Agent activity | `activity-snapshot.mjs --json` | `GET /v1/activity`, `GET /v1/activity/stream` (SSE) |
|
|
61
|
+
| An agent's chat | `activity-snapshot.mjs chat SESSION [AGENT] [--before N] [--limit N]` | `GET /v1/agents/{sessionId}/{agentId}/chat` |
|
|
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` |
|
|
69
|
+
| What a run produced | `run-results.mjs ID --json` | `GET /v1/runs/{id}/results` |
|
|
70
|
+
| One screenshot | `run-results.mjs ID --evidence NAME` | `GET /v1/runs/{id}/evidence/{name}` |
|
|
71
|
+
| Post a review verdict (two steps) | `work-items.mjs verdict ID [--post]` | `POST /v1/runs/{id}/review-verdict` |
|
|
72
|
+
| An issue's maturity | `work-items.mjs maturity KEY` | `GET /v1/issues/{key}/maturity` |
|
|
73
|
+
| Open pull requests | `work-items.mjs prs` | `GET /v1/prs` |
|
|
74
|
+
| Toolkit MCP tools | `toolkit-tools.mjs list` | `GET /v1/tools` |
|
|
75
|
+
| Call an allowed toolkit tool (read-only, no location argument) | `toolkit-tools.mjs call NAME JSON` | `POST /v1/tools/{name}/call` |
|
|
76
|
+
| A Confluence page, a Crashlytics issue, a Figma frame | `service-read.mjs confluence\|crashlytics\|figma ...` | `GET /v1/services/{confluence,crashlytics,figma}` |
|
|
77
|
+
| Pending host permission prompts | (none can be read yet) | `GET /v1/permissions` |
|
|
78
|
+
| Routines | `routine-registry.mjs list --json` | `GET /v1/routines` |
|
|
79
|
+
| Remove a routine (two steps) | `routine-registry.mjs remove --name N` | `DELETE /v1/routines/{name}` |
|
|
80
|
+
| A repo's stacks | `stack-toggle.mjs status --repo P --json` | `GET /v1/stack?repo=R` |
|
|
81
|
+
| Set a repo's stacks (two steps) | `stack-toggle.mjs set --repo P STACK... --json` | `POST /v1/stack` |
|
|
82
|
+
|
|
83
|
+
Every surface in `manifest.json` carries `remote` (the scope a remote carrier
|
|
84
|
+
would require: `read`, `answer`, `launch`, or `local-only` for anything that
|
|
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
|
|
88
|
+
bearer token is the only credential; nothing enforces the tags yet. They are
|
|
89
|
+
there so a later carrier reuses these routes without redefining them.
|
|
90
|
+
|
|
91
|
+
Starting a run is the client's act. `POST /v1/launch` validates the
|
|
56
92
|
request, writes it (0600) and returns the argv, environment and working
|
|
57
|
-
directory from `launch.json`;
|
|
58
|
-
|
|
59
|
-
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
|
|
60
98
|
treat the shape as provisional.
|
|
61
99
|
|
|
62
100
|
The run starts with no permission prompts, so its input is held to a shape: a
|
|
@@ -90,7 +128,8 @@ Resuming is the client's act too: `POST /v1/runs/{id}/resume` returns the plan
|
|
|
90
128
|
root, `409 not-resumable` for any other, a finished or a killed one, and `409
|
|
91
129
|
run-active` while its session runs.
|
|
92
130
|
|
|
93
|
-
Kill
|
|
131
|
+
Kill, gc, autopilot on and a stack change take two requests (a routine
|
|
132
|
+
removal takes its token as `?confirm=`). The first (no
|
|
94
133
|
`confirmToken`) returns the preview with `confirmToken` and `expiresAt`; the
|
|
95
134
|
second sends the token back and acts on exactly what was previewed. A token is
|
|
96
135
|
single use, lives 120 seconds in the server's memory only, and is bound to the
|
|
@@ -113,14 +152,35 @@ answer to the old one.
|
|
|
113
152
|
that spawned the server can pass `--print-token` to get it on the ready line.
|
|
114
153
|
- Every request sends `Authorization: Bearer <token>` and a `Host` of
|
|
115
154
|
`127.0.0.1:<port>` or `localhost:<port>`.
|
|
116
|
-
- A browser page is allowed only from
|
|
117
|
-
|
|
118
|
-
|
|
155
|
+
- A browser page is allowed only from the server's own origin (the optional
|
|
156
|
+
panel at `GET /office`) or an origin passed with `--allow-origin`; CORS is
|
|
157
|
+
off without one. A write (POST, DELETE) and the chat route accept no Origin
|
|
158
|
+
but the server's own, even an allowed one. A request carrying an `Origin` is
|
|
159
|
+
always served redacted.
|
|
160
|
+
- The token is read from the `Authorization` header only, never from a cookie
|
|
161
|
+
or a query parameter.
|
|
162
|
+
- `GET /office` serves the panel page (`MA_OFFICE_PAGE`, else
|
|
163
|
+
`prefs.global.office.page`, else the installed `office/index.html` beside the
|
|
164
|
+
package) without a token, with a per-response CSP nonce, and is 404 when no
|
|
165
|
+
page exists. The page never sees the token in a URL: `POST /office/code`
|
|
166
|
+
(bearer, no Origin) mints a code valid for 10 seconds and one use, the page
|
|
167
|
+
is opened with it in the fragment, and trades it at `POST /office/exchange`
|
|
168
|
+
(own Origin only, no bearer); a used, expired or unknown code is 401.
|
|
169
|
+
`GET /office/assets/<name>.png` serves the page's sprites, also without a
|
|
170
|
+
token: a plain file name, a PNG of at most 256 KiB directly in the assets
|
|
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.
|
|
173
|
+
- Every write route appends one line (who, route, step, status; never a body
|
|
174
|
+
or token) to `~/.claude/logs/multi-agent/office-actions.jsonl`.
|
|
119
175
|
- Bodies are JSON, at most 64 KiB, and must satisfy the route's schema.
|
|
120
176
|
- Errors follow `contract-error.schema.json`; switch on `error`, never on
|
|
121
177
|
`message`.
|
|
122
|
-
-
|
|
123
|
-
|
|
178
|
+
- Service reads, the work list, the review verdict and autopilot control run
|
|
179
|
+
in child processes and never block other routes; a second request for the
|
|
180
|
+
same one while the first runs is 429 `busy`.
|
|
181
|
+
- The server exits after 15 idle minutes (`--idle-minutes`), after 8 hours in
|
|
182
|
+
any case (`--max-hours`, an open event stream does not extend it) or on
|
|
183
|
+
SIGTERM. It is never a service; start it when you need it.
|
|
124
184
|
|
|
125
185
|
A client that relays anything off this machine uses `redact=1` (or
|
|
126
186
|
`--redact`) for every read.
|
|
@@ -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",
|