@mmerterden/multi-agent-pipeline 14.2.2 → 15.0.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 +76 -6
- package/README.md +15 -8
- package/README.tr.md +15 -8
- package/docs/FIGMA_PIPELINE.md +3 -3
- package/docs/adr/0006-skills-core-external-split.md +1 -1
- package/docs/adr/0009-claude-stack-skills-plugin-only.md +31 -0
- package/docs/adr/README.md +1 -0
- package/docs/architecture.md +7 -7
- package/docs/ecosystem.md +28 -28
- package/docs/features.md +5 -5
- package/index.js +2 -0
- package/install/_codex-agents.mjs +11 -2
- package/install/_common.mjs +65 -1
- package/install/_dev-only-files.mjs +0 -1
- package/install/_platform-filter.mjs +73 -7
- package/install/_plugin-skills.mjs +19 -8
- package/install/claude.mjs +144 -59
- package/install/codex.mjs +28 -3
- package/install/copilot.mjs +36 -11
- package/install/index.mjs +6 -2
- package/install/templates/codex-instructions.md +1 -1
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +1 -2
- package/pipeline/commands/multi-agent/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/analysis/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/build-optimize/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/channels/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +186 -0
- package/pipeline/commands/multi-agent/dev/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-local/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/help/SKILL.md +19 -4
- package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/prune-prompts/SKILL.md +81 -0
- package/pipeline/commands/multi-agent/resume/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/{ship → resume-local}/SKILL.md +8 -8
- package/pipeline/commands/multi-agent/setup/SKILL.md +5 -5
- package/pipeline/commands/multi-agent/stack/SKILL.md +55 -43
- package/pipeline/commands/multi-agent/store-ready/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/sync/SKILL.md +18 -11
- package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/uninstall/SKILL.md +2 -0
- package/pipeline/commands/multi-agent/update/SKILL.md +1 -1
- package/pipeline/lib/issue-fetcher.sh +1 -1
- package/pipeline/lib/parse-complaints.sh +306 -0
- package/pipeline/multi-agent-refs/channels/wiki.md +3 -3
- package/pipeline/multi-agent-refs/complaint-analysis-template.md +99 -0
- package/pipeline/multi-agent-refs/component-dispatch.md +6 -6
- package/pipeline/multi-agent-refs/cross-cli-contract.md +16 -16
- package/pipeline/multi-agent-refs/features/external-context-injection.md +1 -1
- package/pipeline/multi-agent-refs/features/stack-skill-routing.md +5 -5
- package/pipeline/multi-agent-refs/generate-issue.md +1 -1
- package/pipeline/multi-agent-refs/phases/modes.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +7 -7
- package/pipeline/multi-agent-refs/phases/phase-2-planning.md +5 -5
- package/pipeline/multi-agent-refs/phases/phase-3-dev.md +3 -3
- package/pipeline/multi-agent-refs/phases/phase-4-review.md +12 -12
- package/pipeline/multi-agent-refs/phases/phase-5-test.md +1 -1
- package/pipeline/multi-agent-refs/tracker-contract.md +1 -1
- package/pipeline/multi-agent-refs/wiki-capture.md +2 -2
- package/pipeline/preferences-template.json +13 -5
- package/pipeline/rules/figma-pipeline.md +2 -2
- package/pipeline/schemas/agent-state.schema.json +1 -1
- package/pipeline/schemas/complaint-analysis-spec.schema.json +216 -0
- package/pipeline/schemas/migrations/prefs-2.5.0-to-2.6.0.mjs +46 -0
- package/pipeline/schemas/prefs.schema.json +276 -66
- package/pipeline/schemas/token-budget.json +2 -2
- package/pipeline/scripts/_stack-routing.mjs +79 -0
- package/pipeline/scripts/audit-log-rotate.sh +4 -1
- package/pipeline/scripts/build-skills-index.mjs +11 -0
- package/pipeline/scripts/build-stack-plugins.mjs +28 -60
- package/pipeline/scripts/check-derived-drift.mjs +52 -28
- package/pipeline/scripts/gc-worktrees.sh +4 -1
- package/pipeline/scripts/gen-skills-index.mjs +1 -1
- package/pipeline/scripts/match-skills.mjs +8 -2
- package/pipeline/scripts/migrate-prefs.mjs +28 -20
- package/pipeline/scripts/phase-tracker.sh +13 -5
- package/pipeline/scripts/phase0-exit-gate.mjs +3 -2
- package/pipeline/scripts/run-aggregator.mjs +7 -2
- package/pipeline/scripts/scan-agent-config.sh +1 -1
- package/pipeline/scripts/skill-conformance.mjs +165 -30
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +1 -1
- package/pipeline/scripts/test-gap-rules/android.json +25 -0
- package/pipeline/scripts/test-gap-rules/ios.json +34 -0
- package/pipeline/scripts/test-gap-rules/node.json +29 -0
- package/pipeline/scripts/test-gap-rules/python.json +25 -0
- package/pipeline/scripts/uninstall.mjs +158 -11
- package/pipeline/scripts/validate-complaint-doc.mjs +229 -0
- package/pipeline/scripts/validate-reviewer.mjs +9 -3
- package/pipeline/skills/.skill-manifest.json +156 -108
- package/pipeline/skills/.skills-index.json +449 -12
- package/pipeline/skills/shared/README.md +14 -10
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md +49 -0
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-prune-prompts/SKILL.md +83 -0
- package/pipeline/skills/shared/core/{multi-agent-ship → multi-agent-resume-local}/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +79 -22
- package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +1 -1
- package/pipeline/skills/shared/external/ios-coding-standard/modules/_TEMPLATE.yml +2 -2
- package/pipeline/skills/shared/external/ios-coding-standard/references/rules.yml +368 -33
- package/pipeline/skills/shared/external/ios-coding-standard/references/swiftlint.draft.yml +1 -2
- package/pipeline/skills/shared/external/ios-coding-standard/scripts/check_structure.py +765 -0
- package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +75 -0
- package/pipeline/skills/shared/external/ios-module-structure/modules/_TEMPLATE.yml +131 -0
- package/pipeline/skills/shared/external/ios-module-structure/references/rules.yml +559 -0
- package/pipeline/skills/shared/external/ios-module-structure/scripts/check_structure.py +765 -0
- package/pipeline/skills/shared/external/localization-reuse-map/example-mapping.json +53 -10
- package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +4 -3
- package/pipeline/skills/skills-index.md +7 -4
|
@@ -10,12 +10,24 @@
|
|
|
10
10
|
"description": "Documentation-only blocks shipped in preferences-template.json (_figmaConfigTemplate, _derivedSkillSourcesTemplate, _devToolkitTemplate). Copy-paste examples, never read by the pipeline."
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
|
-
"required": [
|
|
13
|
+
"required": [
|
|
14
|
+
"schemaVersion",
|
|
15
|
+
"global",
|
|
16
|
+
"projects"
|
|
17
|
+
],
|
|
14
18
|
"properties": {
|
|
15
19
|
"schemaVersion": {
|
|
16
20
|
"type": "string",
|
|
17
|
-
"enum": [
|
|
18
|
-
|
|
21
|
+
"enum": [
|
|
22
|
+
"2.0.0",
|
|
23
|
+
"2.1.0",
|
|
24
|
+
"2.2.0",
|
|
25
|
+
"2.3.0",
|
|
26
|
+
"2.4.0",
|
|
27
|
+
"2.5.0",
|
|
28
|
+
"2.6.0"
|
|
29
|
+
],
|
|
30
|
+
"description": "v2.0.0: pre-v3.7. v2.1.0: v3.7+ adds identities[].servicePatMap, platformIdentityRouting, recentGroups, recentBranches, serviceStatus, settings, expanded keychainMapping. v2.2.0: v6.0.0 formalizes v5.7 / v5.8 additions (reportChannels, reportContent with technicalAnalysis, wikiScope, autopilotReportTimeoutSeconds) that had been running as 2.1.0 sub-migrations without a proper version bump. v2.5.0: v14.0.0 adds global.skillConformance (Phase 4 criteria resolution) and declares global.ship.autoFix, which the tail command's spec had referenced as global.finish.autoFix without ever declaring it. v2.6.0: v15.0.0 renames global.ship to global.resumeLocal (/multi-agent:ship -> :resume-local)."
|
|
19
31
|
},
|
|
20
32
|
"global": {
|
|
21
33
|
"type": "object",
|
|
@@ -27,7 +39,10 @@
|
|
|
27
39
|
"items": {
|
|
28
40
|
"type": "object",
|
|
29
41
|
"additionalProperties": false,
|
|
30
|
-
"required": [
|
|
42
|
+
"required": [
|
|
43
|
+
"name",
|
|
44
|
+
"email"
|
|
45
|
+
],
|
|
31
46
|
"properties": {
|
|
32
47
|
"name": {
|
|
33
48
|
"type": "string"
|
|
@@ -111,91 +126,160 @@
|
|
|
111
126
|
"description": "Maps logical token names to actual Keychain item names. Pipeline looks up tokens via `security find-generic-password -s <mapped-name>` (or `pipeline/lib/credential-store.sh get` cross-platform). Covered keys: jira, bitbucket, bitbucket_token, bitbucket_user, github, confluence, figma, figma_mcp, fortify, graylog, firebase, jenkins, npm, claude_oauth_token, claude_oauth_token_fallback. Deprecated and accepted only for backward compatibility: figma_pat (superseded by figma), figma_user (unused).",
|
|
112
127
|
"properties": {
|
|
113
128
|
"jira": {
|
|
114
|
-
"type": [
|
|
129
|
+
"type": [
|
|
130
|
+
"string",
|
|
131
|
+
"null"
|
|
132
|
+
]
|
|
115
133
|
},
|
|
116
134
|
"bitbucket": {
|
|
117
|
-
"type": [
|
|
135
|
+
"type": [
|
|
136
|
+
"string",
|
|
137
|
+
"null"
|
|
138
|
+
],
|
|
118
139
|
"description": "Legacy alias for bitbucket_token."
|
|
119
140
|
},
|
|
120
141
|
"bitbucket_token": {
|
|
121
|
-
"type": [
|
|
142
|
+
"type": [
|
|
143
|
+
"string",
|
|
144
|
+
"null"
|
|
145
|
+
]
|
|
122
146
|
},
|
|
123
147
|
"bitbucket_user": {
|
|
124
|
-
"type": [
|
|
148
|
+
"type": [
|
|
149
|
+
"string",
|
|
150
|
+
"null"
|
|
151
|
+
]
|
|
125
152
|
},
|
|
126
153
|
"github": {
|
|
127
|
-
"type": [
|
|
154
|
+
"type": [
|
|
155
|
+
"string",
|
|
156
|
+
"null"
|
|
157
|
+
]
|
|
128
158
|
},
|
|
129
159
|
"confluence": {
|
|
130
|
-
"type": [
|
|
160
|
+
"type": [
|
|
161
|
+
"string",
|
|
162
|
+
"null"
|
|
163
|
+
]
|
|
131
164
|
},
|
|
132
165
|
"figma": {
|
|
133
|
-
"type": [
|
|
166
|
+
"type": [
|
|
167
|
+
"string",
|
|
168
|
+
"null"
|
|
169
|
+
],
|
|
134
170
|
"description": "Figma Personal Access Token. The canonical Tier 2 (REST API) key of the Figma access chain - this is the key `figma-token.sh` resolves. Supersedes `figma_pat`."
|
|
135
171
|
},
|
|
136
172
|
"figma_mcp": {
|
|
137
|
-
"type": [
|
|
173
|
+
"type": [
|
|
174
|
+
"string",
|
|
175
|
+
"null"
|
|
176
|
+
],
|
|
138
177
|
"description": "Figma MCP token. Tier 1 of the Figma access chain. The `mcp__claude_ai_Figma__*` calls themselves authenticate through Anthropic-managed MCP auth, but the token must be onboarded so that flow has something to bind to, and so `lib/figma-mcp-refresh.sh` can renew it."
|
|
139
178
|
},
|
|
140
179
|
"fortify": {
|
|
141
|
-
"type": [
|
|
180
|
+
"type": [
|
|
181
|
+
"string",
|
|
182
|
+
"null"
|
|
183
|
+
]
|
|
142
184
|
},
|
|
143
185
|
"graylog": {
|
|
144
|
-
"type": [
|
|
186
|
+
"type": [
|
|
187
|
+
"string",
|
|
188
|
+
"null"
|
|
189
|
+
]
|
|
145
190
|
},
|
|
146
191
|
"figma_pat": {
|
|
147
|
-
"type": [
|
|
192
|
+
"type": [
|
|
193
|
+
"string",
|
|
194
|
+
"null"
|
|
195
|
+
],
|
|
148
196
|
"deprecated": true,
|
|
149
197
|
"description": "DEPRECATED, pre-v13.6 name for `figma`. Kept so an un-migrated preferences file still validates; `migrate-prefs.mjs` copies the value into `figma` and deletes this key. Never write a new mapping here - the next migration removes it. Runtime lookups read `figma` first and fall back to this key only for installs that have not migrated yet."
|
|
150
198
|
},
|
|
151
199
|
"figma_user": {
|
|
152
|
-
"type": [
|
|
200
|
+
"type": [
|
|
201
|
+
"string",
|
|
202
|
+
"null"
|
|
203
|
+
],
|
|
153
204
|
"deprecated": true,
|
|
154
205
|
"description": "DEPRECATED and unused. `migrate-prefs.mjs` removes this key; the REST flow authenticates with the PAT alone."
|
|
155
206
|
},
|
|
156
207
|
"claude_oauth_token": {
|
|
157
|
-
"type": [
|
|
208
|
+
"type": [
|
|
209
|
+
"string",
|
|
210
|
+
"null"
|
|
211
|
+
],
|
|
158
212
|
"description": "Claude Code OAuth token used by headless / scheduled runs."
|
|
159
213
|
},
|
|
160
214
|
"claude_oauth_token_fallback": {
|
|
161
|
-
"type": [
|
|
215
|
+
"type": [
|
|
216
|
+
"string",
|
|
217
|
+
"null"
|
|
218
|
+
],
|
|
162
219
|
"description": "Secondary OAuth token used when the primary is rate-limited or expired."
|
|
163
220
|
},
|
|
164
221
|
"firebase": {
|
|
165
|
-
"type": [
|
|
222
|
+
"type": [
|
|
223
|
+
"string",
|
|
224
|
+
"null"
|
|
225
|
+
],
|
|
166
226
|
"description": "Firebase JSON (base64-encoded). project_id is parsed from the decoded JSON."
|
|
167
227
|
},
|
|
168
228
|
"firebase_sa": {
|
|
169
|
-
"type": [
|
|
229
|
+
"type": [
|
|
230
|
+
"string",
|
|
231
|
+
"null"
|
|
232
|
+
],
|
|
170
233
|
"deprecated": true,
|
|
171
234
|
"description": "DEPRECATED, early-v2.1.0 name for `firebase`. Declared only so a pre-consolidation preferences file still validates long enough for `migrate-prefs.mjs` to copy the value into `firebase` and delete this key. Never write a new mapping here."
|
|
172
235
|
},
|
|
173
236
|
"firebase_project": {
|
|
174
|
-
"type": [
|
|
237
|
+
"type": [
|
|
238
|
+
"string",
|
|
239
|
+
"null"
|
|
240
|
+
],
|
|
175
241
|
"deprecated": true,
|
|
176
242
|
"description": "DEPRECATED and unused. Declared only so a pre-consolidation preferences file still validates; `migrate-prefs.mjs` removes it, because project_id is parsed from the decoded service-account JSON and needs no separate entry."
|
|
177
243
|
},
|
|
178
244
|
"jenkins": {
|
|
179
|
-
"type": [
|
|
245
|
+
"type": [
|
|
246
|
+
"string",
|
|
247
|
+
"null"
|
|
248
|
+
]
|
|
180
249
|
},
|
|
181
250
|
"npm": {
|
|
182
|
-
"type": [
|
|
251
|
+
"type": [
|
|
252
|
+
"string",
|
|
253
|
+
"null"
|
|
254
|
+
],
|
|
183
255
|
"description": "NPM registry token (npm.pkg.github.com or npmjs.com). Used by package publish flow."
|
|
184
256
|
},
|
|
185
257
|
"appstore_connect_key_id": {
|
|
186
|
-
"type": [
|
|
258
|
+
"type": [
|
|
259
|
+
"string",
|
|
260
|
+
"null"
|
|
261
|
+
],
|
|
187
262
|
"description": "App Store Connect API key ID. Tier 1 of the App Store Connect access chain, used by /multi-agent:store-ready Gate 2 (and its iOS alias /multi-agent:testflight-validation). An identifier rather than a secret; mapped anyway so every credential is read through the same layer. Creating an API key needs an Admin or App Manager role, which is why Tier 2 exists."
|
|
188
263
|
},
|
|
189
264
|
"appstore_connect_issuer_id": {
|
|
190
|
-
"type": [
|
|
265
|
+
"type": [
|
|
266
|
+
"string",
|
|
267
|
+
"null"
|
|
268
|
+
],
|
|
191
269
|
"description": "App Store Connect API issuer ID. Required alongside appstore_connect_key_id; either alone leaves Tier 1 unusable and the resolver says so instead of silently dropping to Tier 2. The .p8 private key is a FILE and is never stored here - it belongs at ~/.appstoreconnect/private_keys/AuthKey_<keyId>.p8, one of the directories altool searches."
|
|
192
270
|
},
|
|
193
271
|
"appstore_connect_apple_id": {
|
|
194
|
-
"type": [
|
|
272
|
+
"type": [
|
|
273
|
+
"string",
|
|
274
|
+
"null"
|
|
275
|
+
],
|
|
195
276
|
"description": "Apple ID for Tier 2 of the App Store Connect access chain. Usable by any Apple ID holder with no elevated role, which is the realistic path when API-key creation is not permitted on the account."
|
|
196
277
|
},
|
|
197
278
|
"appstore_connect_password_item": {
|
|
198
|
-
"type": [
|
|
279
|
+
"type": [
|
|
280
|
+
"string",
|
|
281
|
+
"null"
|
|
282
|
+
],
|
|
199
283
|
"description": "Name of the keychain item holding the app-specific password, created by `altool --store-password-in-keychain-item`. Holds an ITEM NAME, not a password: altool reads the secret itself via `-p @keychain:<item>`, so the value never reaches an argument list or the pipeline."
|
|
200
284
|
}
|
|
201
285
|
}
|
|
@@ -203,7 +287,10 @@
|
|
|
203
287
|
"tokenScripts": {
|
|
204
288
|
"type": "object",
|
|
205
289
|
"additionalProperties": {
|
|
206
|
-
"type": [
|
|
290
|
+
"type": [
|
|
291
|
+
"string",
|
|
292
|
+
"null"
|
|
293
|
+
]
|
|
207
294
|
},
|
|
208
295
|
"default": {},
|
|
209
296
|
"description": "Maps service ids to user-owned token generation scripts (absolute paths, personal - never synced). Used by the Phase 0 token pre-flight: figma_mcp silent renewal reads the .figma-oauth.json next to tokenScripts.figma_mcp; the 'Regenerate now (script)' option runs the script itself."
|
|
@@ -233,7 +320,9 @@
|
|
|
233
320
|
{
|
|
234
321
|
"type": "object",
|
|
235
322
|
"additionalProperties": false,
|
|
236
|
-
"required": [
|
|
323
|
+
"required": [
|
|
324
|
+
"path"
|
|
325
|
+
],
|
|
237
326
|
"properties": {
|
|
238
327
|
"path": {
|
|
239
328
|
"type": "string"
|
|
@@ -263,7 +352,9 @@
|
|
|
263
352
|
"items": {
|
|
264
353
|
"type": "object",
|
|
265
354
|
"additionalProperties": false,
|
|
266
|
-
"required": [
|
|
355
|
+
"required": [
|
|
356
|
+
"branch"
|
|
357
|
+
],
|
|
267
358
|
"properties": {
|
|
268
359
|
"branch": {
|
|
269
360
|
"type": "string"
|
|
@@ -288,7 +379,10 @@
|
|
|
288
379
|
"items": {
|
|
289
380
|
"type": "object",
|
|
290
381
|
"additionalProperties": false,
|
|
291
|
-
"required": [
|
|
382
|
+
"required": [
|
|
383
|
+
"name",
|
|
384
|
+
"description"
|
|
385
|
+
],
|
|
292
386
|
"properties": {
|
|
293
387
|
"name": {
|
|
294
388
|
"type": "string",
|
|
@@ -309,7 +403,10 @@
|
|
|
309
403
|
"description": "Where the routine came from, e.g. a CLAUDE.md section name or 'user'."
|
|
310
404
|
},
|
|
311
405
|
"trigger": {
|
|
312
|
-
"type": [
|
|
406
|
+
"type": [
|
|
407
|
+
"string",
|
|
408
|
+
"null"
|
|
409
|
+
],
|
|
313
410
|
"description": "Optional natural-language trigger phrase the routine captures."
|
|
314
411
|
}
|
|
315
412
|
}
|
|
@@ -321,7 +418,9 @@
|
|
|
321
418
|
"items": {
|
|
322
419
|
"type": "object",
|
|
323
420
|
"additionalProperties": false,
|
|
324
|
-
"required": [
|
|
421
|
+
"required": [
|
|
422
|
+
"repos"
|
|
423
|
+
],
|
|
325
424
|
"properties": {
|
|
326
425
|
"label": {
|
|
327
426
|
"type": "string",
|
|
@@ -353,7 +452,9 @@
|
|
|
353
452
|
"items": {
|
|
354
453
|
"type": "object",
|
|
355
454
|
"additionalProperties": false,
|
|
356
|
-
"required": [
|
|
455
|
+
"required": [
|
|
456
|
+
"repoSet"
|
|
457
|
+
],
|
|
357
458
|
"properties": {
|
|
358
459
|
"repoSet": {
|
|
359
460
|
"type": "array",
|
|
@@ -373,7 +474,11 @@
|
|
|
373
474
|
},
|
|
374
475
|
"platform": {
|
|
375
476
|
"type": "string",
|
|
376
|
-
"enum": [
|
|
477
|
+
"enum": [
|
|
478
|
+
"ios",
|
|
479
|
+
"android",
|
|
480
|
+
"mixed"
|
|
481
|
+
]
|
|
377
482
|
},
|
|
378
483
|
"hostScheme": {
|
|
379
484
|
"type": "string",
|
|
@@ -405,7 +510,11 @@
|
|
|
405
510
|
},
|
|
406
511
|
"lastResult": {
|
|
407
512
|
"type": "string",
|
|
408
|
-
"enum": [
|
|
513
|
+
"enum": [
|
|
514
|
+
"success",
|
|
515
|
+
"failed",
|
|
516
|
+
"skipped"
|
|
517
|
+
]
|
|
409
518
|
}
|
|
410
519
|
}
|
|
411
520
|
},
|
|
@@ -417,7 +526,10 @@
|
|
|
417
526
|
"additionalProperties": {
|
|
418
527
|
"type": "object",
|
|
419
528
|
"additionalProperties": false,
|
|
420
|
-
"required": [
|
|
529
|
+
"required": [
|
|
530
|
+
"ok",
|
|
531
|
+
"checkedAt"
|
|
532
|
+
],
|
|
421
533
|
"properties": {
|
|
422
534
|
"ok": {
|
|
423
535
|
"type": "boolean"
|
|
@@ -496,7 +608,10 @@
|
|
|
496
608
|
}
|
|
497
609
|
},
|
|
498
610
|
"defaultJiraKey": {
|
|
499
|
-
"type": [
|
|
611
|
+
"type": [
|
|
612
|
+
"string",
|
|
613
|
+
"null"
|
|
614
|
+
],
|
|
500
615
|
"description": "Default Jira project key used for placeholder replacement. null until /multi-agent:setup onboards a Jira project."
|
|
501
616
|
},
|
|
502
617
|
"modelFallback": {
|
|
@@ -510,7 +625,10 @@
|
|
|
510
625
|
"description": "Master switch for tier fallback."
|
|
511
626
|
},
|
|
512
627
|
"premiumTierUntil": {
|
|
513
|
-
"type": [
|
|
628
|
+
"type": [
|
|
629
|
+
"string",
|
|
630
|
+
"null"
|
|
631
|
+
],
|
|
514
632
|
"description": "ISO date after which the premium tier is assumed gone. null = no expiry known."
|
|
515
633
|
},
|
|
516
634
|
"fallbackModel": {
|
|
@@ -650,14 +768,28 @@
|
|
|
650
768
|
"type": "array",
|
|
651
769
|
"items": {
|
|
652
770
|
"type": "string",
|
|
653
|
-
"enum": [
|
|
771
|
+
"enum": [
|
|
772
|
+
"main",
|
|
773
|
+
"ios",
|
|
774
|
+
"screenshots",
|
|
775
|
+
"index"
|
|
776
|
+
]
|
|
654
777
|
},
|
|
655
|
-
"default": [
|
|
778
|
+
"default": [
|
|
779
|
+
"main",
|
|
780
|
+
"ios",
|
|
781
|
+
"screenshots",
|
|
782
|
+
"index"
|
|
783
|
+
],
|
|
656
784
|
"description": "v5.7+ - Wiki Case A scope multi-select default'u. Component wiki dispatch'inde hangi artifact'lar yaz\u0131lacak: main (ana component sayfas\u0131), ios (iOS sub-page), screenshots (assets/ klas\u00f6r\u00fc), index (_Sidebar.md + ComponentImplementationStatus.md). Legacy wikiDefault=true \u2192 [main,ios,screenshots,index] migration; wikiDefault=false \u2192 [] (empty array = Wiki adapter Case B men\u00fcs\u00fcne d\u00fc\u015fer)."
|
|
657
785
|
},
|
|
658
786
|
"autoJiraFromGithubIssue": {
|
|
659
787
|
"type": "string",
|
|
660
|
-
"enum": [
|
|
788
|
+
"enum": [
|
|
789
|
+
"ask",
|
|
790
|
+
"always",
|
|
791
|
+
"never"
|
|
792
|
+
],
|
|
661
793
|
"default": "ask",
|
|
662
794
|
"description": "Policy for the GitHub-issue Jira auto-create (WS-6 triad, Phase 0 Step 1). `ask` prompts the user when a GitHub issue has no Jira ID. `always` auto-creates silently (and patches the GitHub issue body with the link). `never` skips and uses the `feature/GH{issueNo}-kebab` branch. Autopilot treats `ask` as `always` - there is no interactive fallback when running unattended."
|
|
663
795
|
},
|
|
@@ -668,19 +800,29 @@
|
|
|
668
800
|
},
|
|
669
801
|
"promptLanguage": {
|
|
670
802
|
"type": "string",
|
|
671
|
-
"enum": [
|
|
803
|
+
"enum": [
|
|
804
|
+
"en",
|
|
805
|
+
"tr"
|
|
806
|
+
],
|
|
672
807
|
"default": "en",
|
|
673
808
|
"description": "Locked to 'en': the language of LLM-facing instructions (spec files, agent system prompts, reviewer/triage prompts) and picker structural chrome (AskUserQuestion label/header). What humans read is governed by outputLanguage instead - picker question/description, conversational lines, and external payload bodies (PR description, Jira comment, Confluence/Wiki). Always English regardless of either pref: commit messages, branch names, PR titles, code identifiers, agent-log.md. Canonical matrix: multi-agent-refs/rules.md 'Language Application'. Set via /multi-agent:language or /multi-agent:setup."
|
|
674
809
|
},
|
|
675
810
|
"outputLanguage": {
|
|
676
811
|
"type": "string",
|
|
677
|
-
"enum": [
|
|
812
|
+
"enum": [
|
|
813
|
+
"en",
|
|
814
|
+
"tr"
|
|
815
|
+
],
|
|
678
816
|
"default": "en",
|
|
679
817
|
"description": "Language used for the assistant's NON-INTERACTIVE explanations, status updates, error messages, and pipeline-generated reports rendered to the user (e.g. `/multi-agent:help` body, `/multi-agent:status` table headers, summary blocks at the end of a run). Independent of `promptLanguage` so a user can have Turkish pickers but English summaries (or vice versa). External payloads (commits, PR/Jira/wiki) and skill-picker / confirmation / error UI exposed by the CLI host stay English regardless of this setting. Set via `/multi-agent:language output <en|tr>` or answered on first run by `/multi-agent:setup`."
|
|
680
818
|
},
|
|
681
819
|
"progressVerbosity": {
|
|
682
820
|
"type": "string",
|
|
683
|
-
"enum": [
|
|
821
|
+
"enum": [
|
|
822
|
+
"quiet",
|
|
823
|
+
"normal",
|
|
824
|
+
"verbose"
|
|
825
|
+
],
|
|
684
826
|
"default": "normal",
|
|
685
827
|
"description": "Verbosity of the live progress-line contract (`refs/progress-contract.md`). `quiet` shows only phase banners and user prompts (CI-friendly). `normal` shows banners + the canonical action set per phase - recommended for interactive use. `verbose` shows sub-agent internal actions, file-level reads, schema validations, retry internals - forced automatically when `mode: autopilot` is set in agent state so the run remains audit-grade when the user isn't watching live."
|
|
686
828
|
},
|
|
@@ -703,7 +845,9 @@
|
|
|
703
845
|
},
|
|
704
846
|
"model": {
|
|
705
847
|
"type": "string",
|
|
706
|
-
"enum": [
|
|
848
|
+
"enum": [
|
|
849
|
+
"sonnet"
|
|
850
|
+
],
|
|
707
851
|
"default": "sonnet",
|
|
708
852
|
"description": "Cross-check model. Locked to Sonnet - Opus would just agree with Opus."
|
|
709
853
|
},
|
|
@@ -762,7 +906,10 @@
|
|
|
762
906
|
},
|
|
763
907
|
"model": {
|
|
764
908
|
"type": "string",
|
|
765
|
-
"enum": [
|
|
909
|
+
"enum": [
|
|
910
|
+
"sonnet",
|
|
911
|
+
"opus"
|
|
912
|
+
],
|
|
766
913
|
"default": "sonnet",
|
|
767
914
|
"description": "Verifier agent model. Writing a minimal repro test is mechanical work; Sonnet is the cost-sane default."
|
|
768
915
|
},
|
|
@@ -799,7 +946,11 @@
|
|
|
799
946
|
},
|
|
800
947
|
"mode": {
|
|
801
948
|
"type": "string",
|
|
802
|
-
"enum": [
|
|
949
|
+
"enum": [
|
|
950
|
+
"per-tool-call",
|
|
951
|
+
"per-todo-step",
|
|
952
|
+
"off"
|
|
953
|
+
],
|
|
803
954
|
"default": "per-todo-step",
|
|
804
955
|
"description": "Snapshot frequency. per-tool-call snapshots after each Edit/Write/Bash mutation; per-todo-step snapshots once per plan-todos.sh step boundary (cheaper, recommended). off is equivalent to enabled=false."
|
|
805
956
|
},
|
|
@@ -836,7 +987,10 @@
|
|
|
836
987
|
},
|
|
837
988
|
"model": {
|
|
838
989
|
"type": "string",
|
|
839
|
-
"enum": [
|
|
990
|
+
"enum": [
|
|
991
|
+
"haiku",
|
|
992
|
+
"sonnet"
|
|
993
|
+
],
|
|
840
994
|
"default": "haiku",
|
|
841
995
|
"description": "Classifier model. Haiku is the cost default; Sonnet override for regulated domains where ambiguity nuance matters."
|
|
842
996
|
},
|
|
@@ -856,7 +1010,11 @@
|
|
|
856
1010
|
},
|
|
857
1011
|
"autopilotMode": {
|
|
858
1012
|
"type": "string",
|
|
859
|
-
"enum": [
|
|
1013
|
+
"enum": [
|
|
1014
|
+
"skip",
|
|
1015
|
+
"log",
|
|
1016
|
+
"abort"
|
|
1017
|
+
],
|
|
860
1018
|
"default": "log",
|
|
861
1019
|
"description": "What to do when stopAndAsk fires in autopilot. skip = drop questions and proceed (most aggressive); log = append to agent-log.md and proceed (default, preserves signal); abort = pause Phase 0 and require multi-agent:resume."
|
|
862
1020
|
}
|
|
@@ -899,13 +1057,21 @@
|
|
|
899
1057
|
},
|
|
900
1058
|
"onExceed": {
|
|
901
1059
|
"type": "string",
|
|
902
|
-
"enum": [
|
|
1060
|
+
"enum": [
|
|
1061
|
+
"warn",
|
|
1062
|
+
"halt"
|
|
1063
|
+
],
|
|
903
1064
|
"default": "warn",
|
|
904
1065
|
"description": "warn = surface the overage and continue (autopilot keeps going). halt = pause the run and require multi-agent:resume once the user accepts the cost. Interactive runs always surface the line regardless."
|
|
905
1066
|
},
|
|
906
1067
|
"pricingModel": {
|
|
907
1068
|
"type": "string",
|
|
908
|
-
"enum": [
|
|
1069
|
+
"enum": [
|
|
1070
|
+
"fable",
|
|
1071
|
+
"opus",
|
|
1072
|
+
"sonnet",
|
|
1073
|
+
"haiku"
|
|
1074
|
+
],
|
|
909
1075
|
"default": "fable",
|
|
910
1076
|
"description": "Which cost-table.json rate to price accumulated tokens at. Defaults to fable (the top tier since v10.6.0) for a deliberately conservative (upper-bound) estimate, so the ceiling trips early rather than late."
|
|
911
1077
|
}
|
|
@@ -996,7 +1162,11 @@
|
|
|
996
1162
|
},
|
|
997
1163
|
"model": {
|
|
998
1164
|
"type": "string",
|
|
999
|
-
"enum": [
|
|
1165
|
+
"enum": [
|
|
1166
|
+
"sonnet",
|
|
1167
|
+
"opus",
|
|
1168
|
+
"haiku"
|
|
1169
|
+
],
|
|
1000
1170
|
"default": "sonnet",
|
|
1001
1171
|
"description": "Critic model. Sonnet is the cost/quality default. Opus override only when diff > 500 LOC or touches security-critical paths. Haiku is too brittle for checklist reasoning - use only for trivial verification tasks."
|
|
1002
1172
|
},
|
|
@@ -1099,7 +1269,10 @@
|
|
|
1099
1269
|
"description": "When true, also scan the repo tree (not just the diff) for existing tests that already mention the symbol - catches gaps that are technically covered by older tests outside the current diff. Slower but more accurate. Off by default - diff-only scan is sufficient for the common case."
|
|
1100
1270
|
},
|
|
1101
1271
|
"blockingThreshold": {
|
|
1102
|
-
"type": [
|
|
1272
|
+
"type": [
|
|
1273
|
+
"integer",
|
|
1274
|
+
"null"
|
|
1275
|
+
],
|
|
1103
1276
|
"minimum": 1,
|
|
1104
1277
|
"default": null,
|
|
1105
1278
|
"description": "If set, gaps where `important + blocking` count exceeds the threshold are treated as a Phase 4 rework finding (loops back to Phase 3). null = advisory only - Phase 5 prints the report but never gates."
|
|
@@ -1138,7 +1311,12 @@
|
|
|
1138
1311
|
"items": {
|
|
1139
1312
|
"type": "object",
|
|
1140
1313
|
"additionalProperties": false,
|
|
1141
|
-
"required": [
|
|
1314
|
+
"required": [
|
|
1315
|
+
"label",
|
|
1316
|
+
"localPath",
|
|
1317
|
+
"upstreamPlugin",
|
|
1318
|
+
"derivedFromVersion"
|
|
1319
|
+
],
|
|
1142
1320
|
"properties": {
|
|
1143
1321
|
"label": {
|
|
1144
1322
|
"type": "string",
|
|
@@ -1168,7 +1346,10 @@
|
|
|
1168
1346
|
"description": "Upstream version we last synced from, read from the manifest named by `upstreamVersionSource`. Bumped after a drift port is applied."
|
|
1169
1347
|
},
|
|
1170
1348
|
"upstreamVersionSource": {
|
|
1171
|
-
"enum": [
|
|
1349
|
+
"enum": [
|
|
1350
|
+
"marketplace.json",
|
|
1351
|
+
"plugin.json"
|
|
1352
|
+
],
|
|
1172
1353
|
"default": "marketplace.json",
|
|
1173
1354
|
"description": "Which upstream manifest carries the authoritative version. Defaults to marketplace.json because that is what a marketplace consumer resolves; some upstreams keep plugin.json deliberately unused, so reading it silently records a version nobody ships. Recording from the wrong manifest is how an entry here sat at 0.7.0 while the marketplace said 0.6.0."
|
|
1174
1355
|
},
|
|
@@ -1179,6 +1360,11 @@
|
|
|
1179
1360
|
"upstreamRepoUrl": {
|
|
1180
1361
|
"type": "string",
|
|
1181
1362
|
"description": "Used when neither a local clone nor the installed marketplace is available (WebFetch / gh fallback)."
|
|
1363
|
+
},
|
|
1364
|
+
"driftAcknowledged": {
|
|
1365
|
+
"type": "string",
|
|
1366
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
1367
|
+
"description": "Upstream version whose drift is consciously accepted (port pending). The drift gate reports it but does not fail while upstream stays at this version; it re-fails the moment upstream moves past it."
|
|
1182
1368
|
}
|
|
1183
1369
|
}
|
|
1184
1370
|
}
|
|
@@ -1212,7 +1398,11 @@
|
|
|
1212
1398
|
},
|
|
1213
1399
|
"registry": {
|
|
1214
1400
|
"type": "string",
|
|
1215
|
-
"enum": [
|
|
1401
|
+
"enum": [
|
|
1402
|
+
"github-packages",
|
|
1403
|
+
"npmjs",
|
|
1404
|
+
"none"
|
|
1405
|
+
],
|
|
1216
1406
|
"default": "github-packages",
|
|
1217
1407
|
"description": "Publish target for Step 3d. `none` means commit + push only, never publish. The concrete URL comes from the repo's publishConfig; the token comes from the `npm` logical Keychain key through a throwaway --userconfig."
|
|
1218
1408
|
},
|
|
@@ -1228,7 +1418,9 @@
|
|
|
1228
1418
|
"items": {
|
|
1229
1419
|
"type": "object",
|
|
1230
1420
|
"additionalProperties": false,
|
|
1231
|
-
"required": [
|
|
1421
|
+
"required": [
|
|
1422
|
+
"id"
|
|
1423
|
+
],
|
|
1232
1424
|
"properties": {
|
|
1233
1425
|
"id": {
|
|
1234
1426
|
"type": "string",
|
|
@@ -1256,7 +1448,9 @@
|
|
|
1256
1448
|
"items": {
|
|
1257
1449
|
"type": "object",
|
|
1258
1450
|
"additionalProperties": false,
|
|
1259
|
-
"required": [
|
|
1451
|
+
"required": [
|
|
1452
|
+
"id"
|
|
1453
|
+
],
|
|
1260
1454
|
"properties": {
|
|
1261
1455
|
"id": {
|
|
1262
1456
|
"type": "string",
|
|
@@ -1279,7 +1473,12 @@
|
|
|
1279
1473
|
},
|
|
1280
1474
|
"defaultProvider": {
|
|
1281
1475
|
"type": "string",
|
|
1282
|
-
"enum": [
|
|
1476
|
+
"enum": [
|
|
1477
|
+
"github",
|
|
1478
|
+
"bitbucket",
|
|
1479
|
+
"gitlab",
|
|
1480
|
+
"generic-git"
|
|
1481
|
+
]
|
|
1283
1482
|
}
|
|
1284
1483
|
}
|
|
1285
1484
|
},
|
|
@@ -1297,15 +1496,15 @@
|
|
|
1297
1496
|
}
|
|
1298
1497
|
}
|
|
1299
1498
|
},
|
|
1300
|
-
"
|
|
1499
|
+
"resumeLocal": {
|
|
1301
1500
|
"type": "object",
|
|
1302
1501
|
"additionalProperties": false,
|
|
1303
|
-
"description": "
|
|
1502
|
+
"description": "/multi-agent:resume-local (formerly :ship, :finish) - the tail that runs review + build/test + PR + report over work already on the branch.",
|
|
1304
1503
|
"properties": {
|
|
1305
1504
|
"autoFix": {
|
|
1306
1505
|
"type": "boolean",
|
|
1307
1506
|
"default": false,
|
|
1308
|
-
"description": "When true,
|
|
1507
|
+
"description": "When true, resume-local auto-fixes triage-accepted blocking/important findings and re-reviews instead of asking. Equivalent to passing `autopilot` on every run. Default false: resume-local operates on work the user wrote by hand, so silently rewriting it is the surprising option."
|
|
1309
1508
|
}
|
|
1310
1509
|
}
|
|
1311
1510
|
}
|
|
@@ -1337,7 +1536,10 @@
|
|
|
1337
1536
|
},
|
|
1338
1537
|
"defaultPrMode": {
|
|
1339
1538
|
"type": "string",
|
|
1340
|
-
"enum": [
|
|
1539
|
+
"enum": [
|
|
1540
|
+
"draft",
|
|
1541
|
+
"ready"
|
|
1542
|
+
],
|
|
1341
1543
|
"description": "Last-used draft/ready choice, shown as the default on next prompt."
|
|
1342
1544
|
},
|
|
1343
1545
|
"baseBranch": {
|
|
@@ -1376,7 +1578,12 @@
|
|
|
1376
1578
|
},
|
|
1377
1579
|
"remoteType": {
|
|
1378
1580
|
"type": "string",
|
|
1379
|
-
"enum": [
|
|
1581
|
+
"enum": [
|
|
1582
|
+
"bitbucket",
|
|
1583
|
+
"github",
|
|
1584
|
+
"gitlab",
|
|
1585
|
+
"generic-git"
|
|
1586
|
+
],
|
|
1380
1587
|
"description": "Hint used when repo URL doesn't make platform obvious."
|
|
1381
1588
|
},
|
|
1382
1589
|
"taskCount": {
|
|
@@ -1430,7 +1637,10 @@
|
|
|
1430
1637
|
"description": "Per-project App Store Connect delivery settings. Per-project rather than global because a user can ship for more than one team.",
|
|
1431
1638
|
"properties": {
|
|
1432
1639
|
"providerPublicId": {
|
|
1433
|
-
"type": [
|
|
1640
|
+
"type": [
|
|
1641
|
+
"string",
|
|
1642
|
+
"null"
|
|
1643
|
+
],
|
|
1434
1644
|
"description": "Provider (team) public ID, required by altool when the account belongs to several providers. Resolve once with ios_testflight_validate({list_providers:true}); without it altool fails opaquely."
|
|
1435
1645
|
}
|
|
1436
1646
|
}
|