From 614a23698fcbdf89d8e5ccfee68c42b70633e7b6 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 31 Jul 2025 16:51:55 -0400 Subject: wip: permissions --- packages/tui/internal/components/chat/messages.go | 2 +- packages/tui/internal/tui/tui.go | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'packages/tui/internal') diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index db8e7cf66..a4e861d6a 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -200,7 +200,7 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case opencode.EventListResponseEventPermissionUpdated: m.tail = true return m, m.renderView() - case app.PermissionRespondedToMsg: + case opencode.EventListResponseEventPermissionReplied: m.tail = true return m, m.renderView() case renderCompleteMsg: diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index 3d08c2afa..f108971da 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -143,7 +143,7 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return toast.NewErrorToast("Failed to respond to permission request") } slog.Debug("Responded to permission request", "response", resp) - return app.PermissionRespondedToMsg{Response: response} + return nil } } } @@ -522,8 +522,21 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { slog.Debug("permission updated", "session", msg.Properties.SessionID, "permission", msg.Properties.ID) a.app.Permissions = append(a.app.Permissions, msg.Properties) a.app.CurrentPermission = a.app.Permissions[0] - cmds = append(cmds, toast.NewInfoToast(msg.Properties.Title, toast.WithTitle("Permission requested"))) a.editor.Blur() + case opencode.EventListResponseEventPermissionReplied: + index := slices.IndexFunc(a.app.Permissions, func(p opencode.Permission) bool { + return p.ID == msg.Properties.PermissionID + }) + if index > -1 { + a.app.Permissions = append(a.app.Permissions[:index], a.app.Permissions[index+1:]...) + } + if a.app.CurrentPermission.ID == msg.Properties.PermissionID { + if len(a.app.Permissions) > 0 { + a.app.CurrentPermission = a.app.Permissions[0] + } else { + a.app.CurrentPermission = opencode.Permission{} + } + } case opencode.EventListResponseEventSessionError: switch err := msg.Properties.Error.AsUnion().(type) { case nil: -- cgit v1.2.3