pi-goal-list-loop-audit 0.34.4 → 0.34.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.
@@ -991,8 +991,21 @@ function heartbeatTick(): void {
991
991
  })
992
992
  ) {
993
993
  lastWedgeAlertAt = Date.now();
994
- const msg = `${goalNoun()} appears wedged: no activity for ${Math.round((Date.now() - lastActivityAt) / 60_000)}m while the session is busy — likely a hung command (test/build/dev server without a timeout). Check the session; Esc kills a stuck tool call.`;
995
- appendLedger(ctx.cwd, "wedge_alert", { silentMs: Date.now() - lastActivityAt });
994
+ // v0.34.5: a wedge while blocked on a subagent wait is a DIFFERENT animal
995
+ // from a hung bash command (junk-runner 2026-08-01: 2 Explore agents
996
+ // "thinking…" 31 minutes — working, but indistinguishable from hung
997
+ // without this hint). Name the wait and give the liveness check: a child
998
+ // whose tool-use counter stops moving is hung, not thinking.
999
+ const subWaits = new Set(
1000
+ [...inFlightToolCalls.values()]
1001
+ .filter((t) => t.name === "get_subagent_result" || t.name === "Agent")
1002
+ .map((t) => t.name),
1003
+ );
1004
+ const subHint = subWaits.size > 0
1005
+ ? ` The in-flight call is a SUBAGENT WAIT (${[...subWaits].join("/")}) — check the Agents panel: a child whose tool-use/token counters have stopped moving between checks is hung, not thinking (hard failures surface as ✗ failed + the wait returns; a HANG is silent). Esc interrupts the wait — then collect the survivors with get_subagent_result and absorb the dead scope inline.`
1006
+ : "";
1007
+ const msg = `${goalNoun()} appears wedged: no activity for ${Math.round((Date.now() - lastActivityAt) / 60_000)}m while the session is busy — likely a hung command (test/build/dev server without a timeout).${subHint} Check the session; Esc kills a stuck tool call.`;
1008
+ appendLedger(ctx.cwd, "wedge_alert", { silentMs: Date.now() - lastActivityAt, subagentWait: subWaits.size > 0 });
996
1009
  ctx.ui.notify(msg, "warning");
997
1010
  notifyExternal(ctx, msg);
998
1011
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-goal-list-loop-audit",
3
- "version": "0.34.4",
3
+ "version": "0.34.5",
4
4
  "description": "Mission control for autonomous pi: interview-drafted goals, an audited task queue, and forever-loops (metric, spec, project-audit) that run for hours. An isolated extension-less auditor re-verifies every completion with raw evidence; confirmed drafts, decision pauses and consent gates keep you in charge.",
5
5
  "license": "MIT",
6
6
  "author": "dracon",