instar 1.3.372 → 1.3.373
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/.claude/skills/autonomous/hooks/autonomous-stop-hook.sh +116 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +11 -1
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +19 -19
- package/upgrades/1.3.373.md +59 -0
- package/upgrades/side-effects/stop-hook-idle-backoff.md +30 -0
|
@@ -542,6 +542,122 @@ if [[ "$STATE_SESSION" != "$HOOK_SESSION" ]]; then
|
|
|
542
542
|
record_session_id "$HOOK_SESSION"
|
|
543
543
|
fi
|
|
544
544
|
|
|
545
|
+
# ── IDLE_BACKOFF — consecutive quick stops back off before re-injecting the frame ──
|
|
546
|
+
# Every block-decision below re-feeds the FULL frame + context to the model. When the
|
|
547
|
+
# session is idle/holding (nothing actionable), stops arrive back-to-back (~4s apart)
|
|
548
|
+
# and the loop re-injects thousands of tokens ~15×/min, all night — the 2026-06-06
|
|
549
|
+
# rapid-idle-refire waste. Backoff: measure the agent's ACTIVE time since the last
|
|
550
|
+
# re-injection (gap = stop arrival − last resume; slept time never counts toward the
|
|
551
|
+
# gap, so a long sleep can't masquerade as productive work). gap < QUICK_SECS ⇒ an
|
|
552
|
+
# idle cycle ⇒ the consecutive counter rises ⇒ tiered sleep (3+ quick stops → T1 30s,
|
|
553
|
+
# 6+ → T2 120s, 10+ → T3 300s) BEFORE the next re-injection. Any real work makes the
|
|
554
|
+
# gap long and resets the counter to zero — productive loops never wait at all.
|
|
555
|
+
# RESPONSIVENESS: the sleep polls every POLL_SECS and breaks EARLY on (a) a new
|
|
556
|
+
# inbound message for this topic, (b) the emergency-stop flag, (c) the state file
|
|
557
|
+
# vanishing (stop/stop-all) — a user message cuts the wait to ≤POLL_SECS.
|
|
558
|
+
# SAFETY (fail-toward-noise, never toward strand): the total sleep self-clamps to a
|
|
559
|
+
# third of THIS hook's own registered Stop timeout, read live from settings.json —
|
|
560
|
+
# a host-killed Stop hook fails OPEN and strands the loop, which is categorically
|
|
561
|
+
# worse than refire noise. Unreadable/missing timeout ⇒ conservative 20s cap; codex
|
|
562
|
+
# registrations (.codex/hooks.json, different timeout semantics) ⇒ same 20s cap.
|
|
563
|
+
BACKOFF_STATE="${STATE_FILE%.md}.backoff.json"
|
|
564
|
+
BACKOFF_SLEPT=0
|
|
565
|
+
if [[ "${INSTAR_HOOK_BACKOFF_DISABLE:-0}" != "1" ]]; then
|
|
566
|
+
BK_QUICK_SECS="${INSTAR_HOOK_BACKOFF_QUICK_SECS:-120}"
|
|
567
|
+
BK_T1="${INSTAR_HOOK_BACKOFF_T1:-30}"
|
|
568
|
+
BK_T2="${INSTAR_HOOK_BACKOFF_T2:-120}"
|
|
569
|
+
BK_T3="${INSTAR_HOOK_BACKOFF_T3:-300}"
|
|
570
|
+
BK_POLL="${INSTAR_HOOK_BACKOFF_POLL_SECS:-5}"
|
|
571
|
+
|
|
572
|
+
# Self-clamp: never sleep past a third of the registered hook timeout.
|
|
573
|
+
BK_MAX="${INSTAR_HOOK_BACKOFF_MAX_SLEEP:-}"
|
|
574
|
+
if [[ -z "$BK_MAX" ]]; then
|
|
575
|
+
if [[ "$IS_CODEX" == "1" ]]; then
|
|
576
|
+
BK_MAX=20
|
|
577
|
+
else
|
|
578
|
+
BK_REG_TIMEOUT=$(python3 -c "
|
|
579
|
+
import json
|
|
580
|
+
try:
|
|
581
|
+
s = json.load(open('.claude/settings.json'))
|
|
582
|
+
for grp in (s.get('hooks', {}).get('Stop') or []):
|
|
583
|
+
for h in (grp.get('hooks') or []):
|
|
584
|
+
if 'autonomous-stop-hook.sh' in (h.get('command') or ''):
|
|
585
|
+
t = h.get('timeout')
|
|
586
|
+
print(int(t) if isinstance(t, (int, float)) and t > 0 else '')
|
|
587
|
+
raise SystemExit
|
|
588
|
+
except SystemExit:
|
|
589
|
+
pass
|
|
590
|
+
except Exception:
|
|
591
|
+
pass
|
|
592
|
+
" 2>/dev/null || echo "")
|
|
593
|
+
if [[ "$BK_REG_TIMEOUT" =~ ^[0-9]+$ ]] && [[ $BK_REG_TIMEOUT -ge 60 ]]; then
|
|
594
|
+
BK_MAX=$(( BK_REG_TIMEOUT / 3 ))
|
|
595
|
+
else
|
|
596
|
+
BK_MAX=20
|
|
597
|
+
fi
|
|
598
|
+
fi
|
|
599
|
+
fi
|
|
600
|
+
|
|
601
|
+
# Read sidecar (per-topic). A new run (different started_at) resets the counter.
|
|
602
|
+
BK_PREV_RESUMED=$(jq -r '.lastResumedAt // 0' "$BACKOFF_STATE" 2>/dev/null || echo 0)
|
|
603
|
+
BK_PREV_QUICK=$(jq -r '.quickStops // 0' "$BACKOFF_STATE" 2>/dev/null || echo 0)
|
|
604
|
+
BK_PREV_RUN=$(jq -r '.runStartedAt // ""' "$BACKOFF_STATE" 2>/dev/null || echo "")
|
|
605
|
+
[[ "$BK_PREV_RESUMED" =~ ^[0-9]+$ ]] || BK_PREV_RESUMED=0
|
|
606
|
+
[[ "$BK_PREV_QUICK" =~ ^[0-9]+$ ]] || BK_PREV_QUICK=0
|
|
607
|
+
if [[ "$BK_PREV_RUN" != "$STARTED_AT" ]]; then
|
|
608
|
+
BK_PREV_RESUMED=0; BK_PREV_QUICK=0
|
|
609
|
+
fi
|
|
610
|
+
|
|
611
|
+
BK_NOW=$(date +%s)
|
|
612
|
+
BK_GAP=-1
|
|
613
|
+
BK_QUICK=0
|
|
614
|
+
if [[ $BK_PREV_RESUMED -gt 0 ]]; then
|
|
615
|
+
BK_GAP=$(( BK_NOW - BK_PREV_RESUMED ))
|
|
616
|
+
if [[ $BK_GAP -lt $BK_QUICK_SECS ]]; then
|
|
617
|
+
BK_QUICK=$(( BK_PREV_QUICK + 1 ))
|
|
618
|
+
fi
|
|
619
|
+
fi
|
|
620
|
+
|
|
621
|
+
BK_SLEEP=0
|
|
622
|
+
if [[ $BK_QUICK -ge 10 ]]; then BK_SLEEP=$BK_T3
|
|
623
|
+
elif [[ $BK_QUICK -ge 6 ]]; then BK_SLEEP=$BK_T2
|
|
624
|
+
elif [[ $BK_QUICK -ge 3 ]]; then BK_SLEEP=$BK_T1
|
|
625
|
+
fi
|
|
626
|
+
[[ $BK_SLEEP -gt $BK_MAX ]] && BK_SLEEP=$BK_MAX
|
|
627
|
+
|
|
628
|
+
if [[ $BK_SLEEP -gt 0 ]]; then
|
|
629
|
+
bk_inbound_latest() { ls -t .instar/telegram-inbound/msg-"${REPORT_TOPIC:-none}"-* 2>/dev/null | head -1; }
|
|
630
|
+
BK_MARK_IN=$(bk_inbound_latest)
|
|
631
|
+
while [[ $BACKOFF_SLEPT -lt $BK_SLEEP ]]; do
|
|
632
|
+
BK_CHUNK=$(( BK_SLEEP - BACKOFF_SLEPT ))
|
|
633
|
+
[[ $BK_CHUNK -gt $BK_POLL ]] && BK_CHUNK=$BK_POLL
|
|
634
|
+
sleep "$BK_CHUNK"
|
|
635
|
+
BACKOFF_SLEPT=$(( BACKOFF_SLEPT + BK_CHUNK ))
|
|
636
|
+
[[ -f ".instar/autonomous-emergency-stop" ]] && break
|
|
637
|
+
[[ ! -f "$STATE_FILE" ]] && break
|
|
638
|
+
[[ "$(bk_inbound_latest)" != "$BK_MARK_IN" ]] && break
|
|
639
|
+
done
|
|
640
|
+
echo "[autonomous] idle backoff: quickStops=$BK_QUICK gap=${BK_GAP}s slept=${BACKOFF_SLEPT}s (cap=${BK_MAX}s)" >&2
|
|
641
|
+
|
|
642
|
+
# Re-check terminal conditions that may have arrived during the sleep.
|
|
643
|
+
if [[ ! -f "$STATE_FILE" ]]; then
|
|
644
|
+
rm -f "$BACKOFF_STATE" 2>/dev/null || true
|
|
645
|
+
echo "[autonomous] state file removed during idle backoff — allowing exit" >&2
|
|
646
|
+
exit 0
|
|
647
|
+
fi
|
|
648
|
+
if [[ -f ".instar/autonomous-emergency-stop" ]]; then
|
|
649
|
+
emit "🛑 Autonomous mode: Emergency stop detected (during idle backoff)."
|
|
650
|
+
notify_terminal_stop "🛑 My autonomous run on \"$(goal_snippet)\" was stopped (emergency stop)."
|
|
651
|
+
rm -f "$STATE_FILE" "$BACKOFF_STATE" 2>/dev/null || true
|
|
652
|
+
exit 0
|
|
653
|
+
fi
|
|
654
|
+
fi
|
|
655
|
+
|
|
656
|
+
BK_RESUMED=$(date +%s)
|
|
657
|
+
printf '{"runStartedAt":"%s","lastResumedAt":%s,"quickStops":%s,"lastSleepSecs":%s}\n' \
|
|
658
|
+
"$STARTED_AT" "$BK_RESUMED" "$BK_QUICK" "$BACKOFF_SLEPT" > "$BACKOFF_STATE" 2>/dev/null || true
|
|
659
|
+
fi
|
|
660
|
+
|
|
545
661
|
# ── Continue the job: increment iteration, feed the task back. ────────
|
|
546
662
|
NEXT_ITERATION=$((ITERATION + 1))
|
|
547
663
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAsCH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAejC,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAAiC;gBAEvC,MAAM,EAAE,cAAc;IAIlC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAItC;;;;;;OAMG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC;IAIjC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IASpB;;;OAGG;IACH,OAAO,IAAI,eAAe;IAmD1B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,0BAA0B;IAmFlC,OAAO,CAAC,0BAA0B;IAmDlC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kCAAkC;IAwH1C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,kCAAkC;IA8C1C;;;;;;;;OAQG;IACH,OAAO,CAAC,kCAAkC;IA2B1C,OAAO,CAAC,uBAAuB;IAwE/B,OAAO,CAAC,4CAA4C;IA+CpD;;;;;;;OAOG;IACH,OAAO,CAAC,iCAAiC;IA0BzC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oCAAoC;IAmB5C;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,yCAAyC;IAWjD,OAAO,CAAC,yBAAyB;IA6FjC;;;;;;;;;;OAUG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;YA4BhC,uBAAuB;IAkGrC,OAAO,CAAC,0BAA0B;IAkGlC,OAAO,CAAC,0BAA0B;IAoElC,OAAO,CAAC,oBAAoB;IA4G5B,OAAO,CAAC,8BAA8B;IA2EtC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,0BAA0B;IA8BlC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,4BAA4B;IAwBpC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;;;;;;;;OASG;IACH,OAAO,CAAC,wCAAwC;IAuBhD;;;;;;;;OAQG;IACH,OAAO,CAAC,2CAA2C;IAuBnD;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,mCAAmC;
|
|
1
|
+
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1620,7 +1620,17 @@ export class PostUpdateMigrator {
|
|
|
1620
1620
|
// churn). The durable record remains the recovery-audit JSONL + stderr. Bumping
|
|
1621
1621
|
// re-deploys the silenced hook to every existing agent (which carries CLOCK_SEG
|
|
1622
1622
|
// but not RESTART_NOTE_SILENT); customized hooks are still left untouched.
|
|
1623
|
-
|
|
1623
|
+
// Marker bumped `RESTART_NOTE_SILENT` → `IDLE_BACKOFF`: the bundled hook now
|
|
1624
|
+
// paces frame re-injection when consecutive stops arrive quickly (an idle/
|
|
1625
|
+
// holding loop) — 3+ quick stops sleep 30s, 6+ 120s, 10+ 300s — with early-break
|
|
1626
|
+
// on a new inbound message / emergency stop / state-file removal, and a
|
|
1627
|
+
// self-clamp to a third of the hook's own registered Stop timeout (a host-killed
|
|
1628
|
+
// Stop hook fails OPEN and strands the loop, which is worse than refire noise).
|
|
1629
|
+
// Fixes the 2026-06-06 rapid-idle-refire waste: an idle autonomous session
|
|
1630
|
+
// re-injected the full frame ~15×/min all night. Bumping re-deploys the paced
|
|
1631
|
+
// hook to every existing agent (which carries RESTART_NOTE_SILENT but not
|
|
1632
|
+
// IDLE_BACKOFF); customized hooks are still left untouched.
|
|
1633
|
+
upgrade('.claude/skills/autonomous/hooks/autonomous-stop-hook.sh', 'IDLE_BACKOFF', 'Autonomous Mode Stop Hook', 'skills/autonomous/hooks/autonomous-stop-hook.sh (idle backoff — consecutive quick stops pace frame re-injection; early-break on inbound/emergency/stop)');
|
|
1624
1634
|
// setup-autonomous.sh marker bumped `native-goal/set` → `IS_CODEX_AGENT`: the bundled
|
|
1625
1635
|
// setup now ALSO auto-delegates to native /goal for CODEX agents (the prior native /goal
|
|
1626
1636
|
// wiring was gated on `claude --version >= 2.1.139`, which is empty for a codex agent, so
|