diff options
| author | Kujtim Hoxha <[email protected]> | 2025-04-07 19:43:31 +0200 |
|---|---|---|
| committer | Kujtim Hoxha <[email protected]> | 2025-04-07 19:43:31 +0200 |
| commit | f463ce6694143a8f17953ca029d4c274d0193edd (patch) | |
| tree | 6cb6c416fb07065303862ac461fcbad3311badb7 /internal/llm | |
| parent | 57a2210d8d81efe43a41aa09538f4e26b6f6f374 (diff) | |
| download | opencode-f463ce6694143a8f17953ca029d4c274d0193edd.tar.gz opencode-f463ce6694143a8f17953ca029d4c274d0193edd.zip | |
improve status message handling
Diffstat (limited to 'internal/llm')
| -rw-r--r-- | internal/llm/agent/agent.go | 19 | ||||
| -rw-r--r-- | internal/llm/provider/anthropic.go | 5 | ||||
| -rw-r--r-- | internal/llm/provider/provider.go | 5 |
3 files changed, 25 insertions, 4 deletions
diff --git a/internal/llm/agent/agent.go b/internal/llm/agent/agent.go index cb123e78c..baf78be65 100644 --- a/internal/llm/agent/agent.go +++ b/internal/llm/agent/agent.go @@ -15,6 +15,8 @@ import ( "github.com/kujtimiihoxha/termai/internal/llm/provider" "github.com/kujtimiihoxha/termai/internal/llm/tools" "github.com/kujtimiihoxha/termai/internal/message" + "github.com/kujtimiihoxha/termai/internal/pubsub" + "github.com/kujtimiihoxha/termai/internal/tui/util" ) type Agent interface { @@ -92,9 +94,24 @@ func (c *agent) processEvent( assistantMsg.AppendContent(event.Content) return c.Messages.Update(*assistantMsg) case provider.EventError: + // TODO: remove when realease log.Println("error", event.Error) + c.App.Status.Publish(pubsub.UpdatedEvent, util.InfoMsg{ + Type: util.InfoTypeError, + Msg: event.Error.Error(), + }) return event.Error - + case provider.EventWarning: + c.App.Status.Publish(pubsub.UpdatedEvent, util.InfoMsg{ + Type: util.InfoTypeWarn, + Msg: event.Info, + }) + return nil + case provider.EventInfo: + c.App.Status.Publish(pubsub.UpdatedEvent, util.InfoMsg{ + Type: util.InfoTypeInfo, + Msg: event.Info, + }) case provider.EventComplete: assistantMsg.SetToolCalls(event.Response.ToolCalls) assistantMsg.AddFinish(event.Response.FinishReason) diff --git a/internal/llm/provider/anthropic.go b/internal/llm/provider/anthropic.go index f42c601a5..239d67606 100644 --- a/internal/llm/provider/anthropic.go +++ b/internal/llm/provider/anthropic.go @@ -149,8 +149,8 @@ func (a *anthropicProvider) StreamResponse(ctx context.Context, messages []messa // Inform user we're retrying with attempt number eventChan <- ProviderEvent{ - Type: EventContentDelta, - Content: fmt.Sprintf("\n\n[Retrying due to rate limit... attempt %d of %d]\n\n", attempts, maxRetries), + Type: EventWarning, + Info: fmt.Sprintf("[Retrying due to rate limit... attempt %d of %d]", attempts, maxRetries), } // Calculate backoff with exponential backoff and jitter @@ -380,4 +380,3 @@ func (a *anthropicProvider) convertToAnthropicMessages(messages []message.Messag return anthropicMessages } - diff --git a/internal/llm/provider/provider.go b/internal/llm/provider/provider.go index f40429738..cd3a7aa05 100644 --- a/internal/llm/provider/provider.go +++ b/internal/llm/provider/provider.go @@ -17,6 +17,8 @@ const ( EventContentStop EventType = "content_stop" EventComplete EventType = "complete" EventError EventType = "error" + EventWarning EventType = "warning" + EventInfo EventType = "info" ) type TokenUsage struct { @@ -40,6 +42,9 @@ type ProviderEvent struct { ToolCall *message.ToolCall Error error Response *ProviderResponse + + // Used for giving users info on e.x retry + Info string } type Provider interface { |
