@llblab/pi-actors 0.12.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/AGENTS.md +72 -0
- package/BACKLOG.md +38 -0
- package/CHANGELOG.md +179 -0
- package/README.md +338 -0
- package/docs/README.md +21 -0
- package/docs/actor-messages.md +149 -0
- package/docs/async-runs.md +335 -0
- package/docs/command-templates.md +424 -0
- package/docs/component-recipes.md +148 -0
- package/docs/recipe-library.md +176 -0
- package/docs/task-first-recipes.md +233 -0
- package/docs/template-recipes.md +285 -0
- package/docs/tool-registry.md +142 -0
- package/index.ts +198 -0
- package/lib/actor-messages.ts +120 -0
- package/lib/async-runs.ts +688 -0
- package/lib/command-templates.ts +795 -0
- package/lib/config.ts +266 -0
- package/lib/execution.ts +720 -0
- package/lib/file-state.ts +24 -0
- package/lib/identity.ts +29 -0
- package/lib/observability.ts +525 -0
- package/lib/output.ts +123 -0
- package/lib/paths.ts +35 -0
- package/lib/prompts.ts +75 -0
- package/lib/recipe-references.ts +586 -0
- package/lib/registry.ts +302 -0
- package/lib/runtime.ts +101 -0
- package/lib/schema.ts +402 -0
- package/lib/temp.ts +44 -0
- package/lib/tools.ts +651 -0
- package/package.json +52 -0
- package/recipes/music-player.json +25 -0
- package/recipes/pipeline-architect-coordinator.json +88 -0
- package/recipes/pipeline-artifact-report.json +52 -0
- package/recipes/pipeline-artifact-write.json +66 -0
- package/recipes/pipeline-async-run-ops.json +67 -0
- package/recipes/pipeline-checkpoint-continuation.json +57 -0
- package/recipes/pipeline-development-tasking.json +73 -0
- package/recipes/pipeline-docs-maintenance.json +72 -0
- package/recipes/pipeline-media-library.json +51 -0
- package/recipes/pipeline-quorum-review.json +72 -0
- package/recipes/pipeline-release-readiness.json +83 -0
- package/recipes/pipeline-repo-health.json +81 -0
- package/recipes/pipeline-research-synthesis.json +87 -0
- package/recipes/pipeline-review-readiness.json +49 -0
- package/recipes/subagent-artifact.json +26 -0
- package/recipes/subagent-checkpoint.json +27 -0
- package/recipes/subagent-conflict-report.json +25 -0
- package/recipes/subagent-contradiction-map.json +26 -0
- package/recipes/subagent-critic.json +28 -0
- package/recipes/subagent-evidence-map.json +26 -0
- package/recipes/subagent-followup.json +27 -0
- package/recipes/subagent-judge.json +26 -0
- package/recipes/subagent-merge.json +26 -0
- package/recipes/subagent-message.json +29 -0
- package/recipes/subagent-normalize.json +24 -0
- package/recipes/subagent-plan.json +26 -0
- package/recipes/subagent-prompt.json +22 -0
- package/recipes/subagent-quorum.json +41 -0
- package/recipes/subagent-review-coordinator.json +107 -0
- package/recipes/subagent-review.json +30 -0
- package/recipes/subagent-task-card.json +28 -0
- package/recipes/subagent-tools.json +17 -0
- package/recipes/subagent-verify.json +27 -0
- package/recipes/subagents-prompts.json +32 -0
- package/recipes/utility-actor-message.json +24 -0
- package/recipes/utility-artifact-manifest.json +17 -0
- package/recipes/utility-artifact-write.json +17 -0
- package/recipes/utility-changelog-head.json +12 -0
- package/recipes/utility-changelog-section.json +14 -0
- package/recipes/utility-git-log.json +12 -0
- package/recipes/utility-git-status.json +10 -0
- package/recipes/utility-jsonl-tail.json +11 -0
- package/recipes/utility-markdown-index.json +15 -0
- package/recipes/utility-package-summary.json +12 -0
- package/recipes/utility-playlist-build.json +18 -0
- package/recipes/utility-playlist-scan.json +12 -0
- package/recipes/utility-run-state-files.json +14 -0
- package/recipes/utility-run-summary.json +12 -0
- package/recipes/utility-validate-recipe.json +14 -0
- package/recipes/utility-validation-wrapper.json +14 -0
- package/scripts/async-runner.mjs +170 -0
- package/scripts/music-player.mjs +637 -0
- package/scripts/recipe-utils.mjs +273 -0
- package/scripts/validate-recipe.mjs +89 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "music-player",
|
|
3
|
+
"async": true,
|
|
4
|
+
"args": [
|
|
5
|
+
"repo:path",
|
|
6
|
+
"command:enum(play,pause,resume,toggle,next,previous,stop,status)",
|
|
7
|
+
"source:string",
|
|
8
|
+
"loop:bool",
|
|
9
|
+
"volume:int",
|
|
10
|
+
"player:enum(auto,mpv,ffplay,cvlc,play)",
|
|
11
|
+
"state_dir:path"
|
|
12
|
+
],
|
|
13
|
+
"defaults": {
|
|
14
|
+
"repo": "~/.pi/agent/extensions/pi-actors",
|
|
15
|
+
"command": "play",
|
|
16
|
+
"loop": "true",
|
|
17
|
+
"volume": "70",
|
|
18
|
+
"player": "auto"
|
|
19
|
+
},
|
|
20
|
+
"mailbox": {
|
|
21
|
+
"accepts": ["player.play", "player.pause", "player.resume", "player.toggle", "player.next", "player.previous", "player.stop", "player.status"],
|
|
22
|
+
"emits": ["player.track"]
|
|
23
|
+
},
|
|
24
|
+
"template": "{repo}/scripts/music-player.mjs {command} {source} {loop} {volume} {player} {state_dir}"
|
|
25
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pipeline-architect-coordinator",
|
|
3
|
+
"async": true,
|
|
4
|
+
"imports": {
|
|
5
|
+
"reviewer": "subagent-review.json",
|
|
6
|
+
"critic": "subagent-critic.json",
|
|
7
|
+
"verifier": "subagent-verify.json",
|
|
8
|
+
"merger": "subagent-merge.json",
|
|
9
|
+
"normalizer": "subagent-normalize.json"
|
|
10
|
+
},
|
|
11
|
+
"args": [
|
|
12
|
+
"problem:string",
|
|
13
|
+
"lenses:array",
|
|
14
|
+
"constraints:string",
|
|
15
|
+
"model:string",
|
|
16
|
+
"tools:string"
|
|
17
|
+
],
|
|
18
|
+
"defaults": {
|
|
19
|
+
"lenses": [
|
|
20
|
+
"architecture",
|
|
21
|
+
"implementation pragmatism",
|
|
22
|
+
"operator UX",
|
|
23
|
+
"failure modes"
|
|
24
|
+
],
|
|
25
|
+
"constraints": "Prefer small composable pieces, explicit contracts, and no broad workflow DSL.",
|
|
26
|
+
"model": "openai-codex/gpt-5.5",
|
|
27
|
+
"tools": ""
|
|
28
|
+
},
|
|
29
|
+
"mailbox": {
|
|
30
|
+
"accepts": ["control.stop"],
|
|
31
|
+
"emits": ["pipeline.completed", "command.done", "run.done", "run.failed"]
|
|
32
|
+
},
|
|
33
|
+
"template": [
|
|
34
|
+
{
|
|
35
|
+
"parallel": true,
|
|
36
|
+
"repeat": "{lenses.length}",
|
|
37
|
+
"failure": "branch",
|
|
38
|
+
"template": {
|
|
39
|
+
"name": "reviewer",
|
|
40
|
+
"values": {
|
|
41
|
+
"scope": "{problem}",
|
|
42
|
+
"lens": "{lenses[index]}",
|
|
43
|
+
"instructions": "Propose one architecture direction and one smallest next slice within constraints: {constraints}",
|
|
44
|
+
"model": "{model}",
|
|
45
|
+
"thinking": "medium",
|
|
46
|
+
"tools": "{tools}"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "critic",
|
|
52
|
+
"values": {
|
|
53
|
+
"target": "Use proposed directions from stdin for problem: {problem}",
|
|
54
|
+
"constraints": "{constraints}",
|
|
55
|
+
"model": "{model}",
|
|
56
|
+
"tools": "{tools}"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "verifier",
|
|
61
|
+
"values": {
|
|
62
|
+
"claim": "The proposed architecture can be advanced by a small validated next slice.",
|
|
63
|
+
"evidence": "Use proposed directions and critique from stdin.",
|
|
64
|
+
"model": "{model}",
|
|
65
|
+
"tools": "{tools}"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "merger",
|
|
70
|
+
"values": {
|
|
71
|
+
"inputs": "Use brainstorm, critique, and verification outputs from stdin.",
|
|
72
|
+
"mode": "risk-first",
|
|
73
|
+
"risk_policy": "Prefer a feasible smallest next slice over ambitious completeness.",
|
|
74
|
+
"model": "{model}",
|
|
75
|
+
"tools": "{tools}"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "normalizer",
|
|
80
|
+
"values": {
|
|
81
|
+
"input": "Use architecture synthesis from stdin.",
|
|
82
|
+
"format": "Markdown sections: Direction, Rejected Alternatives, Risks, Component Contracts, Next Slice, Validation Gates.",
|
|
83
|
+
"model": "{model}",
|
|
84
|
+
"tools": "{tools}"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pipeline-artifact-report",
|
|
3
|
+
"async": true,
|
|
4
|
+
"imports": {
|
|
5
|
+
"normalizer": "subagent-normalize.json",
|
|
6
|
+
"artifact": "subagent-artifact.json",
|
|
7
|
+
"message": "utility-actor-message.json"
|
|
8
|
+
},
|
|
9
|
+
"args": [
|
|
10
|
+
"input:string",
|
|
11
|
+
"artifact_path:path",
|
|
12
|
+
"artifact_format:string",
|
|
13
|
+
"model:string",
|
|
14
|
+
"tools:string"
|
|
15
|
+
],
|
|
16
|
+
"defaults": {
|
|
17
|
+
"artifact_format": "Markdown sections: Summary, Findings, Evidence, Risks, Next Actions.",
|
|
18
|
+
"model": "openai-codex/gpt-5.5",
|
|
19
|
+
"tools": ""
|
|
20
|
+
},
|
|
21
|
+
"mailbox": {
|
|
22
|
+
"emits": ["artifact.prepared", "artifact.blocked"]
|
|
23
|
+
},
|
|
24
|
+
"template": [
|
|
25
|
+
{
|
|
26
|
+
"name": "normalizer",
|
|
27
|
+
"values": {
|
|
28
|
+
"input": "{input}",
|
|
29
|
+
"format": "{artifact_format}",
|
|
30
|
+
"model": "{model}",
|
|
31
|
+
"tools": "{tools}"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "artifact",
|
|
36
|
+
"values": {
|
|
37
|
+
"input": "Use normalized report from stdin.",
|
|
38
|
+
"artifact_path": "{artifact_path}",
|
|
39
|
+
"artifact_format": "{artifact_format}",
|
|
40
|
+
"model": "{model}",
|
|
41
|
+
"tools": "{tools}"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "message",
|
|
46
|
+
"values": {
|
|
47
|
+
"type": "artifact.prepared",
|
|
48
|
+
"summary": "Artifact prepared for path {artifact_path}."
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pipeline-artifact-write",
|
|
3
|
+
"async": true,
|
|
4
|
+
"imports": {
|
|
5
|
+
"normalizer": "subagent-normalize.json",
|
|
6
|
+
"artifact": "subagent-artifact.json",
|
|
7
|
+
"writer": "utility-artifact-write.json",
|
|
8
|
+
"message": "utility-actor-message.json"
|
|
9
|
+
},
|
|
10
|
+
"args": [
|
|
11
|
+
"input:string",
|
|
12
|
+
"artifact_path:path",
|
|
13
|
+
"artifact_format:string",
|
|
14
|
+
"write_mode:enum(create,overwrite,append)",
|
|
15
|
+
"model:string",
|
|
16
|
+
"tools:string"
|
|
17
|
+
],
|
|
18
|
+
"defaults": {
|
|
19
|
+
"artifact_format": "Markdown sections: Summary, Findings, Evidence, Risks, Next Actions.",
|
|
20
|
+
"write_mode": "create",
|
|
21
|
+
"model": "openai-codex/gpt-5.5",
|
|
22
|
+
"tools": ""
|
|
23
|
+
},
|
|
24
|
+
"mailbox": {
|
|
25
|
+
"emits": ["artifact.written", "artifact.blocked"]
|
|
26
|
+
},
|
|
27
|
+
"artifacts": {
|
|
28
|
+
"artifact": "{artifact_path}"
|
|
29
|
+
},
|
|
30
|
+
"template": [
|
|
31
|
+
{
|
|
32
|
+
"name": "normalizer",
|
|
33
|
+
"values": {
|
|
34
|
+
"input": "{input}",
|
|
35
|
+
"format": "{artifact_format}",
|
|
36
|
+
"model": "{model}",
|
|
37
|
+
"tools": "{tools}"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "artifact",
|
|
42
|
+
"values": {
|
|
43
|
+
"input": "Use normalized report from stdin.",
|
|
44
|
+
"artifact_path": "{artifact_path}",
|
|
45
|
+
"artifact_format": "{artifact_format}",
|
|
46
|
+
"write_policy": "The caller selected deterministic write mode {write_mode}; produce only the artifact content that should be written, with no surrounding commentary outside the artifact body.",
|
|
47
|
+
"model": "{model}",
|
|
48
|
+
"tools": "{tools}"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "writer",
|
|
53
|
+
"values": {
|
|
54
|
+
"artifact_path": "{artifact_path}",
|
|
55
|
+
"mode": "{write_mode}"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "message",
|
|
60
|
+
"values": {
|
|
61
|
+
"type": "artifact.written",
|
|
62
|
+
"summary": "Artifact written to path {artifact_path} using mode {write_mode}."
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pipeline-async-run-ops",
|
|
3
|
+
"async": true,
|
|
4
|
+
"imports": {
|
|
5
|
+
"summary": "utility-run-summary.json",
|
|
6
|
+
"events": "utility-jsonl-tail.json",
|
|
7
|
+
"normalizer": "subagent-normalize.json",
|
|
8
|
+
"artifact": "pipeline-artifact-report.json"
|
|
9
|
+
},
|
|
10
|
+
"args": [
|
|
11
|
+
"state_root:path",
|
|
12
|
+
"event_file:path",
|
|
13
|
+
"lines:int",
|
|
14
|
+
"artifact_path:path",
|
|
15
|
+
"model:string",
|
|
16
|
+
"tools:string"
|
|
17
|
+
],
|
|
18
|
+
"defaults": {
|
|
19
|
+
"state_root": "~/.pi/agent/tmp/pi-actors/runs",
|
|
20
|
+
"event_file": "~/.pi/agent/tmp/pi-actors/runs/music/outbox.jsonl",
|
|
21
|
+
"lines": "80",
|
|
22
|
+
"artifact_path": "./async-run-ops.md",
|
|
23
|
+
"model": "openai-codex/gpt-5.5",
|
|
24
|
+
"tools": ""
|
|
25
|
+
},
|
|
26
|
+
"mailbox": {
|
|
27
|
+
"accepts": ["control.stop"],
|
|
28
|
+
"emits": ["operations.completed", "artifact.prepared", "command.done", "run.done", "run.failed"]
|
|
29
|
+
},
|
|
30
|
+
"template": [
|
|
31
|
+
{
|
|
32
|
+
"name": "summary",
|
|
33
|
+
"values": {
|
|
34
|
+
"state_root": "{state_root}"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "events",
|
|
39
|
+
"failure": "continue",
|
|
40
|
+
"values": {
|
|
41
|
+
"file": "{event_file}",
|
|
42
|
+
"lines": "{lines}",
|
|
43
|
+
"mode": "raw"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "normalizer",
|
|
48
|
+
"values": {
|
|
49
|
+
"input": "Use async run summary and event tail from stdin. State root: {state_root}. Event file: {event_file}.",
|
|
50
|
+
"format": "Markdown sections: Active Runs, Terminal Runs, Recent Events, Stale/Risky Runs, Recommended Controls, Follow-up Needed.",
|
|
51
|
+
"model": "{model}",
|
|
52
|
+
"thinking": "off",
|
|
53
|
+
"tools": "{tools}"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "artifact",
|
|
58
|
+
"values": {
|
|
59
|
+
"input": "Use normalized async-run operations report from stdin.",
|
|
60
|
+
"artifact_path": "{artifact_path}",
|
|
61
|
+
"artifact_format": "Markdown sections: Status, Events, Risks, Recommended Actions.",
|
|
62
|
+
"model": "{model}",
|
|
63
|
+
"tools": "{tools}"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pipeline-checkpoint-continuation",
|
|
3
|
+
"async": true,
|
|
4
|
+
"imports": {
|
|
5
|
+
"checkpoint": "subagent-checkpoint.json",
|
|
6
|
+
"followup": "subagent-followup.json",
|
|
7
|
+
"normalizer": "subagent-normalize.json"
|
|
8
|
+
},
|
|
9
|
+
"args": [
|
|
10
|
+
"state:string",
|
|
11
|
+
"question:string",
|
|
12
|
+
"reply:string",
|
|
13
|
+
"mode:enum(same-context,degraded-new-branch)",
|
|
14
|
+
"model:string",
|
|
15
|
+
"tools:string"
|
|
16
|
+
],
|
|
17
|
+
"defaults": {
|
|
18
|
+
"reply": "No coordinator reply provided yet; produce a checkpoint artifact only.",
|
|
19
|
+
"mode": "degraded-new-branch",
|
|
20
|
+
"model": "openai-codex/gpt-5.5",
|
|
21
|
+
"tools": ""
|
|
22
|
+
},
|
|
23
|
+
"mailbox": {
|
|
24
|
+
"accepts": ["control.reply", "control.revise", "control.stop"],
|
|
25
|
+
"emits": ["checkpoint.needs_input", "checkpoint.continued", "command.done", "run.done", "run.failed"]
|
|
26
|
+
},
|
|
27
|
+
"template": [
|
|
28
|
+
{
|
|
29
|
+
"name": "checkpoint",
|
|
30
|
+
"values": {
|
|
31
|
+
"state": "{state}",
|
|
32
|
+
"question": "{question}",
|
|
33
|
+
"model": "{model}",
|
|
34
|
+
"tools": "{tools}"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "followup",
|
|
39
|
+
"values": {
|
|
40
|
+
"checkpoint": "Use checkpoint output from stdin.",
|
|
41
|
+
"reply": "{reply}",
|
|
42
|
+
"mode": "{mode}",
|
|
43
|
+
"model": "{model}",
|
|
44
|
+
"tools": "{tools}"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "normalizer",
|
|
49
|
+
"values": {
|
|
50
|
+
"input": "Use checkpoint and follow-up outputs from stdin.",
|
|
51
|
+
"format": "Markdown sections: Checkpoint, Coordinator Reply, Continuation Mode, Lost Context, Next Actions.",
|
|
52
|
+
"model": "{model}",
|
|
53
|
+
"tools": "{tools}"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pipeline-development-tasking",
|
|
3
|
+
"async": true,
|
|
4
|
+
"imports": {
|
|
5
|
+
"planner": "subagent-plan.json",
|
|
6
|
+
"task_card": "subagent-task-card.json",
|
|
7
|
+
"critic": "subagent-critic.json",
|
|
8
|
+
"normalizer": "subagent-normalize.json"
|
|
9
|
+
},
|
|
10
|
+
"args": [
|
|
11
|
+
"goal:string",
|
|
12
|
+
"allowed:string",
|
|
13
|
+
"avoided:string",
|
|
14
|
+
"checks:string",
|
|
15
|
+
"constraints:string",
|
|
16
|
+
"model:string",
|
|
17
|
+
"tools:string"
|
|
18
|
+
],
|
|
19
|
+
"defaults": {
|
|
20
|
+
"allowed": "Caller must provide allowed files, directories, or logical scopes before implementation.",
|
|
21
|
+
"avoided": "Avoid unrelated files, public contracts, generated artifacts, and broad refactors unless explicitly allowed.",
|
|
22
|
+
"checks": "Smallest validation that proves the task card is complete.",
|
|
23
|
+
"constraints": "Split into bounded mutation zones and preserve integrator ownership of shared contracts.",
|
|
24
|
+
"model": "openai-codex/gpt-5.5",
|
|
25
|
+
"tools": ""
|
|
26
|
+
},
|
|
27
|
+
"mailbox": {
|
|
28
|
+
"accepts": ["control.stop"],
|
|
29
|
+
"emits": ["task_card.completed", "pipeline.completed", "command.done", "run.done", "run.failed"]
|
|
30
|
+
},
|
|
31
|
+
"template": [
|
|
32
|
+
{
|
|
33
|
+
"name": "planner",
|
|
34
|
+
"values": {
|
|
35
|
+
"goal": "{goal}",
|
|
36
|
+
"scope": "Allowed: {allowed}. Avoided: {avoided}.",
|
|
37
|
+
"constraints": "{constraints}",
|
|
38
|
+
"model": "{model}",
|
|
39
|
+
"tools": "{tools}"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "task_card",
|
|
44
|
+
"values": {
|
|
45
|
+
"goal": "Use plan from stdin to create one bounded implementation assignment for: {goal}",
|
|
46
|
+
"allowed": "{allowed}",
|
|
47
|
+
"avoided": "{avoided}",
|
|
48
|
+
"checks": "{checks}",
|
|
49
|
+
"model": "{model}",
|
|
50
|
+
"tools": "{tools}"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "critic",
|
|
55
|
+
"values": {
|
|
56
|
+
"target": "Use generated plan and task card from stdin.",
|
|
57
|
+
"constraints": "{constraints}",
|
|
58
|
+
"risk_policy": "Find unsafe scope expansion, missing ownership, and weak validation gates.",
|
|
59
|
+
"model": "{model}",
|
|
60
|
+
"tools": "{tools}"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "normalizer",
|
|
65
|
+
"values": {
|
|
66
|
+
"input": "Use plan, task card, and critique from stdin.",
|
|
67
|
+
"format": "Markdown sections: Task Card, Allowed Files, Avoid Files, Checks, Risks, Integrator Notes.",
|
|
68
|
+
"model": "{model}",
|
|
69
|
+
"tools": "{tools}"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pipeline-docs-maintenance",
|
|
3
|
+
"async": true,
|
|
4
|
+
"imports": {
|
|
5
|
+
"docs_index": "utility-markdown-index.json",
|
|
6
|
+
"reviewer": "subagent-review.json",
|
|
7
|
+
"planner": "subagent-plan.json",
|
|
8
|
+
"artifact": "pipeline-artifact-report.json"
|
|
9
|
+
},
|
|
10
|
+
"args": [
|
|
11
|
+
"docs_dir:path",
|
|
12
|
+
"readme:path",
|
|
13
|
+
"change_summary:string",
|
|
14
|
+
"artifact_path:path",
|
|
15
|
+
"model:string",
|
|
16
|
+
"tools:string"
|
|
17
|
+
],
|
|
18
|
+
"defaults": {
|
|
19
|
+
"docs_dir": "docs",
|
|
20
|
+
"readme": "README.md",
|
|
21
|
+
"change_summary": "Recent project changes require documentation/index consistency review.",
|
|
22
|
+
"artifact_path": "./docs-maintenance.md",
|
|
23
|
+
"model": "openai-codex/gpt-5.5",
|
|
24
|
+
"tools": ""
|
|
25
|
+
},
|
|
26
|
+
"mailbox": {
|
|
27
|
+
"accepts": ["control.stop"],
|
|
28
|
+
"emits": ["docs.completed", "artifact.prepared", "command.done", "run.done", "run.failed"]
|
|
29
|
+
},
|
|
30
|
+
"template": [
|
|
31
|
+
{
|
|
32
|
+
"name": "docs_index",
|
|
33
|
+
"values": {
|
|
34
|
+
"directory": "{docs_dir}",
|
|
35
|
+
"title": "Documentation Index",
|
|
36
|
+
"include_pattern": "*.md"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "reviewer",
|
|
41
|
+
"values": {
|
|
42
|
+
"scope": "README {readme}, docs directory {docs_dir}, and docs index output from stdin.",
|
|
43
|
+
"lens": "documentation maintenance and navigation consistency",
|
|
44
|
+
"instructions": "Review whether docs navigation, README entrypoints, and changed behavior are coherent. Change summary: {change_summary}",
|
|
45
|
+
"output_format": "Markdown sections: Missing Links, Stale Docs, Needed Updates, Safe No-op Areas.",
|
|
46
|
+
"model": "{model}",
|
|
47
|
+
"tools": "{tools}"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "planner",
|
|
52
|
+
"values": {
|
|
53
|
+
"goal": "Prepare a bounded docs maintenance plan for: {change_summary}",
|
|
54
|
+
"scope": "Use docs index and documentation review from stdin. README: {readme}. Docs dir: {docs_dir}.",
|
|
55
|
+
"constraints": "Prefer smallest documentation changes; do not rewrite stable docs cosmetically.",
|
|
56
|
+
"output_format": "Markdown sections: Required Edits, Optional Edits, Validation, Stop Conditions.",
|
|
57
|
+
"model": "{model}",
|
|
58
|
+
"tools": "{tools}"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "artifact",
|
|
63
|
+
"values": {
|
|
64
|
+
"input": "Use docs review and maintenance plan from stdin.",
|
|
65
|
+
"artifact_path": "{artifact_path}",
|
|
66
|
+
"artifact_format": "Markdown sections: Docs State, Required Updates, Optional Follow-up, Validation.",
|
|
67
|
+
"model": "{model}",
|
|
68
|
+
"tools": "{tools}"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pipeline-media-library",
|
|
3
|
+
"async": true,
|
|
4
|
+
"imports": {
|
|
5
|
+
"playlist": "utility-playlist-build.json",
|
|
6
|
+
"artifact": "pipeline-artifact-report.json"
|
|
7
|
+
},
|
|
8
|
+
"args": [
|
|
9
|
+
"source_dir:path",
|
|
10
|
+
"extensions:string",
|
|
11
|
+
"max_depth:int",
|
|
12
|
+
"output_mode:enum(paths,m3u,inline)",
|
|
13
|
+
"artifact_path:path",
|
|
14
|
+
"model:string",
|
|
15
|
+
"tools:string"
|
|
16
|
+
],
|
|
17
|
+
"defaults": {
|
|
18
|
+
"source_dir": "~/Music",
|
|
19
|
+
"extensions": ".mp3,.ogg,.wav,.flac,.m4a",
|
|
20
|
+
"max_depth": "2",
|
|
21
|
+
"output_mode": "m3u",
|
|
22
|
+
"artifact_path": "./media-library.md",
|
|
23
|
+
"model": "openai-codex/gpt-5.5",
|
|
24
|
+
"tools": ""
|
|
25
|
+
},
|
|
26
|
+
"mailbox": {
|
|
27
|
+
"accepts": ["control.stop"],
|
|
28
|
+
"emits": ["media.completed", "artifact.prepared", "command.done", "run.done", "run.failed"]
|
|
29
|
+
},
|
|
30
|
+
"template": [
|
|
31
|
+
{
|
|
32
|
+
"name": "playlist",
|
|
33
|
+
"values": {
|
|
34
|
+
"source_dir": "{source_dir}",
|
|
35
|
+
"extensions": "{extensions}",
|
|
36
|
+
"max_depth": "{max_depth}",
|
|
37
|
+
"output_mode": "{output_mode}"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "artifact",
|
|
42
|
+
"values": {
|
|
43
|
+
"input": "Use playlist/media listing from stdin. Source directory: {source_dir}. Output mode: {output_mode}.",
|
|
44
|
+
"artifact_path": "{artifact_path}",
|
|
45
|
+
"artifact_format": "Markdown sections: Source, Playlist Output, Playback Notes, Next Actions.",
|
|
46
|
+
"model": "{model}",
|
|
47
|
+
"tools": "{tools}"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pipeline-quorum-review",
|
|
3
|
+
"async": true,
|
|
4
|
+
"imports": {
|
|
5
|
+
"quorum": "subagent-quorum.json",
|
|
6
|
+
"merger": "subagent-merge.json",
|
|
7
|
+
"judge": "subagent-judge.json",
|
|
8
|
+
"normalizer": "subagent-normalize.json"
|
|
9
|
+
},
|
|
10
|
+
"args": [
|
|
11
|
+
"prompt:string",
|
|
12
|
+
"models:array",
|
|
13
|
+
"merge_mode:enum(consensus-first,risk-first)",
|
|
14
|
+
"merger_model:string",
|
|
15
|
+
"judge_model:string",
|
|
16
|
+
"tools:string"
|
|
17
|
+
],
|
|
18
|
+
"defaults": {
|
|
19
|
+
"models": [
|
|
20
|
+
"openai-codex/gpt-5.5",
|
|
21
|
+
"openai-codex/gpt-5.4",
|
|
22
|
+
"deepseek/deepseek-v4-flash"
|
|
23
|
+
],
|
|
24
|
+
"merge_mode": "consensus-first",
|
|
25
|
+
"merger_model": "openai-codex/gpt-5.5",
|
|
26
|
+
"judge_model": "openai-codex/gpt-5.5",
|
|
27
|
+
"tools": ""
|
|
28
|
+
},
|
|
29
|
+
"mailbox": {
|
|
30
|
+
"accepts": ["control.stop"],
|
|
31
|
+
"emits": ["quorum.completed", "review.completed", "command.done", "run.done", "run.failed"]
|
|
32
|
+
},
|
|
33
|
+
"template": [
|
|
34
|
+
{
|
|
35
|
+
"name": "quorum",
|
|
36
|
+
"values": {
|
|
37
|
+
"prompt": "{prompt}",
|
|
38
|
+
"models": "{models}",
|
|
39
|
+
"tools": "{tools}",
|
|
40
|
+
"output_format": "Vote-style Markdown: Verdict, Rationale, Evidence, Confidence."
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "merger",
|
|
45
|
+
"values": {
|
|
46
|
+
"inputs": "Use quorum outputs from stdin.",
|
|
47
|
+
"mode": "{merge_mode}",
|
|
48
|
+
"model": "{merger_model}",
|
|
49
|
+
"tools": "{tools}",
|
|
50
|
+
"risk_policy": "Preserve vote shape, minority severe findings, and confidence disagreements."
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "judge",
|
|
55
|
+
"values": {
|
|
56
|
+
"report": "Use merged quorum report from stdin.",
|
|
57
|
+
"evidence": "Use raw quorum outputs and merged report from stdin.",
|
|
58
|
+
"model": "{judge_model}",
|
|
59
|
+
"tools": "{tools}"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "normalizer",
|
|
64
|
+
"values": {
|
|
65
|
+
"input": "Use merged and judged quorum output from stdin.",
|
|
66
|
+
"format": "Markdown sections: Verdict, Vote Shape, Consensus, Minority Findings, Confidence, Required Action.",
|
|
67
|
+
"model": "{merger_model}",
|
|
68
|
+
"tools": "{tools}"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|