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 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
+ [![Join dotfield.xyz on Discord](https://img.shields.io/badge/Join%20dotfield.xyz%20on%20Discord-5865F2?logo=discord&logoColor=white)](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.3
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
- The builtin `Default Review Loop` workflow (implement → review → fix) works out of the box — no agent setup required.
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",
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.80.6",
62
- "@earendil-works/pi-coding-agent": "^0.80.6",
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": "^6.0.3"
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