pi-response-guard

Pi extension that auto-recovers from empty, errored, or interrupted model responses

Packages

Package details

extension

Install pi-response-guard from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-response-guard
Package
pi-response-guard
Version
0.1.0
Published
May 19, 2026
Downloads
not available
Author
buihongduc132
License
MIT
Types
extension
Size
60.1 KB
Dependencies
0 dependencies · 1 peer

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-response-guard

npm version license

Auto-recovery for empty, errored, or interrupted model responses in pi.

Features

  • Empty response detection — catches stopReason: "stop" with 0 output tokens (rate limit / proxy failures)
  • Auto-retry — sends a configurable retry message so the session never stalls
  • Rate limit recovery — matches 429, rate limit, usage limit, and other provider error patterns
  • Token overflow handling — auto-continues when the model hits max output tokens (stopReason: "length")
  • 7 detection cases — covers error patterns, length limits, thinking-only stops, silent stops after user/tool/auto-retry, and zero-token empty responses

Installation

For Humans

npm install pi-response-guard

For AI Agents

Add to your pi settings.json packages array:

{
  "packages": ["npm:pi-response-guard"]
}

Install and configure pi-response-guard by following: https://raw.githubusercontent.com/buihongduc132/pi-response-guard/refs/heads/main/README.md

For pi (git-sourced)

Add to your pi settings.json packages array:

{
  "packages": ["https://github.com/buihongduc132/pi-response-guard"]
}

Usage

pi-response-guard runs automatically once installed — no configuration required. It listens to every assistant message and detects retryable conditions:

# Condition Description
1 Error pattern match stopReason: "error" with a message matching configured error substrings (rate limit, fetch failed, ECONNRESET, etc.)
2 Token overflow stopReason: "length" — model hit max output tokens
3 Thinking-only stop Model stopped after emitting only thinking content, with no visible output
4 Silent stop after user Model stopped after a user message with no visible output
5 Silent stop after tool Model stopped after a tool result with no visible output
6 Silent stop after auto-retry Consecutive empty response following an automatic retry
7 Zero-token empty response stopReason: "stop" with usage.output === 0 — rate limit or proxy failure

When detected, the extension sends a configurable retry message (default: "continue") up to a maximum number of consecutive retries.

Configuration

Default config is bundled. To customize, run:

/pi-response-guard:setup

This copies the default config to ~/.pi/agent/extensions/pi-response-guard/config.json.

Or create a project-level config at .pi-response-guard.json or .pi/pi-response-guard.json.

Config Options

Field Type Default Description
enabled boolean true Enable/disable the extension
retryMessage string "continue" Message sent to trigger retry
maxConsecutiveAutoRetries number 10 Max retries before stopping
notifyOnAutoContinue boolean true Show UI notification on retry
autoContinueOnLength boolean true Retry on stopReason: "length"
autoContinueOnThinkingOnlyStop boolean true Retry when only thinking emitted
autoContinueOnSilentStopAfterTool boolean true Retry on silent stop after user/tool
autoContinueOnEmptyResponse boolean true Retry on 0 output token responses
errorPatterns string[] (see config.json) Substrings to match in error messages

License

MIT