@mmerterden/multi-agent-pipeline 20.28.0 → 20.30.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 +19 -0
- package/README.md +19 -6
- package/README.tr.md +5 -5
- package/docs/architecture.md +3 -3
- package/docs/ecosystem.md +5 -5
- package/docs/facts.json +7 -7
- package/install/catalog-history.json +1 -1
- package/install/claude.mjs +122 -1
- package/install/codex.mjs +2 -0
- package/install/copilot.mjs +13 -0
- package/install/templates/claude-hooks.json +30 -1
- package/manifest.json +189 -77
- package/package.json +2 -1
- package/pipeline/commands/multi-agent/analysis/SKILL.md +3 -1
- 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 +50 -0
- package/pipeline/commands/multi-agent/office-status/SKILL.md +29 -0
- package/pipeline/commands/multi-agent/resume/SKILL.md +2 -1
- 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 +3 -3
- package/pipeline/contract/CHANGELOG.md +62 -0
- package/pipeline/contract/README.md +52 -6
- 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/manifest.json +367 -22
- package/pipeline/contract/types/index.d.ts +531 -4
- package/pipeline/lib/hook-registration.mjs +252 -0
- package/pipeline/lib/prefs-value.mjs +44 -0
- package/pipeline/lib/run-completion.mjs +148 -0
- package/pipeline/multi-agent-refs/analysis/render.md +4 -4
- package/pipeline/multi-agent-refs/cross-cli-contract.md +5 -4
- package/pipeline/multi-agent-refs/features/doctor.md +11 -0
- package/pipeline/multi-agent-refs/features/office-threat-model.md +91 -0
- 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/operations.md +17 -0
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +6 -2
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +2 -2
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +2 -2
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +7 -6
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +5 -4
- package/pipeline/office/NOTICE.md +42 -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_TABLE.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/DOUBLE_BOOKSHELF.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/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/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/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 +5319 -0
- package/pipeline/preferences-template.json +7 -0
- package/pipeline/rules/figma-pipeline.md +2 -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 +429 -0
- package/pipeline/schemas/agent-state.schema.json +20 -5
- 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 +33 -3
- package/pipeline/schemas/issue-maturity.schema.json +68 -0
- package/pipeline/schemas/ledger.schema.json +202 -0
- package/pipeline/schemas/permissions.schema.json +47 -0
- package/pipeline/schemas/phases.json +3 -2
- package/pipeline/schemas/phases.schema.json +5 -1
- package/pipeline/schemas/prefs.schema.json +56 -0
- package/pipeline/schemas/prs.schema.json +73 -0
- 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 +1 -1
- 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/tool-call-request.schema.json +19 -0
- package/pipeline/schemas/tool-call.schema.json +47 -0
- package/pipeline/schemas/tools.schema.json +60 -0
- package/pipeline/scripts/_active-run.mjs +158 -0
- package/pipeline/scripts/_autopilot-outcomes.mjs +1 -0
- package/pipeline/scripts/_cost.mjs +66 -1
- package/pipeline/scripts/_guard_rules.py +605 -0
- package/pipeline/scripts/_office-smoke-lib.sh +115 -0
- package/pipeline/scripts/_spawn-async.mjs +73 -0
- package/pipeline/scripts/_transcript-tail.mjs +274 -0
- package/pipeline/scripts/activity-snapshot.mjs +1027 -0
- package/pipeline/scripts/agent-guard.py +118 -7
- package/pipeline/scripts/agent-guard.sh +50 -3
- package/pipeline/scripts/argv-secret-scan.mjs +114 -0
- package/pipeline/scripts/autopilot-control.mjs +214 -9
- package/pipeline/scripts/autopilot-runner.mjs +8 -2
- package/pipeline/scripts/confirm-command.mjs +70 -0
- package/pipeline/scripts/contract-server.mjs +1178 -48
- package/pipeline/scripts/cost-analyze.mjs +2 -53
- package/pipeline/scripts/cost-table.json +1 -0
- package/pipeline/scripts/doctor.mjs +54 -0
- package/pipeline/scripts/evidence-gate.mjs +8 -4
- package/pipeline/scripts/gate-ledger.mjs +163 -7
- package/pipeline/scripts/office-build.mjs +89 -0
- package/pipeline/scripts/office-control.mjs +383 -0
- package/pipeline/scripts/office-ledger.mjs +409 -0
- package/pipeline/scripts/plan-coverage-gate.mjs +9 -8
- package/pipeline/scripts/pre-commit-check.sh +12 -0
- package/pipeline/scripts/routine-registry.mjs +42 -6
- package/pipeline/scripts/run-results.mjs +373 -0
- package/pipeline/scripts/run-scope-guard.mjs +188 -0
- package/pipeline/scripts/run-scope-guard.sh +23 -0
- package/pipeline/scripts/run-stop-guard.mjs +246 -0
- package/pipeline/scripts/run-stop-guard.sh +25 -0
- 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/toolkit-tools.mjs +599 -0
- package/pipeline/scripts/uninstall.mjs +4 -0
- package/pipeline/scripts/validate-state.mjs +26 -0
- package/pipeline/scripts/work-items.mjs +304 -0
- package/pipeline/scripts/write-state.mjs +114 -0
- package/pipeline/skills/.skill-manifest.json +19 -7
- 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 +22 -0
- package/pipeline/skills/shared/core/multi-agent-office-status/SKILL.md +17 -0
- 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/skills-index.md +4 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion": "1.
|
|
2
|
+
"contractVersion": "1.4.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,9 @@
|
|
|
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 and POST /v1/
|
|
16
|
+
"confirm": "POST /v1/runs/{id}/kill, POST /v1/gc, POST /v1/autopilot/on, POST /v1/stack, POST /v1/runs/{id}/steer and POST /v1/runs/{id}/review-verdict take two requests: the first returns a preview, confirmToken and expiresAt; the second sends confirmToken back. DELETE /v1/routines/{name} takes 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
|
+
"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
|
+
"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."
|
|
17
19
|
},
|
|
18
20
|
"phone": {
|
|
19
21
|
"description": "Routes a phone reaches through a forwarder (a private network or a local relay; see multi-agent-refs/features/phone-api.md). Every request is signed with an enrolled device's Ed25519 key; the bearer token is neither needed nor accepted here, and a signature opens no desktop route. Responses are always the redacted view.",
|
|
@@ -72,6 +74,29 @@
|
|
|
72
74
|
"autopilot-off-request.schema.json",
|
|
73
75
|
"autopilot-off.schema.json",
|
|
74
76
|
"repos.schema.json",
|
|
77
|
+
"activity.schema.json",
|
|
78
|
+
"activity-chat.schema.json",
|
|
79
|
+
"routines.schema.json",
|
|
80
|
+
"routine-delete.schema.json",
|
|
81
|
+
"stack.schema.json",
|
|
82
|
+
"stack-request.schema.json",
|
|
83
|
+
"stack-change.schema.json",
|
|
84
|
+
"autopilot-on-request.schema.json",
|
|
85
|
+
"autopilot-on.schema.json",
|
|
86
|
+
"steer-request.schema.json",
|
|
87
|
+
"steer.schema.json",
|
|
88
|
+
"ledger.schema.json",
|
|
89
|
+
"run-results.schema.json",
|
|
90
|
+
"run-evidence.schema.json",
|
|
91
|
+
"issue-maturity.schema.json",
|
|
92
|
+
"prs.schema.json",
|
|
93
|
+
"review-verdict-request.schema.json",
|
|
94
|
+
"review-verdict.schema.json",
|
|
95
|
+
"tools.schema.json",
|
|
96
|
+
"tool-call-request.schema.json",
|
|
97
|
+
"tool-call.schema.json",
|
|
98
|
+
"service-read.schema.json",
|
|
99
|
+
"permissions.schema.json",
|
|
75
100
|
"contract-error.schema.json"
|
|
76
101
|
],
|
|
77
102
|
"surfaces": [
|
|
@@ -82,7 +107,9 @@
|
|
|
82
107
|
"query": ["group", "redact"],
|
|
83
108
|
"cli": ["node", "scripts/runs-index.mjs", "--json", "[--group <group>]", "[--redact]"],
|
|
84
109
|
"schema": "runs-index.schema.json",
|
|
85
|
-
"version": "1.2.0"
|
|
110
|
+
"version": "1.2.0",
|
|
111
|
+
"remote": "read",
|
|
112
|
+
"risk": "read"
|
|
86
113
|
},
|
|
87
114
|
{
|
|
88
115
|
"id": "run",
|
|
@@ -91,7 +118,9 @@
|
|
|
91
118
|
"query": ["redact"],
|
|
92
119
|
"cli": ["node", "scripts/runs-index.mjs", "--json", "--task-id", "{id}", "[--redact]"],
|
|
93
120
|
"schema": "runs-index.schema.json",
|
|
94
|
-
"version": "1.2.0"
|
|
121
|
+
"version": "1.2.0",
|
|
122
|
+
"remote": "read",
|
|
123
|
+
"risk": "read"
|
|
95
124
|
},
|
|
96
125
|
{
|
|
97
126
|
"id": "commands",
|
|
@@ -100,7 +129,9 @@
|
|
|
100
129
|
"query": ["redact"],
|
|
101
130
|
"cli": ["node", "scripts/commands.mjs", "--json"],
|
|
102
131
|
"schema": "command-parameters.schema.json",
|
|
103
|
-
"version": "1.0.0"
|
|
132
|
+
"version": "1.0.0",
|
|
133
|
+
"remote": "read",
|
|
134
|
+
"risk": "read"
|
|
104
135
|
},
|
|
105
136
|
{
|
|
106
137
|
"id": "questions",
|
|
@@ -109,7 +140,9 @@
|
|
|
109
140
|
"query": ["redact"],
|
|
110
141
|
"cli": ["node", "scripts/launch-request.mjs", "questions"],
|
|
111
142
|
"schema": "run-questions.schema.json",
|
|
112
|
-
"version": "1.1.0"
|
|
143
|
+
"version": "1.1.0",
|
|
144
|
+
"remote": "read",
|
|
145
|
+
"risk": "read"
|
|
113
146
|
},
|
|
114
147
|
{
|
|
115
148
|
"id": "issues",
|
|
@@ -125,7 +158,9 @@
|
|
|
125
158
|
"[--max <n>]"
|
|
126
159
|
],
|
|
127
160
|
"schema": "issues.schema.json",
|
|
128
|
-
"version": "1.0.0"
|
|
161
|
+
"version": "1.0.0",
|
|
162
|
+
"remote": "read",
|
|
163
|
+
"risk": "read"
|
|
129
164
|
},
|
|
130
165
|
{
|
|
131
166
|
"id": "worktrees",
|
|
@@ -134,7 +169,9 @@
|
|
|
134
169
|
"query": ["measure", "redact"],
|
|
135
170
|
"cli": ["node", "scripts/worktrees.mjs", "--json", "[--measure]", "[--redact]"],
|
|
136
171
|
"schema": "worktrees.schema.json",
|
|
137
|
-
"version": "1.0.0"
|
|
172
|
+
"version": "1.0.0",
|
|
173
|
+
"remote": "read",
|
|
174
|
+
"risk": "read"
|
|
138
175
|
},
|
|
139
176
|
{
|
|
140
177
|
"id": "launch-spec",
|
|
@@ -143,7 +180,9 @@
|
|
|
143
180
|
"query": ["redact"],
|
|
144
181
|
"cli": ["node", "scripts/launch-request.mjs", "spec"],
|
|
145
182
|
"schema": "launch.schema.json",
|
|
146
|
-
"version": "1.2.0"
|
|
183
|
+
"version": "1.2.0",
|
|
184
|
+
"remote": "read",
|
|
185
|
+
"risk": "read"
|
|
147
186
|
},
|
|
148
187
|
{
|
|
149
188
|
"id": "repos",
|
|
@@ -153,7 +192,9 @@
|
|
|
153
192
|
"cli": ["node", "scripts/launch-request.mjs", "repos", "[--redact]"],
|
|
154
193
|
"schema": "repos.schema.json",
|
|
155
194
|
"version": "1.1.0",
|
|
156
|
-
"note": "The repositories POST /v1/launch?repo= accepts: configured autopilot repos and registered ones."
|
|
195
|
+
"note": "The repositories POST /v1/launch?repo= accepts: configured autopilot repos and registered ones.",
|
|
196
|
+
"remote": "read",
|
|
197
|
+
"risk": "read"
|
|
157
198
|
},
|
|
158
199
|
{
|
|
159
200
|
"id": "launch",
|
|
@@ -174,7 +215,9 @@
|
|
|
174
215
|
],
|
|
175
216
|
"schema": "launch-plan.schema.json",
|
|
176
217
|
"version": "1.1.0",
|
|
177
|
-
"note": "The server writes the request file (0600, named for a session id it mints) and returns the plan; the CLI plans a file the client wrote. Neither starts the host."
|
|
218
|
+
"note": "The server writes the request file (0600, named for a session id it mints) and returns the plan; the CLI plans a file the client wrote. Neither starts the host.",
|
|
219
|
+
"remote": "launch",
|
|
220
|
+
"risk": "high"
|
|
178
221
|
},
|
|
179
222
|
{
|
|
180
223
|
"id": "answer",
|
|
@@ -192,7 +235,9 @@
|
|
|
192
235
|
"<optionId>[,<optionId>...]"
|
|
193
236
|
],
|
|
194
237
|
"schema": "answer-result.schema.json",
|
|
195
|
-
"version": "1.0.0"
|
|
238
|
+
"version": "1.0.0",
|
|
239
|
+
"remote": "answer",
|
|
240
|
+
"risk": "low"
|
|
196
241
|
},
|
|
197
242
|
{
|
|
198
243
|
"id": "run-log",
|
|
@@ -202,7 +247,9 @@
|
|
|
202
247
|
"cli": ["node", "scripts/run-log.mjs", "{id}", "[--tail <n>]", "--json"],
|
|
203
248
|
"schema": "run-log.schema.json",
|
|
204
249
|
"version": "1.0.0",
|
|
205
|
-
"note": "tail is 1 to 2000, 200 by default. Lines are scrubbed under redact."
|
|
250
|
+
"note": "tail is 1 to 2000, 200 by default. Lines are scrubbed under redact.",
|
|
251
|
+
"remote": "read",
|
|
252
|
+
"risk": "read"
|
|
206
253
|
},
|
|
207
254
|
{
|
|
208
255
|
"id": "resume",
|
|
@@ -225,7 +272,9 @@
|
|
|
225
272
|
],
|
|
226
273
|
"schema": "launch-plan.schema.json",
|
|
227
274
|
"version": "1.1.0",
|
|
228
|
-
"note": "Returns the plan (mode resume) the client spawns; nothing starts the host. Only a run recorded under the unattended log root resumes here (409 not-resumable otherwise, and for a finished or killed run); a run whose session is alive is 409 run-active. answers answers the question the run is parked on before the plan is returned."
|
|
275
|
+
"note": "Returns the plan (mode resume) the client spawns; nothing starts the host. Only a run recorded under the unattended log root resumes here (409 not-resumable otherwise, and for a finished or killed run); a run whose session is alive is 409 run-active. answers answers the question the run is parked on before the plan is returned.",
|
|
276
|
+
"remote": "launch",
|
|
277
|
+
"risk": "high"
|
|
229
278
|
},
|
|
230
279
|
{
|
|
231
280
|
"id": "kill",
|
|
@@ -236,7 +285,9 @@
|
|
|
236
285
|
"cli": ["node", "scripts/run-kill.mjs", "preview|apply", "{id}", "--json"],
|
|
237
286
|
"schema": "kill.schema.json",
|
|
238
287
|
"version": "1.0.0",
|
|
239
|
-
"note": "Two steps: without confirmToken the preview and a token (single use, 120 s, bound to this route and run); with it the kill. 409 confirm-expired, 409 confirm-mismatch. Never deletes the remote branch or the logs."
|
|
288
|
+
"note": "Two steps: without confirmToken the preview and a token (single use, 120 s, bound to this route and run); with it the kill. 409 confirm-expired, 409 confirm-mismatch. Never deletes the remote branch or the logs.",
|
|
289
|
+
"remote": "local-only",
|
|
290
|
+
"risk": "high"
|
|
240
291
|
},
|
|
241
292
|
{
|
|
242
293
|
"id": "gc",
|
|
@@ -253,7 +304,9 @@
|
|
|
253
304
|
],
|
|
254
305
|
"schema": "gc.schema.json",
|
|
255
306
|
"version": "1.0.0",
|
|
256
|
-
"note": "Two steps, the same token flow as kill. Step 2 removes exactly the items step 1 listed."
|
|
307
|
+
"note": "Two steps, the same token flow as kill. Step 2 removes exactly the items step 1 listed.",
|
|
308
|
+
"remote": "local-only",
|
|
309
|
+
"risk": "high"
|
|
257
310
|
},
|
|
258
311
|
{
|
|
259
312
|
"id": "autopilot",
|
|
@@ -262,7 +315,9 @@
|
|
|
262
315
|
"query": ["redact"],
|
|
263
316
|
"cli": ["node", "scripts/autopilot-control.mjs", "status"],
|
|
264
317
|
"schema": "autopilot-status.schema.json",
|
|
265
|
-
"version": "1.0.0"
|
|
318
|
+
"version": "1.0.0",
|
|
319
|
+
"remote": "read",
|
|
320
|
+
"risk": "read"
|
|
266
321
|
},
|
|
267
322
|
{
|
|
268
323
|
"id": "autopilot-off",
|
|
@@ -273,7 +328,9 @@
|
|
|
273
328
|
"cli": ["node", "scripts/autopilot-control.mjs", "off", "[--now]"],
|
|
274
329
|
"schema": "autopilot-off.schema.json",
|
|
275
330
|
"version": "1.0.0",
|
|
276
|
-
"note": "Turning autopilot on stays a terminal command: it picks repositories with the user."
|
|
331
|
+
"note": "Turning autopilot on stays a terminal command: it picks repositories with the user.",
|
|
332
|
+
"remote": "launch",
|
|
333
|
+
"risk": "low"
|
|
277
334
|
},
|
|
278
335
|
{
|
|
279
336
|
"id": "phone-runs",
|
|
@@ -285,7 +342,8 @@
|
|
|
285
342
|
"cli": ["node", "scripts/runs-index.mjs", "--json", "[--group <group>]", "--redact"],
|
|
286
343
|
"schema": "runs-index.schema.json",
|
|
287
344
|
"version": "1.2.0",
|
|
288
|
-
"note": "Always redacted; redact=0 is refused."
|
|
345
|
+
"note": "Always redacted; redact=0 is refused.",
|
|
346
|
+
"risk": "read"
|
|
289
347
|
},
|
|
290
348
|
{
|
|
291
349
|
"id": "phone-run",
|
|
@@ -297,7 +355,8 @@
|
|
|
297
355
|
"cli": ["node", "scripts/runs-index.mjs", "--json", "--task-id", "{id}", "--redact"],
|
|
298
356
|
"schema": "runs-index.schema.json",
|
|
299
357
|
"version": "1.2.0",
|
|
300
|
-
"note": "Always redacted; redact=0 is refused."
|
|
358
|
+
"note": "Always redacted; redact=0 is refused.",
|
|
359
|
+
"risk": "read"
|
|
301
360
|
},
|
|
302
361
|
{
|
|
303
362
|
"id": "phone-answer",
|
|
@@ -318,7 +377,8 @@
|
|
|
318
377
|
],
|
|
319
378
|
"schema": "answer-result.schema.json",
|
|
320
379
|
"version": "1.0.0",
|
|
321
|
-
"note": "The same refusals as POST /v1/runs/{id}/answer: only an option id the pending question offered is recorded."
|
|
380
|
+
"note": "The same refusals as POST /v1/runs/{id}/answer: only an option id the pending question offered is recorded.",
|
|
381
|
+
"risk": "low"
|
|
322
382
|
},
|
|
323
383
|
{
|
|
324
384
|
"id": "phone-launch",
|
|
@@ -343,7 +403,285 @@
|
|
|
343
403
|
],
|
|
344
404
|
"schema": "launch-plan.schema.json",
|
|
345
405
|
"version": "1.1.0",
|
|
346
|
-
"note": "Off until `phone-devices.mjs launch on`. Writes the request file and returns the redacted plan; nothing starts the host."
|
|
406
|
+
"note": "Off until `phone-devices.mjs launch on`. Writes the request file and returns the redacted plan; nothing starts the host.",
|
|
407
|
+
"risk": "high"
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"id": "autopilot-on",
|
|
411
|
+
"method": "POST",
|
|
412
|
+
"path": "/v1/autopilot/on",
|
|
413
|
+
"query": [],
|
|
414
|
+
"body": "autopilot-on-request.schema.json",
|
|
415
|
+
"cli": [
|
|
416
|
+
"node",
|
|
417
|
+
"scripts/autopilot-control.mjs",
|
|
418
|
+
"on-preview|on",
|
|
419
|
+
"--repo",
|
|
420
|
+
"<owner/name>",
|
|
421
|
+
"[--repo <owner/name>...]",
|
|
422
|
+
"[--configure-only]"
|
|
423
|
+
],
|
|
424
|
+
"schema": "autopilot-on.schema.json",
|
|
425
|
+
"version": "1.0.0",
|
|
426
|
+
"note": "Two steps, the confirm-token flow of kill: the preview names what is kept, dropped and probed; the confirmation turns the mode on for exactly that selection. Only repositories already in the autopilot config can be selected; adding one, with its sources and label, stays /multi-agent:autopilot-on.",
|
|
427
|
+
"remote": "local-only",
|
|
428
|
+
"risk": "high"
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"id": "steer",
|
|
432
|
+
"method": "POST",
|
|
433
|
+
"path": "/v1/runs/{id}/steer",
|
|
434
|
+
"query": [],
|
|
435
|
+
"body": "steer-request.schema.json",
|
|
436
|
+
"cli": ["node", "scripts/steer-run.mjs", "<agent-state.json>", "--text", "<instruction>"],
|
|
437
|
+
"schema": "steer.schema.json",
|
|
438
|
+
"version": "1.0.0",
|
|
439
|
+
"note": "Two steps: the text and a preview with a token bound to this run and this text, then the token alone queues it as pendingSteer, applied at the next phase entry. 409 not-steerable for a finished run.",
|
|
440
|
+
"remote": "launch",
|
|
441
|
+
"risk": "high"
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
"id": "activity",
|
|
445
|
+
"method": "GET",
|
|
446
|
+
"path": "/v1/activity",
|
|
447
|
+
"query": [],
|
|
448
|
+
"cli": ["node", "scripts/activity-snapshot.mjs", "--json"],
|
|
449
|
+
"schema": "activity.schema.json",
|
|
450
|
+
"version": "1.0.0",
|
|
451
|
+
"note": "Derived from disk on every call; no field is machine-local, so redact changes nothing.",
|
|
452
|
+
"remote": "read",
|
|
453
|
+
"risk": "read"
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"id": "activity-stream",
|
|
457
|
+
"method": "GET",
|
|
458
|
+
"path": "/v1/activity/stream",
|
|
459
|
+
"query": [],
|
|
460
|
+
"cli": ["node", "scripts/activity-snapshot.mjs", "--json"],
|
|
461
|
+
"schema": "activity.schema.json",
|
|
462
|
+
"version": "1.0.0",
|
|
463
|
+
"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
|
+
"remote": "read",
|
|
465
|
+
"risk": "read"
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"id": "agent-chat",
|
|
469
|
+
"method": "GET",
|
|
470
|
+
"path": "/v1/agents/{sessionId}/{agentId}/chat",
|
|
471
|
+
"query": ["before", "limit"],
|
|
472
|
+
"cli": [
|
|
473
|
+
"node",
|
|
474
|
+
"scripts/activity-snapshot.mjs",
|
|
475
|
+
"chat",
|
|
476
|
+
"<sessionId>",
|
|
477
|
+
"[<agentId>]",
|
|
478
|
+
"[--before <offset>]",
|
|
479
|
+
"[--limit <n>]"
|
|
480
|
+
],
|
|
481
|
+
"schema": "activity-chat.schema.json",
|
|
482
|
+
"version": "1.0.0",
|
|
483
|
+
"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
|
+
"remote": "read",
|
|
485
|
+
"risk": "read"
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"id": "routines",
|
|
489
|
+
"method": "GET",
|
|
490
|
+
"path": "/v1/routines",
|
|
491
|
+
"query": [],
|
|
492
|
+
"cli": ["node", "scripts/routine-registry.mjs", "list", "--json"],
|
|
493
|
+
"schema": "routines.schema.json",
|
|
494
|
+
"version": "1.0.0",
|
|
495
|
+
"remote": "read",
|
|
496
|
+
"risk": "read"
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
"id": "routine-delete",
|
|
500
|
+
"method": "DELETE",
|
|
501
|
+
"path": "/v1/routines/{name}",
|
|
502
|
+
"query": ["confirm"],
|
|
503
|
+
"cli": ["node", "scripts/routine-registry.mjs", "remove", "--name", "{name}"],
|
|
504
|
+
"schema": "routine-delete.schema.json",
|
|
505
|
+
"version": "1.0.0",
|
|
506
|
+
"note": "Two steps: without confirm the preview and a token; with ?confirm=<token> the removal. A shipped command is refused (409 not-removable).",
|
|
507
|
+
"remote": "local-only",
|
|
508
|
+
"risk": "high"
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
"id": "stack",
|
|
512
|
+
"method": "GET",
|
|
513
|
+
"path": "/v1/stack",
|
|
514
|
+
"query": ["repo"],
|
|
515
|
+
"cli": ["node", "scripts/stack-toggle.mjs", "status", "--repo", "<path>", "--json"],
|
|
516
|
+
"schema": "stack.schema.json",
|
|
517
|
+
"version": "1.0.0",
|
|
518
|
+
"note": "repo is a name from GET /v1/repos or its path, and must be one of those repositories.",
|
|
519
|
+
"remote": "read",
|
|
520
|
+
"risk": "read"
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
"id": "stack-set",
|
|
524
|
+
"method": "POST",
|
|
525
|
+
"path": "/v1/stack",
|
|
526
|
+
"query": [],
|
|
527
|
+
"body": "stack-request.schema.json",
|
|
528
|
+
"cli": [
|
|
529
|
+
"node",
|
|
530
|
+
"scripts/stack-toggle.mjs",
|
|
531
|
+
"set",
|
|
532
|
+
"--repo",
|
|
533
|
+
"<path>",
|
|
534
|
+
"<stack>...",
|
|
535
|
+
"--json"
|
|
536
|
+
],
|
|
537
|
+
"schema": "stack-change.schema.json",
|
|
538
|
+
"version": "1.0.0",
|
|
539
|
+
"note": "Two steps: the planned enabledPlugins (nothing written), then the write. The same writer /multi-agent:stack uses.",
|
|
540
|
+
"remote": "local-only",
|
|
541
|
+
"risk": "high"
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"id": "ledger",
|
|
545
|
+
"method": "GET",
|
|
546
|
+
"path": "/v1/ledger",
|
|
547
|
+
"query": [],
|
|
548
|
+
"cli": ["node", "scripts/office-ledger.mjs", "--json"],
|
|
549
|
+
"schema": "ledger.schema.json",
|
|
550
|
+
"version": "1.0.0",
|
|
551
|
+
"remote": "read",
|
|
552
|
+
"risk": "read",
|
|
553
|
+
"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
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"id": "run-results",
|
|
557
|
+
"method": "GET",
|
|
558
|
+
"path": "/v1/runs/{id}/results",
|
|
559
|
+
"query": [],
|
|
560
|
+
"cli": ["node", "scripts/run-results.mjs", "{id}", "--json"],
|
|
561
|
+
"schema": "run-results.schema.json",
|
|
562
|
+
"version": "1.0.0",
|
|
563
|
+
"remote": "read",
|
|
564
|
+
"risk": "read"
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"id": "run-evidence",
|
|
568
|
+
"method": "GET",
|
|
569
|
+
"path": "/v1/runs/{id}/evidence/{name}",
|
|
570
|
+
"query": [],
|
|
571
|
+
"cli": ["node", "scripts/run-results.mjs", "{id}", "--evidence", "{name}"],
|
|
572
|
+
"schema": "run-evidence.schema.json",
|
|
573
|
+
"version": "1.0.0",
|
|
574
|
+
"remote": "read",
|
|
575
|
+
"risk": "read"
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"id": "review-verdict",
|
|
579
|
+
"method": "POST",
|
|
580
|
+
"path": "/v1/runs/{id}/review-verdict",
|
|
581
|
+
"query": [],
|
|
582
|
+
"body": "review-verdict-request.schema.json",
|
|
583
|
+
"cli": ["node", "scripts/work-items.mjs", "verdict", "{id}", "[--post]"],
|
|
584
|
+
"schema": "review-verdict.schema.json",
|
|
585
|
+
"version": "1.0.0",
|
|
586
|
+
"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
|
+
"remote": "launch",
|
|
588
|
+
"risk": "high"
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
"id": "issue-maturity",
|
|
592
|
+
"method": "GET",
|
|
593
|
+
"path": "/v1/issues/{key}/maturity",
|
|
594
|
+
"query": [],
|
|
595
|
+
"cli": ["node", "scripts/work-items.mjs", "maturity", "{key}"],
|
|
596
|
+
"schema": "issue-maturity.schema.json",
|
|
597
|
+
"version": "1.0.0",
|
|
598
|
+
"note": "key is URL-encoded (owner%2Frepo%23N for a GitHub issue).",
|
|
599
|
+
"remote": "read",
|
|
600
|
+
"risk": "read"
|
|
601
|
+
},
|
|
602
|
+
{
|
|
603
|
+
"id": "prs",
|
|
604
|
+
"method": "GET",
|
|
605
|
+
"path": "/v1/prs",
|
|
606
|
+
"query": ["redact"],
|
|
607
|
+
"cli": ["node", "scripts/work-items.mjs", "prs"],
|
|
608
|
+
"schema": "prs.schema.json",
|
|
609
|
+
"version": "1.0.0",
|
|
610
|
+
"note": "Bitbucket listing is not implemented; its source entry says so.",
|
|
611
|
+
"remote": "read",
|
|
612
|
+
"risk": "read"
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
"id": "tools",
|
|
616
|
+
"method": "GET",
|
|
617
|
+
"path": "/v1/tools",
|
|
618
|
+
"query": [],
|
|
619
|
+
"cli": ["node", "scripts/toolkit-tools.mjs", "list"],
|
|
620
|
+
"schema": "tools.schema.json",
|
|
621
|
+
"version": "1.0.0",
|
|
622
|
+
"note": "One toolkit MCP child per server, started on first use, closed when the server stops. 409 not-installed when no toolkit is registered.",
|
|
623
|
+
"remote": "read",
|
|
624
|
+
"risk": "read"
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"id": "tool-call",
|
|
628
|
+
"method": "POST",
|
|
629
|
+
"path": "/v1/tools/{name}/call",
|
|
630
|
+
"query": [],
|
|
631
|
+
"body": "tool-call-request.schema.json",
|
|
632
|
+
"cli": ["node", "scripts/toolkit-tools.mjs", "call", "{name}", "<json arguments>"],
|
|
633
|
+
"schema": "tool-call.schema.json",
|
|
634
|
+
"version": "1.0.0",
|
|
635
|
+
"note": "Denied by default: only a readOnlyHint tool whose inputSchema takes no location, outside the web and context families, can be called (403 tool-not-allowed otherwise); a confirm argument is refused; the toolkit child always runs with MULTI_AGENT_UNATTENDED=1 and MCP_TOOLKIT_URL_POLICY=strict; an unknown tool is 404, invalid arguments 400.",
|
|
636
|
+
"remote": "local-only",
|
|
637
|
+
"risk": "high"
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
"id": "service-confluence",
|
|
641
|
+
"method": "GET",
|
|
642
|
+
"path": "/v1/services/confluence",
|
|
643
|
+
"query": ["page"],
|
|
644
|
+
"cli": ["node", "scripts/service-read.mjs", "confluence", "<page-id|https-url>"],
|
|
645
|
+
"schema": "service-read.schema.json",
|
|
646
|
+
"version": "1.0.0",
|
|
647
|
+
"remote": "read",
|
|
648
|
+
"risk": "read",
|
|
649
|
+
"note": "A page id, or an https URL on the configured Confluence host only (409 host-not-allowed otherwise, and for any URL when no host is configured). One request at a time (429 busy)."
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
"id": "service-crashlytics",
|
|
653
|
+
"method": "GET",
|
|
654
|
+
"path": "/v1/services/crashlytics",
|
|
655
|
+
"query": ["issue"],
|
|
656
|
+
"cli": ["node", "scripts/service-read.mjs", "crashlytics", "<https-issue-url>"],
|
|
657
|
+
"schema": "service-read.schema.json",
|
|
658
|
+
"version": "1.0.0",
|
|
659
|
+
"remote": "read",
|
|
660
|
+
"risk": "read"
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
"id": "service-figma",
|
|
664
|
+
"method": "GET",
|
|
665
|
+
"path": "/v1/services/figma",
|
|
666
|
+
"query": ["file", "node"],
|
|
667
|
+
"cli": ["node", "scripts/service-read.mjs", "figma", "<file-key>", "<node-id>"],
|
|
668
|
+
"schema": "service-read.schema.json",
|
|
669
|
+
"version": "1.0.0",
|
|
670
|
+
"note": "Rendered over the Figma REST API with the stored token; the Figma MCP is never called.",
|
|
671
|
+
"remote": "read",
|
|
672
|
+
"risk": "read"
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
"id": "permissions",
|
|
676
|
+
"method": "GET",
|
|
677
|
+
"path": "/v1/permissions",
|
|
678
|
+
"query": [],
|
|
679
|
+
"cli": ["node", "scripts/contract-server.mjs"],
|
|
680
|
+
"schema": "permissions.schema.json",
|
|
681
|
+
"version": "1.0.0",
|
|
682
|
+
"note": "available is false today: the host records no pending permission prompt another process can read.",
|
|
683
|
+
"remote": "read",
|
|
684
|
+
"risk": "read"
|
|
347
685
|
}
|
|
348
686
|
],
|
|
349
687
|
"fixtures": {
|
|
@@ -361,5 +699,12 @@
|
|
|
361
699
|
"error-unauthorized.json": "contract-error.schema.json",
|
|
362
700
|
"error-invalid-request.json": "contract-error.schema.json",
|
|
363
701
|
"error-unsigned.json": "contract-error.schema.json"
|
|
702
|
+
},
|
|
703
|
+
"page": {
|
|
704
|
+
"path": "/office",
|
|
705
|
+
"auth": "none for the page; the token reaches it through a one-time code in the URL fragment (POST /office/code with the bearer and no Origin mints it, valid 10 seconds and one use), traded at POST /office/exchange from the page's own origin only",
|
|
706
|
+
"source": "MA_OFFICE_PAGE, else prefs.global.office.page, else the installed office/index.html (~/.claude/office, pipeline/office in a checkout); 404 when none exists",
|
|
707
|
+
"csp": "default-src 'none'; script-src and style-src a per-response nonce; img-src 'self' data:; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'none'",
|
|
708
|
+
"assets": "GET /office/assets/<name>.png without a token: a sprite from the assets directory beside the page; the name is a plain file name (letters, digits, underscore), the file a PNG of at most 256 KiB whose real path is directly in that directory; anything else is 404, a query 400"
|
|
364
709
|
}
|
|
365
710
|
}
|