feat: add /clear command to TUI
This commit is contained in:
@@ -58,6 +58,7 @@ type model struct {
|
||||
transientSteps []string
|
||||
currentStream string
|
||||
currentReasoning string
|
||||
cancel context.CancelFunc
|
||||
isThinking bool
|
||||
err error
|
||||
ready bool
|
||||
@@ -66,6 +67,17 @@ type model struct {
|
||||
renderer *glamour.TermRenderer
|
||||
}
|
||||
|
||||
func (m model) formatReasoning(reasoning string) string {
|
||||
if reasoning == "" {
|
||||
return ""
|
||||
}
|
||||
lines := strings.Split(strings.TrimSpace(reasoning), "\n")
|
||||
for i, line := range lines {
|
||||
lines[i] = "> " + line
|
||||
}
|
||||
return "> *Thinking:*\n>\n" + strings.Join(lines, "\n") + "\n"
|
||||
}
|
||||
|
||||
type agentResponseMsg struct {
|
||||
response string
|
||||
err error
|
||||
@@ -211,7 +223,7 @@ func (m model) renderMessage(msg sidekick.Message) string {
|
||||
|
||||
if m.renderer != nil {
|
||||
if reasoning != "" {
|
||||
if r, err := m.renderer.Render("> *Thinking:*\n>\n> " + reasoning); err == nil {
|
||||
if r, err := m.renderer.Render(m.formatReasoning(reasoning)); err == nil {
|
||||
reasoning = strings.TrimSpace(r) + "\n"
|
||||
}
|
||||
}
|
||||
@@ -247,7 +259,7 @@ func (m *model) updateViewportContent() {
|
||||
reasoning := m.currentReasoning
|
||||
if m.renderer != nil {
|
||||
if reasoning != "" {
|
||||
if r, err := m.renderer.Render("> *Thinking:*\n>\n> " + reasoning); err == nil {
|
||||
if r, err := m.renderer.Render(m.formatReasoning(reasoning)); err == nil {
|
||||
reasoning = strings.TrimSpace(r) + "\n"
|
||||
}
|
||||
}
|
||||
@@ -320,6 +332,20 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
return m, nil
|
||||
}
|
||||
|
||||
trimmed := strings.TrimSpace(v)
|
||||
if trimmed == "/clear" {
|
||||
m.history = []sidekick.Message{
|
||||
{Role: sidekick.MessageRoleSystem, Content: "Context cleared."},
|
||||
}
|
||||
m.currentStream = ""
|
||||
m.currentReasoning = ""
|
||||
m.transientSteps = nil
|
||||
m.textarea.Reset()
|
||||
m.updateViewportContent()
|
||||
m.viewport.GotoBottom()
|
||||
return m, nil
|
||||
}
|
||||
|
||||
m.history = append(m.history, sidekick.Message{
|
||||
Role: sidekick.MessageRoleUser,
|
||||
Content: v,
|
||||
|
||||
Reference in New Issue
Block a user