diff --git a/zulip-adapter-lessons.prose.md b/zulip-adapter-lessons.prose.md index 869853e..f237d40 100644 --- a/zulip-adapter-lessons.prose.md +++ b/zulip-adapter-lessons.prose.md @@ -57,6 +57,18 @@ description: > - **Fix**: Kill old process before starting, or use docker restart to clear state - **Applies to**: kagentz Agent Zero deployment +### 9. Zulip API Rate Limiting During Reconnection +- **Symptom**: Extension gets 429 errors and can't reconnect — responses vanish +- **Root cause**: Rapid PM2 restarts cause multiple queue registrations, hitting Zulip's per-IP rate limit +- **Fix**: Read `retry-after` header and wait before retrying; increase backoff between retries +- **Applies to**: pi extension (fixed), Hermes adapter (has retry logic but should check retry-after) + +### 10. Placeholder Edit Fails Silently (Streaming Vanishes) +- **Symptom**: User sees "Thinking..." placeholder but never gets the actual response +- **Root cause**: `editMessage` API call fails (e.g., message too old, rate limited) but no fallback +- **Fix**: If edit fails, send the response as a new message instead +- **Applies to**: pi extension (fixed), Hermes adapter (verify edit fallback exists) + ## Deployment Checklist When deploying a new Zulip adapter, verify: