@mmerterden/multi-agent-pipeline 20.30.0 → 20.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +123 -0
- package/README.md +47 -1
- package/README.tr.md +61 -1
- package/docs/adr/0018-cross-repo-links-not-a-global-graph.md +43 -0
- package/docs/adr/README.md +2 -1
- package/docs/facts.json +6 -5
- package/docs/features.md +1 -1
- package/install/_dev-only-files.mjs +1 -0
- package/install/_unattended-profile.mjs +61 -0
- package/install/catalog-history.json +1 -1
- package/install/claude.mjs +16 -2
- package/install/index.mjs +10 -1
- package/install/templates/claude-hooks.json +23 -1
- package/manifest.json +198 -134
- package/package.json +4 -1
- package/pipeline/agents/code-reviewer.md +9 -0
- package/pipeline/agents/explorer.md +4 -0
- package/pipeline/agents/plan-critic.md +4 -2
- package/pipeline/commands/multi-agent/SKILL.md +17 -136
- package/pipeline/commands/multi-agent/analysis/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/channels/SKILL.md +15 -297
- package/pipeline/commands/multi-agent/graph/SKILL.md +5 -2
- package/pipeline/commands/multi-agent/language/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/office-on/SKILL.md +8 -7
- package/pipeline/commands/multi-agent/office-status/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +4 -1
- package/pipeline/commands/multi-agent/resume/SKILL.md +8 -22
- package/pipeline/commands/multi-agent/review/SKILL.md +11 -134
- package/pipeline/commands/multi-agent/scenario-audit/SKILL.md +4 -2
- package/pipeline/commands/multi-agent/setup/SKILL.md +19 -224
- package/pipeline/commands/multi-agent/sync/SKILL.md +12 -0
- package/pipeline/commands/multi-agent/test-gen/SKILL.md +29 -3
- package/pipeline/contract/CHANGELOG.md +46 -0
- package/pipeline/contract/README.md +27 -10
- package/pipeline/contract/fixtures/error-invalid-request.json +1 -1
- package/pipeline/contract/fixtures/error-unauthorized.json +1 -1
- package/pipeline/contract/fixtures/error-unsigned.json +1 -1
- package/pipeline/contract/fixtures/launch-plan.json +1 -1
- package/pipeline/contract/fixtures/runs-awaiting-question.json +6 -1
- package/pipeline/contract/fixtures/runs-empty.json +1 -1
- package/pipeline/contract/fixtures/runs-failed.json +6 -1
- package/pipeline/contract/fixtures/runs-old-schema.json +6 -1
- package/pipeline/contract/fixtures/runs-pr-opened-redacted.json +5 -1
- package/pipeline/contract/fixtures/runs-pr-opened.json +6 -1
- package/pipeline/contract/fixtures/runs-running.json +6 -1
- package/pipeline/contract/manifest.json +153 -19
- package/pipeline/contract/types/index.d.ts +304 -6
- package/pipeline/lib/bg-launch.mjs +106 -0
- package/pipeline/lib/code-digest.mjs +49 -0
- package/pipeline/lib/credential-resolve.mjs +42 -2
- package/pipeline/multi-agent-refs/channels/generator.md +146 -0
- package/pipeline/multi-agent-refs/channels/menu.md +55 -0
- package/pipeline/multi-agent-refs/channels/multi-repo.md +6 -0
- package/pipeline/multi-agent-refs/channels/preview.md +25 -0
- package/pipeline/multi-agent-refs/channels/reference.md +98 -0
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +1 -1
- package/pipeline/multi-agent-refs/features/code-graph.md +27 -0
- package/pipeline/multi-agent-refs/features/office-threat-model.md +24 -6
- package/pipeline/multi-agent-refs/features/plan-critic.md +5 -2
- package/pipeline/multi-agent-refs/features/review-delta.md +4 -1
- package/pipeline/multi-agent-refs/features/scope-check.md +10 -1
- package/pipeline/multi-agent-refs/features/unattended-security.md +1 -1
- package/pipeline/multi-agent-refs/help/en.md +2 -2
- package/pipeline/multi-agent-refs/help/tr.md +2 -2
- package/pipeline/multi-agent-refs/knowledge.md +9 -0
- package/pipeline/multi-agent-refs/orchestrator/dispatcher.md +163 -0
- package/pipeline/multi-agent-refs/phases/modes.md +7 -7
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +4 -4
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +9 -8
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +12 -7
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +7 -3
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +19 -10
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/resume/details.md +35 -0
- package/pipeline/multi-agent-refs/review/inputs.md +87 -0
- package/pipeline/multi-agent-refs/review/module-guides.md +25 -0
- package/pipeline/multi-agent-refs/review/valven.md +42 -0
- package/pipeline/multi-agent-refs/review-standalone-tracker.md +37 -0
- package/pipeline/multi-agent-refs/setup/accounts.md +27 -0
- package/pipeline/multi-agent-refs/setup/app-store-connect.md +5 -0
- package/pipeline/multi-agent-refs/setup/firebase.md +5 -0
- package/pipeline/multi-agent-refs/setup/google-play.md +4 -0
- package/pipeline/multi-agent-refs/setup/hooks-and-plugins.md +21 -0
- package/pipeline/multi-agent-refs/setup/language.md +46 -0
- package/pipeline/multi-agent-refs/setup/multi-repo-group.md +51 -0
- package/pipeline/multi-agent-refs/setup/summaries.md +63 -0
- package/pipeline/multi-agent-refs/setup/token-save-flow.md +51 -0
- package/pipeline/multi-agent-refs/tracker-contract.md +8 -3
- package/pipeline/office/NOTICE.md +4 -1
- package/pipeline/office/assets/ARCHIVE_BOXES.png +0 -0
- package/pipeline/office/assets/COFFEE_MACHINE.png +0 -0
- package/pipeline/office/assets/COUNTER_SINK.png +0 -0
- package/pipeline/office/assets/DEVICE_STAND.png +0 -0
- package/pipeline/office/assets/FILING_CABINET.png +0 -0
- package/pipeline/office/assets/FRIDGE.png +0 -0
- package/pipeline/office/assets/MAILBOX.png +0 -0
- package/pipeline/office/assets/MOP_BUCKET.png +0 -0
- package/pipeline/office/assets/PRINTER.png +0 -0
- package/pipeline/office/assets/RECEPTION_DESK.png +0 -0
- package/pipeline/office/assets/SERVER_RACK.png +0 -0
- package/pipeline/office/assets/SERVER_RACK_2.png +0 -0
- package/pipeline/office/assets/TOILET_STALL.png +0 -0
- package/pipeline/office/assets/VENDING.png +0 -0
- package/pipeline/office/assets/WASHBASIN.png +0 -0
- package/pipeline/office/assets/WATER_COOLER.png +0 -0
- package/pipeline/office/index.html +3936 -819
- package/pipeline/office/toolkit.json +3 -0
- package/pipeline/rules/response-shape.md +6 -7
- package/pipeline/schemas/activity.schema.json +188 -4
- package/pipeline/schemas/agent-state.schema.json +511 -115
- package/pipeline/schemas/contract-error.schema.json +12 -1
- package/pipeline/schemas/job-change.schema.json +72 -0
- package/pipeline/schemas/job-request.schema.json +38 -0
- package/pipeline/schemas/launch.json +4 -4
- package/pipeline/schemas/office-credentials.schema.json +71 -0
- package/pipeline/schemas/office-jobs.json +253 -0
- package/pipeline/schemas/office-jobs.schema.json +62 -0
- package/pipeline/schemas/office-memory.schema.json +105 -0
- package/pipeline/schemas/office-settings-request.schema.json +30 -0
- package/pipeline/schemas/office-settings.schema.json +67 -0
- package/pipeline/schemas/phases.json +14 -6
- package/pipeline/schemas/phases.schema.json +86 -19
- package/pipeline/schemas/plan-critique.schema.json +9 -2
- package/pipeline/schemas/planning-output.schema.json +25 -2
- package/pipeline/schemas/prefs.schema.json +24 -1
- package/pipeline/schemas/prs.schema.json +5 -0
- package/pipeline/schemas/prune-logs-request.schema.json +26 -0
- package/pipeline/schemas/prune-logs.schema.json +52 -0
- package/pipeline/schemas/repo-change.schema.json +54 -0
- package/pipeline/schemas/repo-request.schema.json +29 -0
- package/pipeline/schemas/repos.schema.json +49 -1
- package/pipeline/schemas/reviewer-output.schema.json +20 -2
- package/pipeline/schemas/runs-index.schema.json +257 -46
- package/pipeline/schemas/system-status.schema.json +111 -0
- package/pipeline/schemas/token-budget.json +4 -4
- package/pipeline/schemas/tools.schema.json +5 -0
- package/pipeline/schemas/triage-output.schema.json +20 -2
- package/pipeline/schemas/unattended-profile.json +7 -2
- package/pipeline/scripts/_active-run.mjs +2 -1
- package/pipeline/scripts/_graph-analysis.mjs +270 -0
- package/pipeline/scripts/_memory-policy.mjs +165 -0
- package/pipeline/scripts/_secret-scan.mjs +105 -0
- package/pipeline/scripts/_spawn-async.mjs +9 -5
- package/pipeline/scripts/_unified-diff.mjs +2 -2
- package/pipeline/scripts/activity-snapshot.mjs +219 -23
- package/pipeline/scripts/autopilot-runner.mjs +7 -5
- package/pipeline/scripts/capture-flush.sh +12 -2
- package/pipeline/scripts/check-read-size.sh +9 -0
- package/pipeline/scripts/code-graph-rules/android.json +8 -3
- package/pipeline/scripts/contract-server.mjs +575 -28
- package/pipeline/scripts/debt-ledger.mjs +323 -0
- package/pipeline/scripts/file-context.mjs +261 -0
- package/pipeline/scripts/file-context.sh +20 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -1
- package/pipeline/scripts/graph-links.mjs +230 -0
- package/pipeline/scripts/graph-query.mjs +133 -1
- package/pipeline/scripts/graph-report.mjs +65 -0
- package/pipeline/scripts/job-launch.mjs +477 -0
- package/pipeline/scripts/launch-request.mjs +94 -9
- package/pipeline/scripts/learn-from-transcripts.mjs +12 -48
- package/pipeline/scripts/learnings-ledger.mjs +143 -24
- package/pipeline/scripts/office-build.mjs +148 -11
- package/pipeline/scripts/office-control.mjs +34 -7
- package/pipeline/scripts/office-credentials.mjs +106 -0
- package/pipeline/scripts/office-memory.mjs +200 -0
- package/pipeline/scripts/office-prune.mjs +125 -0
- package/pipeline/scripts/office-settings.mjs +145 -0
- package/pipeline/scripts/phase-tracker.sh +12 -5
- package/pipeline/scripts/plan-critique-gate.mjs +11 -2
- package/pipeline/scripts/prune-logs.sh +53 -2
- package/pipeline/scripts/rework-rulings.mjs +106 -0
- package/pipeline/scripts/runs-index.mjs +62 -2
- package/pipeline/scripts/scope-check-gate.mjs +149 -2
- package/pipeline/scripts/system-status.mjs +196 -0
- package/pipeline/scripts/task-mirror.mjs +150 -0
- package/pipeline/scripts/task-mirror.sh +20 -0
- package/pipeline/scripts/toolkit-tools.mjs +33 -7
- package/pipeline/scripts/transcript-index.mjs +4 -1
- package/pipeline/scripts/triage-memory.mjs +64 -37
- package/pipeline/scripts/validate-planning.mjs +68 -4
- package/pipeline/scripts/validate-reviewer.mjs +20 -0
- package/pipeline/scripts/validate-triage.mjs +107 -2
- package/pipeline/scripts/work-items.mjs +191 -22
- package/pipeline/skills/.skill-manifest.json +9 -9
- package/pipeline/skills/.skills-index.json +1 -1
- package/pipeline/skills/shared/README.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +5 -2
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +4 -4
- package/pipeline/skills/shared/core/multi-agent-office-on/SKILL.md +3 -4
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +4 -1
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +21 -0
- package/pipeline/skills/shared/core/multi-agent-scenario-audit/SKILL.md +4 -2
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +4 -4
- package/pipeline/skills/shared/core/multi-agent-test-gen/SKILL.md +26 -3
- package/pipeline/skills/skills-index.md +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/office-settings-request.schema.json",
|
|
4
|
+
"title": "Office settings request",
|
|
5
|
+
"description": "The body of POST /v1/settings. Step 1 names the setting and its new value; step 2 sends only the confirmToken step 1 returned.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["contractVersion"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"contractVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$",
|
|
13
|
+
"x-sensitivity": "none"
|
|
14
|
+
},
|
|
15
|
+
"setting": {
|
|
16
|
+
"enum": ["language", "model", "route"],
|
|
17
|
+
"x-sensitivity": "none"
|
|
18
|
+
},
|
|
19
|
+
"value": {
|
|
20
|
+
"enum": ["en", "tr", "on", "off"],
|
|
21
|
+
"x-sensitivity": "none"
|
|
22
|
+
},
|
|
23
|
+
"confirmToken": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"pattern": "^[A-Za-z0-9_-]{16,128}$",
|
|
26
|
+
"x-sensitivity": "none",
|
|
27
|
+
"description": "The confirmToken the preview returned. Single use, bound to the route."
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/office-settings.schema.json",
|
|
4
|
+
"title": "Office settings",
|
|
5
|
+
"description": "What GET /v1/settings returns and POST /v1/settings returns after a change: the output language, the fable rung and model routing. A preview (the first POST) adds the change it would make and a confirmToken.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["contractVersion", "language", "model", "route"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"contractVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$",
|
|
13
|
+
"x-sensitivity": "none"
|
|
14
|
+
},
|
|
15
|
+
"language": {
|
|
16
|
+
"enum": ["en", "tr"],
|
|
17
|
+
"x-sensitivity": "none"
|
|
18
|
+
},
|
|
19
|
+
"model": {
|
|
20
|
+
"enum": ["on", "off"],
|
|
21
|
+
"x-sensitivity": "none",
|
|
22
|
+
"description": "Whether the fable rung is in play."
|
|
23
|
+
},
|
|
24
|
+
"route": {
|
|
25
|
+
"enum": ["on", "off"],
|
|
26
|
+
"x-sensitivity": "none",
|
|
27
|
+
"description": "Whether model routing is on."
|
|
28
|
+
},
|
|
29
|
+
"change": {
|
|
30
|
+
"type": "object",
|
|
31
|
+
"additionalProperties": false,
|
|
32
|
+
"required": ["setting", "from", "to"],
|
|
33
|
+
"x-sensitivity": "none",
|
|
34
|
+
"properties": {
|
|
35
|
+
"setting": {
|
|
36
|
+
"enum": ["language", "model", "route"]
|
|
37
|
+
},
|
|
38
|
+
"from": {
|
|
39
|
+
"type": "string"
|
|
40
|
+
},
|
|
41
|
+
"to": {
|
|
42
|
+
"type": "string"
|
|
43
|
+
},
|
|
44
|
+
"freeChain": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"additionalProperties": false,
|
|
47
|
+
"required": ["enabled", "allowTraining"],
|
|
48
|
+
"description": "Present when turning routing on brings back a saved free provider chain: the confirmation names it.",
|
|
49
|
+
"properties": {
|
|
50
|
+
"enabled": { "const": true },
|
|
51
|
+
"allowTraining": { "type": "boolean" }
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"confirmToken": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"pattern": "^[A-Za-z0-9_-]{16,128}$",
|
|
59
|
+
"x-sensitivity": "none"
|
|
60
|
+
},
|
|
61
|
+
"expiresAt": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"format": "date-time",
|
|
64
|
+
"x-sensitivity": "none"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/phases.json",
|
|
4
|
-
"description": "The phase contract, in one place: the phase ids and names, which phases each mode runs, the per-phase token ceilings and the phase numbers other code compares against. gen-mode-dispatch.mjs, render-work-summary.sh, the autopilot runner, runs-index.mjs, usage-report.mjs and gen-facts.mjs read it; smoke-phase-contract.sh holds every copy that cannot read it (the phase docs and prose counts, agent-state.schema.json, token-budget.json, phase-tracker.sh, phase-banner.sh, gc-abandoned.sh) to it. Adding or merging a phase means editing here. A mode with `commits: false` delivers no commit in its Phase 4 (analysis publishes a document), so lib/run-completion.mjs asks it for no commit evidence before `status: complete`; any other mode commits. Ceilings are measured against the current phase documents, never summed from earlier ones: smoke-token-budget.sh fails a ceiling more than 25% above the measurement.",
|
|
4
|
+
"description": "The phase contract, in one place: the phase ids and names, which phases each mode runs, the per-phase token ceilings and the phase numbers other code compares against. gen-mode-dispatch.mjs, render-work-summary.sh, the autopilot runner, runs-index.mjs, usage-report.mjs and gen-facts.mjs read it; smoke-phase-contract.sh holds every copy that cannot read it (the phase docs and prose counts, agent-state.schema.json, token-budget.json, phase-tracker.sh, phase-banner.sh, gc-abandoned.sh) to it. Adding or merging a phase means editing here. A mode with `names` runs the same six slots under its own step names (analysis gathers evidence and synthesises where development plans and builds), and its tracker and task widget show those names. A mode with `commits: false` delivers no commit in its Phase 4 (analysis publishes a document), so lib/run-completion.mjs asks it for no commit evidence before `status: complete`; any other mode commits. Ceilings are measured against the current phase documents, never summed from earlier ones: smoke-token-budget.sh fails a ceiling more than 25% above the measurement.",
|
|
5
5
|
"contractVersion": "2.0.0",
|
|
6
6
|
"phaseSchema": 2,
|
|
7
7
|
"phaseSchemaNote": "The phase vocabulary generation. metrics.jsonl is append-only and v19.0.0 renumbered the phases, so every line written from v19.0.0 on carries this number and a line without the field is generation 1. Aggregators pick their name table from it; without it phase 3 means Dev in old rows and Review in new ones and no reader can tell them apart.",
|
|
@@ -42,25 +42,25 @@
|
|
|
42
42
|
"id": 3,
|
|
43
43
|
"name": "Review",
|
|
44
44
|
"doc": "phase-3-review.md",
|
|
45
|
-
"maxTokens":
|
|
45
|
+
"maxTokens": 17260,
|
|
46
46
|
"was": [4, 5]
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"id": 4,
|
|
50
50
|
"name": "Commit",
|
|
51
51
|
"doc": "phase-4-commit.md",
|
|
52
|
-
"maxTokens":
|
|
52
|
+
"maxTokens": 6650,
|
|
53
53
|
"was": [6]
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
"id": 5,
|
|
57
57
|
"name": "Report",
|
|
58
58
|
"doc": "phase-5-report.md",
|
|
59
|
-
"maxTokens":
|
|
59
|
+
"maxTokens": 5710,
|
|
60
60
|
"was": [7]
|
|
61
61
|
}
|
|
62
62
|
],
|
|
63
|
-
"totalMaxTokens":
|
|
63
|
+
"totalMaxTokens": 63710,
|
|
64
64
|
"modes": {
|
|
65
65
|
"full": {
|
|
66
66
|
"phases": [0, 1, 2, 3, 4, 5],
|
|
@@ -71,7 +71,15 @@
|
|
|
71
71
|
"autopilot": true
|
|
72
72
|
},
|
|
73
73
|
"analysis": {
|
|
74
|
-
"phases": [0, 1, 3, 4, 5],
|
|
74
|
+
"phases": [0, 1, 2, 3, 4, 5],
|
|
75
|
+
"names": {
|
|
76
|
+
"0": "Intake",
|
|
77
|
+
"1": "Evidence",
|
|
78
|
+
"2": "Synthesis",
|
|
79
|
+
"3": "Review",
|
|
80
|
+
"4": "Publish",
|
|
81
|
+
"5": "Report"
|
|
82
|
+
},
|
|
75
83
|
"autopilot": false,
|
|
76
84
|
"commits": false
|
|
77
85
|
}
|
|
@@ -7,16 +7,38 @@
|
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"required": ["contractVersion", "phaseSchema", "phases", "totalMaxTokens", "modes", "thresholds"],
|
|
9
9
|
"properties": {
|
|
10
|
-
"$schema": {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
"$schema": {
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"$id": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"description": {
|
|
17
|
+
"type": "string"
|
|
18
|
+
},
|
|
19
|
+
"contractVersion": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
|
|
22
|
+
},
|
|
23
|
+
"phaseSchema": {
|
|
24
|
+
"type": "integer",
|
|
25
|
+
"minimum": 1
|
|
26
|
+
},
|
|
27
|
+
"phaseSchemaNote": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
16
30
|
"legacyPhaseNames": {
|
|
17
31
|
"type": "object",
|
|
18
|
-
"properties": {
|
|
19
|
-
|
|
32
|
+
"properties": {
|
|
33
|
+
"note": {
|
|
34
|
+
"type": "string"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"patternProperties": {
|
|
38
|
+
"^[0-9]+$": {
|
|
39
|
+
"type": "string"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
20
42
|
"additionalProperties": false
|
|
21
43
|
},
|
|
22
44
|
"phases": {
|
|
@@ -27,15 +49,36 @@
|
|
|
27
49
|
"additionalProperties": false,
|
|
28
50
|
"required": ["id", "name", "doc", "maxTokens"],
|
|
29
51
|
"properties": {
|
|
30
|
-
"id": {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
52
|
+
"id": {
|
|
53
|
+
"type": "integer",
|
|
54
|
+
"minimum": 0
|
|
55
|
+
},
|
|
56
|
+
"name": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"minLength": 1
|
|
59
|
+
},
|
|
60
|
+
"doc": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"pattern": "^phase-[0-9]+-[a-z-]+\\.md$"
|
|
63
|
+
},
|
|
64
|
+
"maxTokens": {
|
|
65
|
+
"type": "integer",
|
|
66
|
+
"minimum": 1
|
|
67
|
+
},
|
|
68
|
+
"was": {
|
|
69
|
+
"type": "array",
|
|
70
|
+
"items": {
|
|
71
|
+
"type": "integer",
|
|
72
|
+
"minimum": 0
|
|
73
|
+
}
|
|
74
|
+
}
|
|
35
75
|
}
|
|
36
76
|
}
|
|
37
77
|
},
|
|
38
|
-
"totalMaxTokens": {
|
|
78
|
+
"totalMaxTokens": {
|
|
79
|
+
"type": "integer",
|
|
80
|
+
"minimum": 1
|
|
81
|
+
},
|
|
39
82
|
"modes": {
|
|
40
83
|
"type": "object",
|
|
41
84
|
"minProperties": 1,
|
|
@@ -47,13 +90,29 @@
|
|
|
47
90
|
"phases": {
|
|
48
91
|
"type": "array",
|
|
49
92
|
"minItems": 1,
|
|
50
|
-
"items": {
|
|
93
|
+
"items": {
|
|
94
|
+
"type": "integer",
|
|
95
|
+
"minimum": 0
|
|
96
|
+
},
|
|
51
97
|
"uniqueItems": true
|
|
52
98
|
},
|
|
53
|
-
"autopilot": {
|
|
99
|
+
"autopilot": {
|
|
100
|
+
"type": "boolean"
|
|
101
|
+
},
|
|
54
102
|
"commits": {
|
|
55
103
|
"type": "boolean",
|
|
56
104
|
"description": "false when the mode delivers no commit in its Phase 4; lib/run-completion.mjs then asks for no commit evidence before status complete. Absent means the mode commits."
|
|
105
|
+
},
|
|
106
|
+
"names": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"additionalProperties": false,
|
|
109
|
+
"patternProperties": {
|
|
110
|
+
"^[0-9]$": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"pattern": "^[A-Z][A-Za-z]{1,20}$"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"description": "The mode's own phase names by id, where they differ from the canonical ones (the analysis pipeline's Intake .. Report). Absent means the canonical names."
|
|
57
116
|
}
|
|
58
117
|
}
|
|
59
118
|
}
|
|
@@ -63,9 +122,17 @@
|
|
|
63
122
|
"additionalProperties": false,
|
|
64
123
|
"required": ["waitingFromPhase", "mcpAllowedThroughPhase"],
|
|
65
124
|
"properties": {
|
|
66
|
-
"waitingFromPhase": {
|
|
67
|
-
|
|
68
|
-
|
|
125
|
+
"waitingFromPhase": {
|
|
126
|
+
"type": "integer",
|
|
127
|
+
"minimum": 0
|
|
128
|
+
},
|
|
129
|
+
"mcpAllowedThroughPhase": {
|
|
130
|
+
"type": "integer",
|
|
131
|
+
"minimum": 0
|
|
132
|
+
},
|
|
133
|
+
"note": {
|
|
134
|
+
"type": "string"
|
|
135
|
+
}
|
|
69
136
|
}
|
|
70
137
|
}
|
|
71
138
|
}
|
|
@@ -47,8 +47,15 @@
|
|
|
47
47
|
"properties": {
|
|
48
48
|
"id": { "type": "string", "pattern": "^OBJ-[0-9]{2,3}$" },
|
|
49
49
|
"lens": {
|
|
50
|
-
"enum": [
|
|
51
|
-
|
|
50
|
+
"enum": [
|
|
51
|
+
"scope",
|
|
52
|
+
"feasibility",
|
|
53
|
+
"security",
|
|
54
|
+
"alternative",
|
|
55
|
+
"unstated-input",
|
|
56
|
+
"underspecified"
|
|
57
|
+
],
|
|
58
|
+
"description": "scope: the plan does more or less than the analysis asks. feasibility: a step cannot work as planned. security: a step opens a hole. alternative: a cheaper plan reaches the same result. unstated-input: an input the spec implies (empty, boundary, expired, concurrent) that no task's tests exercise. underspecified: a decision the plan leaves to the task's implementer that the analysis or the user should make."
|
|
52
59
|
},
|
|
53
60
|
"claim": {
|
|
54
61
|
"type": "string",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/planning-output.schema.json",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.1.0",
|
|
5
5
|
"title": "Multi-Agent Pipeline - Phase 1 planning output",
|
|
6
|
-
"description": "Contract for Phase
|
|
6
|
+
"description": "Contract for the Phase 1 task decomposition. Consumed by the Phase 2 TDD cycles - each task becomes one red→green→refactor iteration. 1.1.0 adds the plan-level reviewFocus[] and globalConstraints[].",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"additionalProperties": false,
|
|
9
9
|
"required": ["tasks", "approved"],
|
|
@@ -100,6 +100,29 @@
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
+
"reviewFocus": {
|
|
104
|
+
"type": "array",
|
|
105
|
+
"maxItems": 5,
|
|
106
|
+
"description": "Inputs or failure modes the spec implies but no task's tests exercise, each given to the task that owns the code so a test covers it. validate-planning.mjs fails an owner id that is not a task.",
|
|
107
|
+
"items": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"additionalProperties": false,
|
|
110
|
+
"required": ["input", "ownerTaskId"],
|
|
111
|
+
"properties": {
|
|
112
|
+
"input": {
|
|
113
|
+
"type": "string",
|
|
114
|
+
"minLength": 4,
|
|
115
|
+
"description": "The input or failure mode, concretely (an empty list, a token that expired mid-request)."
|
|
116
|
+
},
|
|
117
|
+
"ownerTaskId": { "type": "string", "pattern": "^T[0-9]+$" }
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"globalConstraints": {
|
|
122
|
+
"type": "array",
|
|
123
|
+
"items": { "type": "string", "minLength": 1 },
|
|
124
|
+
"description": "Project-wide values every task must respect, copied verbatim (a minimum OS version, a naming rule, a module boundary), because each task's implementer sees only its own task."
|
|
125
|
+
},
|
|
103
126
|
"approved": {
|
|
104
127
|
"type": "boolean",
|
|
105
128
|
"description": "User approved the plan (true) or changes requested (false → loop with feedback)."
|
|
@@ -906,7 +906,7 @@
|
|
|
906
906
|
"type": "string",
|
|
907
907
|
"enum": ["en", "tr"],
|
|
908
908
|
"default": "en",
|
|
909
|
-
"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).
|
|
909
|
+
"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). PR, Jira, issue and wiki bodies follow it too; commits, branch names, agent prompts and the CLI host's own picker and error UI stay English. Set via `/multi-agent:language output <en|tr>` or answered on first run by `/multi-agent:setup`."
|
|
910
910
|
},
|
|
911
911
|
"progressVerbosity": {
|
|
912
912
|
"type": "string",
|
|
@@ -1891,6 +1891,29 @@
|
|
|
1891
1891
|
"enabled": false
|
|
1892
1892
|
}
|
|
1893
1893
|
},
|
|
1894
|
+
"memory": {
|
|
1895
|
+
"type": "object",
|
|
1896
|
+
"additionalProperties": false,
|
|
1897
|
+
"description": "Limits on the per-repo memory stores under ~/.claude/memory/multi-agent/<repo-slug>/.",
|
|
1898
|
+
"properties": {
|
|
1899
|
+
"excludeProjects": {
|
|
1900
|
+
"type": "array",
|
|
1901
|
+
"items": { "type": "string", "minLength": 1 },
|
|
1902
|
+
"description": "Repo slugs whose learnings ledger, triage corpus and debt list are never written. Reads still work on what is already there."
|
|
1903
|
+
}
|
|
1904
|
+
}
|
|
1905
|
+
},
|
|
1906
|
+
"fileContext": {
|
|
1907
|
+
"type": "object",
|
|
1908
|
+
"additionalProperties": false,
|
|
1909
|
+
"description": "After a Read, hand the model what the repo's memory says about that file: ledger facts whose scope covers it, its latest review findings and its open known limits (debt-ledger.mjs), at most six lines, once per file per session, inside an <untrusted-data> block and after the secret scan. The hook is pipeline/scripts/file-context.sh, PostToolUse on Read (Claude Code). It never blocks.",
|
|
1910
|
+
"properties": {
|
|
1911
|
+
"enabled": {
|
|
1912
|
+
"type": "boolean",
|
|
1913
|
+
"description": "Absent = only inside a pipeline run bound to the session. true = in every session. false = never."
|
|
1914
|
+
}
|
|
1915
|
+
}
|
|
1916
|
+
},
|
|
1894
1917
|
"stopGuard": {
|
|
1895
1918
|
"type": "object",
|
|
1896
1919
|
"additionalProperties": false,
|
|
@@ -22,6 +22,11 @@
|
|
|
22
22
|
"source": {
|
|
23
23
|
"enum": ["github", "bitbucket"]
|
|
24
24
|
},
|
|
25
|
+
"account": {
|
|
26
|
+
"type": ["string", "null"],
|
|
27
|
+
"x-sensitivity": "local",
|
|
28
|
+
"description": "The GitHub login the pull request was listed under, when gh is logged in to more than one account (personal and corporate). Null for Bitbucket."
|
|
29
|
+
},
|
|
25
30
|
"repo": {
|
|
26
31
|
"type": "string"
|
|
27
32
|
},
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/prune-logs-request.schema.json",
|
|
4
|
+
"title": "Prune logs request",
|
|
5
|
+
"description": "The body of POST /v1/prune-logs. Step 1 names the age in days (7, 30 or 90); step 2 sends only the confirmToken step 1 returned.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["contractVersion"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"contractVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$",
|
|
13
|
+
"x-sensitivity": "none"
|
|
14
|
+
},
|
|
15
|
+
"olderThanDays": {
|
|
16
|
+
"enum": [7, 30, 90],
|
|
17
|
+
"x-sensitivity": "none"
|
|
18
|
+
},
|
|
19
|
+
"confirmToken": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"pattern": "^[A-Za-z0-9_-]{16,128}$",
|
|
22
|
+
"x-sensitivity": "none",
|
|
23
|
+
"description": "The confirmToken the preview returned. Single use, bound to the route."
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/prune-logs.schema.json",
|
|
4
|
+
"title": "Prune old run logs",
|
|
5
|
+
"description": "What POST /v1/prune-logs returns. The preview (body {olderThanDays}) is prune-logs.sh's dry run for that age with a confirm token; the confirmation (body {confirmToken}) runs it again with the same age and --yes. The audit trail, the metrics corpus and task counters are never removed, and a folder written in the last minutes is spared.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["contractVersion", "olderThanDays", "applied", "count", "freedMb", "folders"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"contractVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$",
|
|
13
|
+
"x-sensitivity": "none"
|
|
14
|
+
},
|
|
15
|
+
"olderThanDays": {
|
|
16
|
+
"enum": [7, 30, 90],
|
|
17
|
+
"x-sensitivity": "none"
|
|
18
|
+
},
|
|
19
|
+
"applied": {
|
|
20
|
+
"type": "boolean",
|
|
21
|
+
"x-sensitivity": "none"
|
|
22
|
+
},
|
|
23
|
+
"count": {
|
|
24
|
+
"type": "integer",
|
|
25
|
+
"minimum": 0,
|
|
26
|
+
"x-sensitivity": "none"
|
|
27
|
+
},
|
|
28
|
+
"freedMb": {
|
|
29
|
+
"type": "number",
|
|
30
|
+
"minimum": 0,
|
|
31
|
+
"x-sensitivity": "none"
|
|
32
|
+
},
|
|
33
|
+
"folders": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"maxItems": 200,
|
|
36
|
+
"items": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
},
|
|
39
|
+
"x-sensitivity": "local",
|
|
40
|
+
"description": "project/task folders, at most 200 listed."
|
|
41
|
+
},
|
|
42
|
+
"confirmToken": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"x-sensitivity": "local"
|
|
45
|
+
},
|
|
46
|
+
"expiresAt": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"format": "date-time",
|
|
49
|
+
"x-sensitivity": "none"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/repo-change.schema.json",
|
|
4
|
+
"title": "Repository registration change",
|
|
5
|
+
"description": "What POST /v1/repos and DELETE /v1/repos/{id} return. Without a token: preview (the repository's name) with confirmToken and expiresAt. With it: registered or removed, by name. Paths never leave the server here.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["contractVersion"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"contractVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$",
|
|
13
|
+
"x-sensitivity": "none"
|
|
14
|
+
},
|
|
15
|
+
"preview": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"additionalProperties": false,
|
|
18
|
+
"required": ["name"],
|
|
19
|
+
"properties": {
|
|
20
|
+
"name": {
|
|
21
|
+
"type": "string"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"confirmToken": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"pattern": "^[A-Za-z0-9_-]{16,128}$"
|
|
28
|
+
},
|
|
29
|
+
"expiresAt": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"format": "date-time"
|
|
32
|
+
},
|
|
33
|
+
"registered": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"additionalProperties": false,
|
|
36
|
+
"required": ["name"],
|
|
37
|
+
"properties": {
|
|
38
|
+
"name": {
|
|
39
|
+
"type": "string"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"removed": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"additionalProperties": false,
|
|
46
|
+
"required": ["name"],
|
|
47
|
+
"properties": {
|
|
48
|
+
"name": {
|
|
49
|
+
"type": "string"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/repo-request.schema.json",
|
|
4
|
+
"title": "Repository registration request",
|
|
5
|
+
"description": "The body of POST /v1/repos. The first request names suggestion (an id from GET /v1/repos?all=1) or path (an absolute path to a git checkout); the second sends only confirmToken.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["contractVersion"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"contractVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^1\\.[0-9]+\\.[0-9]+$",
|
|
13
|
+
"x-sensitivity": "none"
|
|
14
|
+
},
|
|
15
|
+
"suggestion": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"pattern": "^[0-9a-f]{16}$"
|
|
18
|
+
},
|
|
19
|
+
"path": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"maxLength": 4096,
|
|
22
|
+
"x-sensitivity": "local"
|
|
23
|
+
},
|
|
24
|
+
"confirmToken": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"pattern": "^[A-Za-z0-9_-]{16,128}$"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/repos.schema.json",
|
|
4
4
|
"title": "Launch repositories",
|
|
5
|
-
"description": "What GET /v1/repos returns and `launch-request.mjs repos` prints: the repositories POST /v1/launch?repo= accepts, by real path. source autopilot is a configured autopilot repo (config.json repos[], named by nameWithOwner); registered is one added with `launch-request.mjs register-repo` (launch-repos.json, named by its directory). path is dropped under redact.",
|
|
5
|
+
"description": "What GET /v1/repos returns and `launch-request.mjs repos` prints: the repositories POST /v1/launch?repo= accepts, by real path. source autopilot is a configured autopilot repo (config.json repos[], named by nameWithOwner); registered is one added with `launch-request.mjs register-repo` (launch-repos.json, named by its directory). path is dropped under redact. With --all (?all=1): suggested lists checkouts earlier runs worked in that launch does not accept yet, and missing lists registered entries that are no longer a directory; each carries an id that POST /v1/repos and DELETE /v1/repos/{id} take.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"required": ["contractVersion", "repos"],
|
|
@@ -34,6 +34,54 @@
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
},
|
|
38
|
+
"suggested": {
|
|
39
|
+
"type": "array",
|
|
40
|
+
"x-sensitivity": "none",
|
|
41
|
+
"items": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"additionalProperties": false,
|
|
44
|
+
"required": ["id", "name"],
|
|
45
|
+
"properties": {
|
|
46
|
+
"id": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"pattern": "^[0-9a-f]{16}$",
|
|
49
|
+
"x-sensitivity": "none"
|
|
50
|
+
},
|
|
51
|
+
"path": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"x-sensitivity": "local"
|
|
54
|
+
},
|
|
55
|
+
"name": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"x-sensitivity": "none"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"missing": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"x-sensitivity": "none",
|
|
65
|
+
"items": {
|
|
66
|
+
"type": "object",
|
|
67
|
+
"additionalProperties": false,
|
|
68
|
+
"required": ["id", "name"],
|
|
69
|
+
"properties": {
|
|
70
|
+
"id": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"pattern": "^[0-9a-f]{16}$",
|
|
73
|
+
"x-sensitivity": "none"
|
|
74
|
+
},
|
|
75
|
+
"path": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"x-sensitivity": "local"
|
|
78
|
+
},
|
|
79
|
+
"name": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"x-sensitivity": "none"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
37
85
|
}
|
|
38
86
|
}
|
|
39
87
|
}
|