pi-claude-supervisor 0.5.4 → 0.5.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
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented here.
4
4
 
5
+ ## [0.5.5](https://github.com/btnalit/pi-claude-supervisor/compare/v0.5.4...v0.5.5) (2026-09-15)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * ignore expected tmux teardown races ([ac7ad57](https://github.com/btnalit/pi-claude-supervisor/commit/ac7ad57efa835764ea02fa138f8837947a5d9c39))
11
+
5
12
  ## [0.5.4](https://github.com/btnalit/pi-claude-supervisor/compare/v0.5.3...v0.5.4) (2026-09-15)
6
13
 
7
14
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-claude-supervisor",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
4
4
  "description": "A policy-gated Pi supervisor for observing and verifying Claude Code workers.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -890,8 +890,11 @@ export class TmuxWorkerAdapter implements WorkerAdapter {
890
890
  try {
891
891
  const outputBeforeInput = record.lastOutputAt;
892
892
  await this.#collectOutput(record);
893
- if (record.structured) await this.#checkNestedClaude(record);
894
893
  if (record.inputAt && record.lastOutputAt && Date.parse(record.lastOutputAt) >= record.inputAt && record.lastOutputAt !== outputBeforeInput) record.turnObservedOutput = true;
894
+ // Inspect the pane before walking its process tree. A normal stop or an
895
+ // externally killed pane can remove the bridge between these two reads;
896
+ // treating that expected exit as a nested-process/containment failure
897
+ // would turn successful cleanup into a false runtime error.
895
898
  const pane = await this.#paneStatus(record);
896
899
  record.paneDead = pane.dead;
897
900
  record.panePid = pane.pid;
@@ -905,6 +908,9 @@ export class TmuxWorkerAdapter implements WorkerAdapter {
905
908
  this.#emit(record, { type: "exited", handle: record.handle, exitCode: record.exitCode, signal: record.signal });
906
909
  return;
907
910
  }
911
+ // During explicit cleanup the bridge is expected to disappear. Do not
912
+ // race that teardown with the nested Claude/Reviewer guard.
913
+ if (record.structured && !record.stopping) await this.#checkNestedClaude(record);
908
914
  const screen = await this.#capture(record);
909
915
  if (record.structured) {
910
916
  if (record.activeRequests === 0 && hasBridgePromptInput(screen)) {