@llblab/pi-actors 0.14.3 → 0.15.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.
Files changed (67) hide show
  1. package/AGENTS.md +5 -1
  2. package/BACKLOG.md +18 -32
  3. package/CHANGELOG.md +20 -0
  4. package/README.md +24 -20
  5. package/docs/actor-messages.md +1 -1
  6. package/docs/async-runs.md +4 -4
  7. package/docs/command-templates.md +11 -11
  8. package/docs/recipe-library.md +7 -3
  9. package/docs/task-first-recipes.md +44 -43
  10. package/docs/template-recipes.md +7 -2
  11. package/docs/tool-registry.md +7 -5
  12. package/lib/actor-messages.ts +20 -7
  13. package/lib/async-runs.ts +25 -12
  14. package/lib/command-templates.ts +6 -1
  15. package/lib/config.ts +2 -2
  16. package/lib/execution.ts +9 -5
  17. package/lib/observability.ts +20 -10
  18. package/lib/prompts.ts +13 -20
  19. package/lib/tools.ts +196 -64
  20. package/package.json +17 -9
  21. package/recipes/coordinator-locker.json +46 -0
  22. package/recipes/music-player.json +16 -2
  23. package/recipes/pipeline-architect-coordinator.json +11 -3
  24. package/recipes/pipeline-artifact-bundle.json +12 -3
  25. package/recipes/pipeline-artifact-report.json +9 -3
  26. package/recipes/pipeline-artifact-write.json +9 -3
  27. package/recipes/pipeline-async-run-ops.json +18 -9
  28. package/recipes/pipeline-checkpoint-continuation.json +14 -3
  29. package/recipes/pipeline-development-tasking.json +12 -3
  30. package/recipes/pipeline-docs-maintenance.json +12 -3
  31. package/recipes/pipeline-media-library.json +12 -3
  32. package/recipes/pipeline-quorum-review.json +12 -9
  33. package/recipes/pipeline-release-readiness.json +27 -9
  34. package/recipes/pipeline-release-summary.json +89 -0
  35. package/recipes/pipeline-repo-health.json +12 -3
  36. package/recipes/pipeline-research-synthesis.json +11 -3
  37. package/recipes/pipeline-review-readiness.json +12 -6
  38. package/recipes/subagent-artifact.json +9 -3
  39. package/recipes/subagent-checkpoint.json +10 -3
  40. package/recipes/subagent-conflict-report.json +11 -3
  41. package/recipes/subagent-contradiction-map.json +11 -3
  42. package/recipes/subagent-critic.json +11 -3
  43. package/recipes/subagent-evidence-map.json +11 -3
  44. package/recipes/subagent-followup.json +10 -3
  45. package/recipes/subagent-judge.json +11 -3
  46. package/recipes/subagent-merge.json +11 -3
  47. package/recipes/subagent-message.json +8 -3
  48. package/recipes/subagent-normalize.json +11 -3
  49. package/recipes/subagent-plan.json +11 -3
  50. package/recipes/subagent-prompt.json +10 -3
  51. package/recipes/subagent-quorum.json +10 -7
  52. package/recipes/subagent-review-coordinator.json +14 -6
  53. package/recipes/subagent-review.json +11 -3
  54. package/recipes/subagent-task-card.json +11 -3
  55. package/recipes/subagent-tools.json +10 -3
  56. package/recipes/subagent-verify.json +11 -3
  57. package/recipes/subagents-prompts.json +10 -3
  58. package/recipes/utility-coordinator-lock-snapshot.json +14 -0
  59. package/recipes/utility-run-ops-snapshot.json +3 -3
  60. package/recipes/utility-skill-summary.json +14 -0
  61. package/scripts/coordinator-locker.mjs +272 -0
  62. package/scripts/music-player.mjs +2 -1
  63. package/scripts/recipe-utils.mjs +239 -81
  64. package/scripts/validate-recipe.mjs +28 -10
  65. package/skills/actors/SKILL.md +283 -0
  66. package/skills/swarm/SKILL.md +451 -0
  67. package/skills/swarm/references/development-swarm.md +596 -0
@@ -15,12 +15,18 @@
15
15
  ],
16
16
  "defaults": {
17
17
  "artifact_format": "Markdown sections: Summary, Findings, Evidence, Risks, Next Actions.",
18
- "model": "openai-codex/gpt-5.5",
19
18
  "tools": ""
20
19
  },
