From 3506d8abf792a6ac1d6362a7469c7ed12ba061d6 Mon Sep 17 00:00:00 2001 From: David Gageot Date: Thu, 23 Apr 2026 11:24:12 +0200 Subject: [PATCH] tui: add custom component for user_prompt tool calls Render user_prompt tool calls with just the status icon and display name, without exposing the prompt message, title or schema arguments. Assisted-By: docker-agent --- pkg/tui/components/tool/factory.go | 2 ++ .../components/tool/userprompt/userprompt.go | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 pkg/tui/components/tool/userprompt/userprompt.go diff --git a/pkg/tui/components/tool/factory.go b/pkg/tui/components/tool/factory.go index 542444bea..940bcd1f7 100644 --- a/pkg/tui/components/tool/factory.go +++ b/pkg/tui/components/tool/factory.go @@ -14,6 +14,7 @@ import ( "github.com/docker/docker-agent/pkg/tui/components/tool/shell" "github.com/docker/docker-agent/pkg/tui/components/tool/todotool" "github.com/docker/docker-agent/pkg/tui/components/tool/transfertask" + "github.com/docker/docker-agent/pkg/tui/components/tool/userprompt" "github.com/docker/docker-agent/pkg/tui/components/tool/writefile" "github.com/docker/docker-agent/pkg/tui/core/layout" "github.com/docker/docker-agent/pkg/tui/service" @@ -72,6 +73,7 @@ func newDefaultRegistry() *Registry { {[]string{builtin.ToolNameDirectoryTree}, directorytree.New}, {[]string{builtin.ToolNameSearchFilesContent}, searchfilescontent.New}, {[]string{builtin.ToolNameShell}, shell.New}, + {[]string{builtin.ToolNameUserPrompt}, userprompt.New}, {[]string{builtin.ToolNameFetch, "category:api"}, api.New}, { []string{ diff --git a/pkg/tui/components/tool/userprompt/userprompt.go b/pkg/tui/components/tool/userprompt/userprompt.go new file mode 100644 index 000000000..cdfe54012 --- /dev/null +++ b/pkg/tui/components/tool/userprompt/userprompt.go @@ -0,0 +1,21 @@ +package userprompt + +import ( + "github.com/docker/docker-agent/pkg/tui/components/spinner" + "github.com/docker/docker-agent/pkg/tui/components/toolcommon" + "github.com/docker/docker-agent/pkg/tui/core/layout" + "github.com/docker/docker-agent/pkg/tui/service" + "github.com/docker/docker-agent/pkg/tui/types" +) + +// New creates a component for the user_prompt tool call. +// It intentionally does not render the tool call's arguments (the question, +// title or schema). It only indicates that a question is being asked to the +// user, via the tool's status icon and display name. +func New(msg *types.Message, sessionState service.SessionStateReader) layout.Model { + return toolcommon.NewBase(msg, sessionState, render) +} + +func render(msg *types.Message, s spinner.Spinner, sessionState service.SessionStateReader, width, _ int) string { + return toolcommon.RenderTool(msg, s, "", "", width, sessionState.HideToolResults()) +}