pi-baton 0.7.3 → 0.7.5
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 +12 -1
- package/README.md +10 -3
- package/docs/release.md +2 -2
- package/lib/run-store.ts +0 -4
- package/package.json +4 -4
- package/workflows/two-stage-review-gauntlet.yaml +75 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,9 +6,21 @@ This project follows semantic versioning.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.7.5] - 2026-08-22
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Merge the 2026-08-22 managed OSS dependency and maintenance PR batch.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- Added the builtin `Two-Stage Review Gauntlet` workflow to demonstrate a non-default two-stage review graph.
|
|
18
|
+
|
|
9
19
|
### Changed
|
|
10
20
|
|
|
11
21
|
- Bump package version to `0.7.3` for the next patch release.
|
|
22
|
+
- Bumped Pi dev toolchain packages to clear the transitive `protobufjs` audit advisory; the remaining `brace-expansion` finding is documented as upstream-blocked by `@earendil-works/pi-coding-agent`'s published shrinkwrap.
|
|
23
|
+
- Removed unused `clearActiveRunPointer` export from `lib/run-store.ts` (dead code with no callers; `loadActiveRun` / `loadMostRecentTerminalRun` already treat a missing `runId` as no active pointer).
|
|
12
24
|
|
|
13
25
|
## [0.7.2] - 2026-07-04
|
|
14
26
|
|
|
@@ -149,4 +161,3 @@ This project follows semantic versioning.
|
|
|
149
161
|
- Initial Pi package template.
|
|
150
162
|
- Example extension, Agent Skill, prompt, and theme.
|
|
151
163
|
- CI and npm Trusted Publishing workflow.
|
|
152
|
-
|
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Pi Baton
|
|
2
2
|
|
|
3
|
+
[](https://discord.gg/4945dXZVW5)
|
|
4
|
+
|
|
3
5
|
<p align="center">
|
|
4
6
|
<img src="./assets/pi-baton-icon-512.png" alt="Pi Baton icon" width="192" height="192" />
|
|
5
7
|
</p>
|
|
@@ -37,7 +39,7 @@ pi install npm:pi-baton
|
|
|
37
39
|
Pin a specific version when you want reproducible installs:
|
|
38
40
|
|
|
39
41
|
```bash
|
|
40
|
-
pi install npm:pi-baton@0.7.
|
|
42
|
+
pi install npm:pi-baton@0.7.5
|
|
41
43
|
```
|
|
42
44
|
|
|
43
45
|
Install into the current project instead of your user Pi settings:
|
|
@@ -75,7 +77,10 @@ Then run:
|
|
|
75
77
|
/baton:status show the active run summary
|
|
76
78
|
```
|
|
77
79
|
|
|
78
|
-
|
|
80
|
+
Builtin workflows work out of the box — no agent setup required:
|
|
81
|
+
|
|
82
|
+
- `Default Review Loop` (`implement → review → fix`)
|
|
83
|
+
- `Two-Stage Review Gauntlet` (`draft → technical_review → editorial_review`, with rejects routed through `fix`)
|
|
79
84
|
|
|
80
85
|
## Prerequisites
|
|
81
86
|
|
|
@@ -98,6 +103,8 @@ Discovery order: project `.pi/agents/` → user `~/.pi/agent/agents/` → pi-bat
|
|
|
98
103
|
|
|
99
104
|
Pick a name and a scaffold from `default-review-loop` is written to `.pi/baton/workflows/` and opened in editor. The scaffold includes `<your-fast-model>` / `<your-strong-model>` placeholders for step-level model overrides.
|
|
100
105
|
|
|
106
|
+
The shipped `workflows/` directory also includes `two-stage-review-gauntlet.yaml`, a second builtin graph that demonstrates chaining two review gates before completion.
|
|
107
|
+
|
|
101
108
|
### Workflow YAML reference
|
|
102
109
|
|
|
103
110
|
```yaml
|
|
@@ -133,7 +140,7 @@ steps:
|
|
|
133
140
|
| `extensions/` | Slash-command entrypoints (`/baton:new`, `/baton:start`, `/baton:run`, `/baton:status`) |
|
|
134
141
|
| `lib/` | Workflow parser, run engine, subagent runner, review contract, UI widget |
|
|
135
142
|
| `agents/` | Builtin `worker` and `reviewer` subagent definitions |
|
|
136
|
-
| `workflows/` | Builtin `default-review-loop.yaml` |
|
|
143
|
+
| `workflows/` | Builtin workflows (`default-review-loop.yaml`, `two-stage-review-gauntlet.yaml`) |
|
|
137
144
|
| `assets/` | README / package branding assets |
|
|
138
145
|
| `docs/` | Release and maintainer documentation |
|
|
139
146
|
|
package/docs/release.md
CHANGED
|
@@ -19,9 +19,9 @@ npm version patch
|
|
|
19
19
|
git push
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
On `main`, `.github/workflows/auto-release.yml` checks `package.json` version. If `v<version>` does not exist yet, it creates the tag, creates the GitHub Release, then explicitly dispatches `.github/workflows/publish.yml` for that tag.
|
|
22
|
+
On `main`, `.github/workflows/auto-release.yml` checks `package.json` version. If `v<version>` does not exist yet, it creates the tag, creates the GitHub Release, then explicitly dispatches `.github/workflows/publish.yml` for that tag. Version bumps on `main` do not trigger `publish.yml` directly; auto-release is the single handoff path for those commits.
|
|
23
23
|
|
|
24
|
-
The `v*.*.*` tag also triggers `.github/workflows/publish.yml`, which runs CI and publishes to npm when tags are pushed manually.
|
|
24
|
+
The `v*.*.*` tag push also triggers `.github/workflows/publish.yml`, which runs CI and publishes to npm when tags are pushed manually.
|
|
25
25
|
Publishing also runs when a GitHub Release is published, and can be run manually from GitHub Actions with `workflow_dispatch`.
|
|
26
26
|
|
|
27
27
|
The workflow skips `name@version` if that exact package version already exists on npm.
|
package/lib/run-store.ts
CHANGED
|
@@ -84,10 +84,6 @@ export async function setActiveRunPointer(cwd: string, runId: string): Promise<v
|
|
|
84
84
|
await writeJson(getActiveRunPointerPath(cwd), { runId } satisfies ActiveRunPointer);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
export async function clearActiveRunPointer(cwd: string): Promise<void> {
|
|
88
|
-
await writeJson(getActiveRunPointerPath(cwd), { runId: null });
|
|
89
|
-
}
|
|
90
|
-
|
|
91
87
|
export interface CreateRunInput {
|
|
92
88
|
workflowId: string;
|
|
93
89
|
workflowName: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-baton",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.5",
|
|
4
4
|
"description": "Pi-native workflow baton runner with per-step model switching and isolated step context.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -58,10 +58,10 @@
|
|
|
58
58
|
"typebox": "*"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@earendil-works/pi-ai": "^0.
|
|
62
|
-
"@earendil-works/pi-coding-agent": "^0.
|
|
61
|
+
"@earendil-works/pi-ai": "^0.84.1",
|
|
62
|
+
"@earendil-works/pi-coding-agent": "^0.84.1",
|
|
63
63
|
"typebox": "latest",
|
|
64
64
|
"@types/node": "^26.0.1",
|
|
65
|
-
"typescript": "^
|
|
65
|
+
"typescript": "^7.0.2"
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: Two-Stage Review Gauntlet
|
|
2
|
+
iteration_cap: 4
|
|
3
|
+
steps:
|
|
4
|
+
draft:
|
|
5
|
+
agent: worker
|
|
6
|
+
prompt: |
|
|
7
|
+
You are the draft step in a Pi Baton two-stage review gauntlet.
|
|
8
|
+
|
|
9
|
+
Produce a complete first-pass solution for the task brief. Keep the work focused
|
|
10
|
+
and prepare it for technical and editorial review gates.
|
|
11
|
+
|
|
12
|
+
End your response with a fenced JSON block:
|
|
13
|
+
```json
|
|
14
|
+
{"summary":"One paragraph summary of the draft you produced"}
|
|
15
|
+
```
|
|
16
|
+
next: technical_review
|
|
17
|
+
technical_review:
|
|
18
|
+
agent: reviewer
|
|
19
|
+
prompt: |
|
|
20
|
+
You are the technical review gate in a Pi Baton two-stage review gauntlet.
|
|
21
|
+
|
|
22
|
+
Review the draft for correctness, completeness, tests, regressions, and implementation risk.
|
|
23
|
+
Accept only when the work is technically ready to proceed to editorial review.
|
|
24
|
+
|
|
25
|
+
End your response with a fenced JSON block:
|
|
26
|
+
```json
|
|
27
|
+
{"summary":"Short technical review summary","judgment":"accept","acceptanceNote":"Why this is technically ready"}
|
|
28
|
+
```
|
|
29
|
+
or
|
|
30
|
+
```json
|
|
31
|
+
{"summary":"Short technical review summary","judgment":"reject","findings":["Actionable technical issue 1"]}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Rules:
|
|
35
|
+
- judgment must be "accept" or "reject"
|
|
36
|
+
- reject requires non-empty findings
|
|
37
|
+
- accept requires a non-empty acceptanceNote
|
|
38
|
+
on_accept: editorial_review
|
|
39
|
+
on_reject: fix
|
|
40
|
+
editorial_review:
|
|
41
|
+
agent: reviewer
|
|
42
|
+
prompt: |
|
|
43
|
+
You are the editorial review gate in a Pi Baton two-stage review gauntlet.
|
|
44
|
+
|
|
45
|
+
Review the technically accepted work for clarity, maintainability, user-facing wording,
|
|
46
|
+
and handoff quality. Accept only when the final result is ready to deliver.
|
|
47
|
+
|
|
48
|
+
End your response with a fenced JSON block:
|
|
49
|
+
```json
|
|
50
|
+
{"summary":"Short editorial review summary","judgment":"accept","acceptanceNote":"Why this is ready to deliver"}
|
|
51
|
+
```
|
|
52
|
+
or
|
|
53
|
+
```json
|
|
54
|
+
{"summary":"Short editorial review summary","judgment":"reject","findings":["Actionable editorial issue 1"]}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Rules:
|
|
58
|
+
- judgment must be "accept" or "reject"
|
|
59
|
+
- reject requires non-empty findings
|
|
60
|
+
- accept requires a non-empty acceptanceNote
|
|
61
|
+
on_accept: _complete
|
|
62
|
+
on_reject: fix
|
|
63
|
+
fix:
|
|
64
|
+
agent: worker
|
|
65
|
+
prompt: |
|
|
66
|
+
You are the fix step in a Pi Baton two-stage review gauntlet.
|
|
67
|
+
|
|
68
|
+
Address the latest review findings while preserving good work from earlier steps.
|
|
69
|
+
After fixing, the work returns through the technical gate before editorial review.
|
|
70
|
+
|
|
71
|
+
End your response with a fenced JSON block:
|
|
72
|
+
```json
|
|
73
|
+
{"summary":"One paragraph summary of fixes applied"}
|
|
74
|
+
```
|
|
75
|
+
next: technical_review
|