21
20
  "mailbox": {
22
- "accepts": ["control.stop", "control.cancel", "control.kill"],
23
- "emits": ["artifact.prepared", "artifact.blocked"]
21
+ "accepts": [
22
+ "control.stop",
23
+ "control.cancel",
24
+ "control.kill"
25
+ ],
26
+ "emits": [
27
+ "artifact.prepared",
28
+ "artifact.blocked"
29
+ ]
24
30
  },
25
31
  "template": [
26
32
  {
@@ -18,12 +18,18 @@
18
18
  "defaults": {
19
19
  "artifact_format": "Markdown sections: Summary, Findings, Evidence, Risks, Next Actions.",
20
20
  "write_mode": "create",
21
- "model": "openai-codex/gpt-5.5",
22
21
  "tools": ""
23
22
  },
24
23
  "mailbox": {
25
- "accepts": ["control.stop", "control.cancel", "control.kill"],
26
- "emits": ["artifact.written", "artifact.blocked"]
24
+ "accepts": [
25
+ "control.stop",
26
+ "control.cancel",
27
+ "control.kill"
28
+ ],
29
+ "emits": [
30
+ "artifact.written",
31
+ "artifact.blocked"
32
+ ]
27
33
  },
28
34
  "artifacts": {
29
35
  "artifact": "{artifact_path}"
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "args": [
10
10
  "state_root:path",
11
- "message_file:path",
11
+ "run_id:string",
12
12
  "lines:int",
13
13
  "stale_minutes:int",
14
14
  "artifact_path:path",
@@ -17,23 +17,32 @@
17
17
  ],
18
18
  "defaults": {
19
19
  "state_root": "~/.pi/agent/tmp/pi-actors/runs",
20
- "message_file": "~/.pi/agent/tmp/pi-actors/runs/music/outbox.jsonl",
20
+ "run_id": "music",
21
21
  "lines": "80",
22
22
  "stale_minutes": "60",
23
23
  "artifact_path": "./async-run-ops.md",
24
- "model": "openai-codex/gpt-5.5",
25
24
  "tools": ""
26
25
  },
27
26
  "mailbox": {
28
- "accepts": ["control.stop", "control.cancel", "control.kill"],
29
- "emits": ["operations.completed", "artifact.prepared", "command.done", "run.done", "run.failed"]
27
+ "accepts": [
28
+ "control.stop",
29
+ "control.cancel",
30
+ "control.kill"
31
+ ],
32
+ "emits": [
33
+ "operations.completed",
34
+ "artifact.prepared",
35
+ "command.done",
36
+ "run.done",
37
+ "run.failed"
38
+ ]
30
39
  },
31
40
  "template": [
32
41
  {
33
42
  "name": "snapshot",
34
43
  "values": {
35
44
  "state_root": "{state_root}",
36
- "message_file": "{message_file}",
45
+ "run_id": "{run_id}",
37
46
  "lines": "{lines}",
38
47
  "stale_minutes": "{stale_minutes}"
39
48
  }
@@ -41,8 +50,8 @@
41
50
  {
42
51
  "name": "normalizer",
43
52
  "values": {
44
- "input": "Use async run operations snapshot JSON from stdin. State root: {state_root}. Message file: {message_file}.",
45
- "format": "Markdown sections: Active Runs, Terminal Runs, Recent Events, Stale/Risky Runs, Recommended Controls, Follow-up Needed.",
53
+ "input": "Use actor run operations snapshot JSON from stdin. State root: {state_root}. Inspected run: {run_id}.",
54
+ "format": "Markdown sections: Active Runs, Terminal Runs, Recent Actor Messages, Stale/Risky Runs, Recommended Controls, Follow-up Needed.",
46
55
  "model": "{model}",
47
56
  "thinking": "off",
48
57
  "tools": "{tools}"
@@ -53,7 +62,7 @@
53
62
  "values": {
54
63
  "input": "Use normalized async-run operations report from stdin.",
55
64
  "artifact_path": "{artifact_path}",
56
- "artifact_format": "Markdown sections: Status, Events, Risks, Recommended Actions.",
65
+ "artifact_format": "Markdown sections: Status, Actor Messages, Risks, Recommended Actions.",
57
66
  "model": "{model}",
58
67
  "tools": "{tools}"
59
68
  }
@@ -17,12 +17,23 @@
17
17
  "defaults": {
18
18
  "reply": "No coordinator reply provided yet; produce a checkpoint artifact only.",
19
19
  "mode": "degraded-new-branch",
20
- "model": "openai-codex/gpt-5.5",
21
20
  "tools": ""
22
21
  },
23
22
  "mailbox": {
24
- "accepts": ["control.reply", "control.revise", "control.stop", "control.cancel", "control.kill"],
25
- "emits": ["checkpoint.needs_input", "checkpoint.continued", "command.done", "run.done", "run.failed"]
23
+ "accepts": [
24
+ "control.reply",
25
+ "control.revise",
26
+ "control.stop",
27
+ "control.cancel",
28
+ "control.kill"
29
+ ],
30
+ "emits": [
31
+ "checkpoint.needs_input",
32
+ "checkpoint.continued",
33
+ "command.done",
34
+ "run.done",
35
+ "run.failed"
36
+ ]
26
37
  },
27
38
  "template": [
28
39
  {
@@ -21,12 +21,21 @@
21
21
  "avoided": "Avoid unrelated files, public contracts, generated artifacts, and broad refactors unless explicitly allowed.",
22
22
  "checks": "Smallest validation that proves the task card is complete.",
23
23
  "constraints": "Split into bounded mutation zones and preserve integrator ownership of shared contracts.",
24
- "model": "openai-codex/gpt-5.5",
25
24
  "tools": ""
26
25
  },
27
26
  "mailbox": {
28
- "accepts": ["control.stop", "control.cancel", "control.kill"],
29
- "emits": ["task_card.completed", "pipeline.completed", "command.done", "run.done", "run.failed"]
27
+ "accepts": [
28
+ "control.stop",
29
+ "control.cancel",
30
+ "control.kill"
31
+ ],
32
+ "emits": [
33
+ "task_card.completed",
34
+ "pipeline.completed",
35
+ "command.done",
36
+ "run.done",
37
+ "run.failed"
38
+ ]
30
39
  },
31
40
  "template": [
32
41
  {
@@ -20,12 +20,21 @@
20
20
  "readme": "README.md",
21
21
  "change_summary": "Recent project changes require documentation/index consistency review.",
22
22
  "artifact_path": "./docs-maintenance.md",
23
- "model": "openai-codex/gpt-5.5",
24
23
  "tools": ""
25
24
  },
26
25
  "mailbox": {
27
- "accepts": ["control.stop", "control.cancel", "control.kill"],
28
- "emits": ["docs.completed", "artifact.prepared", "command.done", "run.done", "run.failed"]
26
+ "accepts": [
27
+ "control.stop",
28
+ "control.cancel",
29
+ "control.kill"
30
+ ],
31
+ "emits": [
32
+ "docs.completed",
33
+ "artifact.prepared",
34
+ "command.done",
35
+ "run.done",
36
+ "run.failed"
37
+ ]
29
38
  },
30
39
  "template": [
31
40
  {
@@ -20,12 +20,21 @@
20
20
  "max_depth": "2",
21
21
  "output_mode": "m3u",
22
22
  "artifact_path": "./media-library.md",
23
- "model": "openai-codex/gpt-5.5",
24
23
  "tools": ""
25
24
  },
26
25
  "mailbox": {
27
- "accepts": ["control.stop", "control.cancel", "control.kill"],
28
- "emits": ["media.completed", "artifact.prepared", "command.done", "run.done", "run.failed"]
26
+ "accepts": [
27
+ "control.stop",
28
+ "control.cancel",
29
+ "control.kill"
30
+ ],
31
+ "emits": [
32
+ "media.completed",
33
+ "artifact.prepared",
34
+ "command.done",
35
+ "run.done",
36
+ "run.failed"
37
+ ]
29
38
  },
30
39
  "template": [
31
40
  {
@@ -16,19 +16,22 @@
16
16
  "tools:string"
17
17
  ],
18
18
  "defaults": {
19
- "models": [
20
- "openai-codex/gpt-5.5",
21
- "openai-codex/gpt-5.4",
22
- "deepseek/deepseek-v4-flash"
23
- ],
24
19
  "merge_mode": "consensus-first",
25
- "merger_model": "openai-codex/gpt-5.5",
26
- "judge_model": "openai-codex/gpt-5.5",
27
20
  "tools": ""
28
21
  },
29
22
  "mailbox": {
30
- "accepts": ["control.stop", "control.cancel", "control.kill"],
31
- "emits": ["quorum.completed", "review.completed", "command.done", "run.done", "run.failed"]
23
+ "accepts": [
24
+ "control.stop",
25
+ "control.cancel",
26
+ "control.kill"
27
+ ],
28
+ "emits": [
29
+ "quorum.completed",
30
+ "review.completed",
31
+ "command.done",
32
+ "run.done",
33
+ "run.failed"
34
+ ]
32
35
  },
33
36
  "template": [
34
37
  {
@@ -4,6 +4,7 @@
4
4
  "imports": {
5
5
  "changelog": "utility-changelog-section.json",
6
6
  "package": "utility-package-summary.json",
7
+ "skill": "utility-skill-summary.json",
7
8
  "validation": "utility-validation-wrapper.json",
8
9
  "review": "subagent-review-coordinator.json",
9
10
  "artifact": "pipeline-artifact-report.json"
@@ -12,6 +13,7 @@
12
13
  "scope:path",
13
14
  "version:string",
14
15
  "package_json:path",
16
+ "skill:path",
15
17
  "validation_command:string",
16
18
  "artifact_path:path",
17
19
  "lenses:array",
@@ -23,25 +25,33 @@
23
25
  ],
24
26
  "defaults": {
25
27
  "scope": ".",
26
- "version": "0.7.1",
28
+ "version": "0.15.0",
27
29
  "package_json": "{scope}/package.json",
30
+ "skill": "{scope}/skills/actors/SKILL.md",
28
31
  "validation_command": "npm run validate",
29
32
  "artifact_path": "./release-readiness.md",
30
33
  "lenses": [
31
34
  "release",
32
35
  "package contents",
33
36
  "operator UX",
34
- "documentation"
37
+ "documentation",
38
+ "packaged skills"
35
39
  ],
36
- "reviewer_model": "openai-codex/gpt-5.5",
37
- "verifier_model": "openai-codex/gpt-5.5",
38
- "merger_model": "openai-codex/gpt-5.5",
39
- "judge_model": "openai-codex/gpt-5.5",
40
40
  "tools": ""
41
41
  },
42
42
  "mailbox": {
43
- "accepts": ["control.stop", "control.cancel", "control.kill"],
44
- "emits": ["release.completed", "artifact.prepared", "command.done", "run.done", "run.failed"]
43
+ "accepts": [
44
+ "control.stop",
45
+ "control.cancel",
46
+ "control.kill"
47
+ ],
48
+ "emits": [
49
+ "release.completed",
50
+ "artifact.prepared",
51
+ "command.done",
52
+ "run.done",
53
+ "run.failed"
54
+ ]
45
55
  },
46
56
  "template": [
47
57
  {
@@ -58,6 +68,14 @@
58
68
  "repo": "{scope}"
59
69
  }
60
70
  },
71
+ {
72
+ "name": "skill",
73
+ "values": {
74
+ "skill": "{skill}",
75
+ "package_json": "{package_json}",
76
+ "repo": "{scope}"
77
+ }
78
+ },
61
79
  {
62
80
  "name": "validation",
63
81
  "values": {
@@ -68,7 +86,7 @@
68
86
  {
69
87
  "name": "review",
70
88
  "values": {
71
- "scope": "Release scope {scope} for version {version}. Use changelog, package summary, and validation output from stdin.",
89
+ "scope": "Release scope {scope} for version {version}. Use changelog, package summary, packaged skill summary, and validation output from stdin.",
72
90
  "lenses": "{lenses}",
73
91
  "claim": "Version {version} is ready for release or the remaining blockers are explicitly identified.",
74
92
  "reviewer_model": "{reviewer_model}",
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "pipeline-release-summary",
3
+ "async": true,
4
+ "imports": {
5
+ "changelog": "utility-changelog-section.json",
6
+ "package": "utility-package-summary.json",
7
+ "skill": "utility-skill-summary.json",
8
+ "validation": "utility-validation-wrapper.json",
9
+ "artifact": "pipeline-artifact-report.json"
10
+ },
11
+ "args": [
12
+ "scope:path",
13
+ "version:string",
14
+ "package_json:path",
15
+ "skill:path",
16
+ "validation_command:string",
17
+ "artifact_path:path",
18
+ "risk_notes:string",
19
+ "model:string",
20
+ "tools:string"
21
+ ],
22
+ "defaults": {
23
+ "scope": ".",
24
+ "package_json": "{scope}/package.json",
25
+ "skill": "{scope}/skills/actors/SKILL.md",
26
+ "validation_command": "npm run validate",
27
+ "artifact_path": "./release-summary.md",
28
+ "risk_notes": "No extra risk notes supplied.",
29
+ "tools": ""
30
+ },
31
+ "mailbox": {
32
+ "accepts": [
33
+ "control.stop",
34
+ "control.cancel",
35
+ "control.kill"
36
+ ],
37
+ "emits": [
38
+ "release.summary_ready",
39
+ "artifact.prepared",
40
+ "command.done",
41
+ "run.done",
42
+ "run.failed"
43
+ ]
44
+ },
45
+ "artifacts": {
46
+ "summary": "{artifact_path}"
47
+ },
48
+ "template": [
49
+ {
50
+ "name": "changelog",
51
+ "values": {
52
+ "file": "{scope}/CHANGELOG.md",
53
+ "version": "{version}"
54
+ }
55
+ },
56
+ {
57
+ "name": "package",
58
+ "values": {
59
+ "package_json": "{package_json}",
60
+ "repo": "{scope}"
61
+ }
62
+ },
63
+ {
64
+ "name": "skill",
65
+ "values": {
66
+ "skill": "{skill}",
67
+ "package_json": "{package_json}",
68
+ "repo": "{scope}"
69
+ }
70
+ },
71
+ {
72
+ "name": "validation",
73
+ "values": {
74
+ "scope": "{scope}",
75
+ "command": "{validation_command}"
76
+ }
77
+ },
78
+ {
79
+ "name": "artifact",
80
+ "values": {
81
+ "input": "Prepare an evidence-only release summary for version {version}. Use changelog, package summary, packaged skill summary, validation output, and these risk notes: {risk_notes}. Do not propose or perform commit, PR, merge, tag, publish, or any external release side effect.",
82
+ "artifact_path": "{artifact_path}",
83
+ "artifact_format": "Markdown sections: Release Summary, Validation Evidence, Package And Skill Evidence, Risks, PR Body Draft, Operator-Gated Next Steps. The PR Body Draft must be suitable for copy/paste and must not claim that release side effects already happened.",
84
+ "model": "{model}",
85
+ "tools": "{tools}"
86
+ }
87
+ }
88
+ ]
89
+ }
@@ -22,12 +22,21 @@
22
22
  "docs_dir": "docs",
23
23
  "validation_command": "npm run validate",
24
24
  "artifact_path": "./repo-health.md",
25
- "model": "openai-codex/gpt-5.5",
26
25
  "tools": ""
27
26
  },
28
27
  "mailbox": {
29
- "accepts": ["control.stop", "control.cancel", "control.kill"],
30
- "emits": ["repo_health.completed", "artifact.prepared", "command.done", "run.done", "run.failed"]
28
+ "accepts": [
29
+ "control.stop",
30
+ "control.cancel",
31
+ "control.kill"
32
+ ],
33
+ "emits": [
34
+ "repo_health.completed",
35
+ "artifact.prepared",
36
+ "command.done",
37
+ "run.done",
38
+ "run.failed"
39
+ ]
31
40
  },
32
41
  "template": [
33
42
  {
@@ -19,12 +19,20 @@
19
19
  "defaults": {
20
20
  "sources": "Use provided source notes or artifact paths only; mark missing evidence.",
21
21
  "constraints": "Bound the question, preserve contradictions, and avoid publication-style certainty when evidence is weak.",
22
- "model": "openai-codex/gpt-5.5",
23
22
  "tools": ""
24
23
  },
25
24
  "mailbox": {
26
- "accepts": ["control.stop", "control.cancel", "control.kill"],
27
- "emits": ["research.completed", "command.done", "run.done", "run.failed"]
25
+ "accepts": [
26
+ "control.stop",
27
+ "control.cancel",
28
+ "control.kill"
29
+ ],
30
+ "emits": [
31
+ "research.completed",
32
+ "command.done",
33
+ "run.done",
34
+ "run.failed"
35
+ ]
28
36
  },
29
37
  "template": [
30
38
  {
@@ -22,15 +22,21 @@
22
22
  "operator UX"
23
23
  ],
24
24
  "release_gate": "The scope is safe to ship or hand to the next release step.",
25
- "reviewer_model": "openai-codex/gpt-5.5",
26
- "verifier_model": "openai-codex/gpt-5.5",
27
- "merger_model": "openai-codex/gpt-5.5",
28
- "judge_model": "openai-codex/gpt-5.5",
29
25
  "tools": ""
30
26
  },
31
27
  "mailbox": {
32
- "accepts": ["control.stop", "control.cancel", "control.kill"],
33
- "emits": ["review.completed", "pipeline.completed", "command.done", "run.done", "run.failed"]
28
+ "accepts": [
29
+ "control.stop",
30
+ "control.cancel",
31
+ "control.kill"
32
+ ],
33
+ "emits": [
34
+ "review.completed",
35
+ "pipeline.completed",
36
+ "command.done",
37
+ "run.done",
38
+ "run.failed"
39
+ ]
34
40
  },
35
41
  "template": {
36
42
  "name": "coordinator",
@@ -15,13 +15,19 @@
15
15
  "artifact_format": "Markdown with stable headings and preserved evidence.",
16
16
  "write_policy": "Prepare content for the artifact path and state whether the caller should write, append, or review before writing.",
17
17
  "validation_policy": "List checks the caller should run before accepting the artifact; distinguish required checks from optional review.",
18
- "model": "openai-codex/gpt-5.5",
19
18
  "thinking": "off",
20
19
  "tools": ""
21
20
  },
22
21
  "mailbox": {
23
- "accepts": ["control.stop", "control.cancel", "control.kill"],
24
- "emits": ["artifact.prepared", "artifact.blocked"]
22
+ "accepts": [
23
+ "control.stop",
24
+ "control.cancel",
25
+ "control.kill"
26
+ ],
27
+ "emits": [
28
+ "artifact.prepared",
29
+ "artifact.blocked"
30
+ ]
25
31
  },
26
32
  "template": "pi -p --model {model} --thinking {thinking} {tools?--tools:--no-tools} {tools} Prepare a durable artifact. Target path: {artifact_path}. Format: {artifact_format}. Write policy: {write_policy}. Validation policy: {validation_policy}. Input: {input}"
27
33
  }
@@ -15,13 +15,20 @@
15
15
  "options": "List options considered, recommendation, and risk if the coordinator does not answer.",
16
16
  "resume_policy": "Do not claim same-context resume unless the adapter provides a resumable session id; otherwise emit degraded artifact state.",
17
17
  "output_format": "Markdown sections: Preserved State, Question, Options, Recommendation, Risk If Guessed, Resume Mode.",
18
- "model": "openai-codex/gpt-5.5",
19
18
  "thinking": "off",
20
19
  "tools": ""
21
20
  },
22
21
  "mailbox": {
23
- "accepts": ["control.continue", "control.revise", "control.stop"],
24
- "emits": ["checkpoint.needs_input"]
22
+ "accepts": [
23
+ "control.continue",
24
+ "control.revise",
25
+ "control.stop",
26
+ "control.cancel",
27
+ "control.kill"
28
+ ],
29
+ "emits": [
30
+ "checkpoint.needs_input"
31
+ ]
25
32
  },
26
33
  "template": "pi -p --model {model} --thinking {thinking} {tools?--tools:--no-tools} {tools} Create a bounded coordinator checkpoint. State to preserve: {state}. Question: {question}. Options/risk format: {options}. Resume policy: {resume_policy}. Output format: {output_format}"
27
34
  }
@@ -13,13 +13,21 @@
13
13
  "defaults": {
14
14
  "preserve_policy": "Describe what must be preserved, what can be discarded, and suggested resolver action.",
15
15
  "output_format": "Markdown sections: Conflict, My Changes, Other Changes, Preserve, Discard, Suggested Resolution, Risks.",
16
- "model": "openai-codex/gpt-5.5",
17
16
  "thinking": "off",
18
17
  "tools": ""
19
18
  },
20
19
  "mailbox": {
21
- "accepts": ["control.stop"],
22
- "emits": ["conflict_report.completed", "command.done", "run.done", "run.failed"]
20
+ "accepts": [
21
+ "control.stop",
22
+ "control.cancel",
23
+ "control.kill"
24
+ ],
25
+ "emits": [
26
+ "conflict_report.completed",
27
+ "command.done",
28
+ "run.done",
29
+ "run.failed"
30
+ ]
23
31
  },
24
32
  "template": "pi -p --model {model} --thinking {thinking} {tools?--tools:--no-tools} {tools} Write a bounded conflict report. My change: {change}. Conflict: {conflict}. Preserve policy: {preserve_policy}. Output format: {output_format}"
25
33
  }
@@ -14,13 +14,21 @@
14
14
  "focus": "Find contradictions, unresolved assumptions, incompatible recommendations, and evidence gaps.",
15
15
  "resolution_policy": "Do not force consensus; preserve unresolved conflicts and name what evidence would resolve them.",
16
16
  "output_format": "Markdown sections: Contradictions, Affected Claims, Resolution Evidence, Unresolved Risks.",
17
- "model": "openai-codex/gpt-5.5",
18
17
  "thinking": "medium",
19
18
  "tools": ""
20
19
  },
21
20
  "mailbox": {
22
- "accepts": ["control.stop"],
23
- "emits": ["contradiction.completed", "command.done", "run.done", "run.failed"]
21
+ "accepts": [
22
+ "control.stop",
23
+ "control.cancel",
24
+ "control.kill"
25
+ ],
26
+ "emits": [
27
+ "contradiction.completed",
28
+ "command.done",
29
+ "run.done",
30
+ "run.failed"
31
+ ]
24
32
  },
25
33
  "template": "pi -p --model {model} --thinking {thinking} {tools?--tools:--no-tools} {tools} Map contradictions in these inputs: {inputs}. Focus: {focus}. Resolution policy: {resolution_policy}. Output format: {output_format}"
26
34
  }
@@ -16,13 +16,21 @@
16
16
  "constraints": "Stay bounded to the target; do not redesign unrelated systems.",
17
17
  "risk_policy": "Prefer falsifiable objections and separate blockers from caveats.",
18
18
  "output_format": "Markdown sections: Assumptions, Failure Modes, Counterarguments, Tests, Recommendation.",
19
- "model": "openai-codex/gpt-5.5",
20
19
  "thinking": "medium",
21
20
  "tools": ""
22
21
  },
23
22
  "mailbox": {
24
- "accepts": ["control.stop"],
25
- "emits": ["critique.completed", "command.done", "run.done", "run.failed"]
23
+ "accepts": [
24
+ "control.stop",
25
+ "control.cancel",
26
+ "control.kill"
27
+ ],
28
+ "emits": [
29
+ "critique.completed",
30
+ "command.done",
31
+ "run.done",
32
+ "run.failed"
33
+ ]
26
34
  },
27
35
  "template": "pi -p --model {model} --thinking {thinking} {tools?--tools:--no-tools} {tools} Critique this target through lens {lens}: {target}. Constraints: {constraints}. Risk policy: {risk_policy}. Output format: {output_format}"
28
36
  }
@@ -14,13 +14,21 @@
14
14
  "sources": "Use only provided source notes, inspected artifacts, or explicit uncertainty.",
15
15
  "source_policy": "Separate direct evidence, weak evidence, contradictions, and missing evidence.",
16
16
  "output_format": "Markdown sections: Question, Evidence Map, Contradictions, Missing Evidence, Confidence.",
17
- "model": "openai-codex/gpt-5.5",
18
17
  "thinking": "medium",
19
18
  "tools": ""
20
19
  },
21
20
  "mailbox": {
22
- "accepts": ["control.stop"],
23
- "emits": ["evidence.completed", "command.done", "run.done", "run.failed"]
21
+ "accepts": [
22
+ "control.stop",
23
+ "control.cancel",
24
+ "control.kill"
25
+ ],
26
+ "emits": [
27
+ "evidence.completed",
28
+ "command.done",
29
+ "run.done",
30
+ "run.failed"
31
+ ]
24
32
  },
25
33
  "template": "pi -p --model {model} --thinking {thinking} {tools?--tools:--no-tools} {tools} Build an evidence map for question: {question}. Sources: {sources}. Source policy: {source_policy}. Output format: {output_format}"
26
34
  }