pi-goal-list-loop-audit 0.34.2 → 0.34.3

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.
@@ -2002,6 +2002,23 @@ async function cmdPause(ctx: ExtensionContext): Promise<void> {
2002
2002
  }
2003
2003
 
2004
2004
  async function cmdResume(ctx: ExtensionContext): Promise<void> {
2005
+ // v0.34.3: /goal resume on an ACTIVE-but-idle goal re-kicks its
2006
+ // continuation (was: silent return — the user got NOTHING while the
2007
+ // widget said "active"). One-active-thing still holds: an active loop
2008
+ // wins over the re-kick.
2009
+ if (state.goal && state.goal.status === "active") {
2010
+ if (isLoopActive()) {
2011
+ ctx.ui.notify("A loop is active — one active thing at a time. /loop stop it first, then resume the goal.", "warning");
2012
+ return;
2013
+ }
2014
+ appendLedger(ctx.cwd, "resume_rekick", { goalId: state.goal.id, policy: state.goal.policy, via: "/goal resume" });
2015
+ ctx.ui.notify(
2016
+ `The ${state.goal.policy === "list" ? "list item" : "goal"} is ACTIVE but idle — re-firing its continuation: ${state.goal.objective.replace(/\s+/g, " ").slice(0, 70)}`,
2017
+ "info",
2018
+ );
2019
+ scheduleContinuation(ctx, true);
2020
+ return;
2021
+ }
2005
2022
  if (!state.goal || state.goal.status !== "paused") return;
2006
2023
  // v0.28.21: one-active-thing — the LAST unguarded activation path. A
2007
2024
  // paused goal/list-item must not resume over a live loop (covers
@@ -5315,6 +5332,30 @@ async function cmdGllaResume(ctx: ExtensionContext): Promise<void> {
5315
5332
  await cmdLoop("resume", ctx);
5316
5333
  return;
5317
5334
  }
5335
+ // v0.34.3: an ACTIVE-but-idle goal is exactly what the user means by
5336
+ // "resume" (hellhunter 2026-08-01: widget said "list item · active", the
5337
+ // agent sat idle after a prose-only turn — the continuation that should
5338
+ // drive the new head never landed — and /glla resume shrugged "Nothing to
5339
+ // resume"). Re-kick the continuation instead of shrugging.
5340
+ if (g && g.status === "active") {
5341
+ appendLedger(ctx.cwd, "resume_rekick", { goalId: g.id, policy: g.policy });
5342
+ ctx.ui.notify(
5343
+ `The ${g.policy === "list" ? "list item" : "goal"} is ACTIVE but idle — re-firing its continuation: ${g.objective.replace(/\s+/g, " ").slice(0, 70)}`,
5344
+ "info",
5345
+ );
5346
+ scheduleContinuation(ctx, true);
5347
+ return;
5348
+ }
5349
+ if (g && g.status === "auditing") {
5350
+ ctx.ui.notify("An audit is in flight — wait for the isolated auditor's verdict (the status line shows auditing…).", "info");
5351
+ return;
5352
+ }
5353
+ if (state.loop?.active) {
5354
+ appendLedger(ctx.cwd, "resume_rekick", { loop: true, iteration: state.loop.iteration });
5355
+ ctx.ui.notify(`The loop is ACTIVE — re-firing its tick (iteration ${state.loop.iteration}). If it wedges again, /loop status for the diagnostics.`, "info");
5356
+ scheduleLoopTick(ctx);
5357
+ return;
5358
+ }
5318
5359
  ctx.ui.notify("Nothing to resume — no paused goal/list-item, no held loop. /goal, /list, or /loop to start something.", "info");
5319
5360
  }
5320
5361
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-goal-list-loop-audit",
3
- "version": "0.34.2",
3
+ "version": "0.34.3",
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",