diff --git a/internal/app/app.go b/internal/app/app.go index d63c90c6e2599f63e3a65cd8069b53638f45cc5f..9cb3fefbd2260c7498e8bd51ac08946363f6ed05 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -157,16 +157,20 @@ func (app *App) RunNonInteractive(ctx context.Context, prompt string, quiet bool if result.Error != nil { if errors.Is(result.Error, context.Canceled) || errors.Is(result.Error, agent.ErrRequestCancelled) { - slog.Info("Agent processing cancelled", "session_id", sess.ID) + slog.Info("Non-interactive: agent processing cancelled", "session_id", sess.ID) return nil } return fmt.Errorf("agent processing failed: %w", result.Error) } - part := result.Message.Content().String()[readBts:] - fmt.Println(part) + msgContent := result.Message.Content().String() + if len(msgContent) < readBts { + slog.Error("Non-interactive: message content is shorter than read bytes", "message_length", len(msgContent), "read_bytes", readBts) + return fmt.Errorf("message content is shorter than read bytes: %d < %d", len(msgContent), readBts) + } + fmt.Println(msgContent[readBts:]) - slog.Info("Non-interactive run completed", "session_id", sess.ID) + slog.Info("Non-interactive: run completed", "session_id", sess.ID) return nil case event := <-messageEvents: