summaryrefslogtreecommitdiffhomepage
path: root/internal/llm
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-07 19:43:31 +0200
committerKujtim Hoxha <[email protected]>2025-04-07 19:43:31 +0200
commitf463ce6694143a8f17953ca029d4c274d0193edd (patch)
tree6cb6c416fb07065303862ac461fcbad3311badb7 /internal/llm
parent57a2210d8d81efe43a41aa09538f4e26b6f6f374 (diff)
downloadopencode-f463ce6694143a8f17953ca029d4c274d0193edd.tar.gz
opencode-f463ce6694143a8f17953ca029d4c274d0193edd.zip
improve status message handling
Diffstat (limited to 'internal/llm')
-rw-r--r--internal/llm/agent/agent.go19
-rw-r--r--internal/llm/provider/anthropic.go5
-rw-r--r--internal/llm/provider/provider.go5
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 {