diff options
Diffstat (limited to 'internal/executor/claude.go')
| -rw-r--r-- | internal/executor/claude.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/internal/executor/claude.go b/internal/executor/claude.go index d6d92cb..2faeff3 100644 --- a/internal/executor/claude.go +++ b/internal/executor/claude.go @@ -421,6 +421,17 @@ func parseStream(r io.Reader, w io.Writer, logger *slog.Logger) (float64, error) msgType, _ := msg["type"].(string) switch msgType { + case "rate_limit_event": + if info, ok := msg["rate_limit_info"].(map[string]interface{}); ok { + status, _ := info["status"].(string) + if status == "rejected" { + streamErr = fmt.Errorf("claude rate limit reached: %v", msg) + } + } + case "assistant": + if errStr, ok := msg["error"].(string); ok && errStr == "rate_limit" { + streamErr = fmt.Errorf("claude rate limit reached: %v", msg) + } case "result": if isErr, _ := msg["is_error"].(bool); isErr { result, _ := msg["result"].(string) |
