diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-06-04 00:53:03 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-06-04 00:53:03 +0000 |
| commit | a6ad24d9d4524ebef6ed40edf90c6597be876fbd (patch) | |
| tree | 390028656c505ee1b92d7297a937749562666a41 /internal/executor/helpers.go | |
| parent | 0d537df08fea539022cbcffe3ea778a3c84e7fb7 (diff) | |
cli: add --repository-url flag and improve error reporting
Diffstat (limited to 'internal/executor/helpers.go')
| -rw-r--r-- | internal/executor/helpers.go | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/internal/executor/helpers.go b/internal/executor/helpers.go index 9517492..f2111a4 100644 --- a/internal/executor/helpers.go +++ b/internal/executor/helpers.go @@ -33,7 +33,6 @@ func parseStream(r io.Reader, w io.Writer, logger *slog.Logger) (float64, string var sessionID string var streamErr error -Loop: for scanner.Scan() { line := scanner.Bytes() var msg map[string]interface{} @@ -53,22 +52,26 @@ Loop: 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 (rejected): %v", msg) - // Immediately break since we can't continue anyway - break Loop + if streamErr == nil { + streamErr = fmt.Errorf("claude rate limit reached (rejected): %v", msg) + } } } case "assistant": if errStr, ok := msg["error"].(string); ok && errStr == "rate_limit" { - streamErr = fmt.Errorf("claude rate limit reached: %v", msg) + if streamErr == nil { + streamErr = fmt.Errorf("claude rate limit reached: %v", msg) + } } case "result": if isErr, _ := msg["is_error"].(bool); isErr { - result, _ := msg["result"].(string) - if result != "" { - streamErr = fmt.Errorf("claude task failed: %s", result) - } else { - streamErr = fmt.Errorf("claude task failed (is_error=true in result)") + if streamErr == nil { + result, _ := msg["result"].(string) + if result != "" { + streamErr = fmt.Errorf("claude task failed: %s", result) + } else { + streamErr = fmt.Errorf("claude task failed (is_error=true in result)") + } } } // Prefer total_cost_usd from result message; fall through to legacy check below. |
