fix: collapse agent command output by default (#25748)

This commit is contained in:
Danielle Maywood
2026-05-28 16:54:52 +01:00
committed by GitHub
parent df929467f6
commit 0d1340a430
5 changed files with 18 additions and 9 deletions
+12 -4
View File
@@ -1336,7 +1336,7 @@ func (api *API) userPreferenceSettings(rw http.ResponseWriter, r *http.Request)
httpapi.Write(ctx, rw, http.StatusOK, codersdk.UserPreferenceSettings{
TaskNotificationAlertDismissed: taskAlertDismissed,
ThinkingDisplayMode: sanitizeThinkingDisplayMode(thinkingMode),
ShellToolDisplayMode: sanitizeAgentDisplayMode(shellToolMode),
ShellToolDisplayMode: sanitizeShellToolDisplayMode(shellToolMode),
CodeDiffDisplayMode: sanitizeAgentDisplayMode(codeDiffMode),
AgentChatSendShortcut: sanitizeAgentChatSendShortcut(agentChatSendShortcut),
})
@@ -1446,13 +1446,13 @@ func (api *API) putUserPreferenceSettings(rw http.ResponseWriter, r *http.Reques
if err != nil {
return newUserPreferenceSettingsAPIError("Internal error updating shell tool display mode.", err)
}
settings.ShellToolDisplayMode = sanitizeAgentDisplayMode(updated)
settings.ShellToolDisplayMode = sanitizeShellToolDisplayMode(updated)
} else {
stored, err := tx.GetUserShellToolDisplayMode(ctx, user.ID)
if err != nil && !errors.Is(err, sql.ErrNoRows) {
return newUserPreferenceSettingsAPIError("Error reading shell tool display mode.", err)
}
settings.ShellToolDisplayMode = sanitizeAgentDisplayMode(stored)
settings.ShellToolDisplayMode = sanitizeShellToolDisplayMode(stored)
}
if params.CodeDiffDisplayMode != "" {
@@ -1545,12 +1545,20 @@ func sanitizeThinkingDisplayMode(raw string) codersdk.ThinkingDisplayMode {
return codersdk.ThinkingDisplayModeAuto
}
func sanitizeShellToolDisplayMode(raw string) codersdk.AgentDisplayMode {
mode := sanitizeAgentDisplayMode(raw)
if mode == "" {
return codersdk.AgentDisplayModeAlwaysCollapsed
}
return mode
}
func sanitizeAgentDisplayMode(raw string) codersdk.AgentDisplayMode {
mode := codersdk.AgentDisplayMode(raw)
if slices.Contains(codersdk.ValidAgentDisplayModes, mode) {
return mode
}
return codersdk.AgentDisplayModeAuto
return ""
}
func sanitizeAgentChatSendShortcut(raw string) codersdk.AgentChatSendShortcut {
+3 -3
View File
@@ -2423,7 +2423,7 @@ func TestAgentDisplayModePreferences(t *testing.T) {
require.Equal(t, field, sdkErr.Validations[0].Field)
}
t.Run("defaults to auto", func(t *testing.T) {
t.Run("defaults shell tools to always collapsed", func(t *testing.T) {
t.Parallel()
client, _ := coderdtest.CreateAnotherUser(t, adminClient, firstUser.OrganizationID)
@@ -2433,8 +2433,8 @@ func TestAgentDisplayModePreferences(t *testing.T) {
settings, err := client.GetUserPreferenceSettings(ctx, codersdk.Me)
require.NoError(t, err)
require.Equal(t, codersdk.AgentDisplayModeAuto, settings.ShellToolDisplayMode)
require.Equal(t, codersdk.AgentDisplayModeAuto, settings.CodeDiffDisplayMode)
require.Equal(t, codersdk.AgentDisplayModeAlwaysCollapsed, settings.ShellToolDisplayMode)
require.Empty(t, settings.CodeDiffDisplayMode)
})
t.Run("round-trips shell tool display mode", func(t *testing.T) {
@@ -297,7 +297,7 @@ export const BlockList: FC<{
const thinkingDisplayMode: ThinkingDisplayMode =
prefQuery.data?.thinking_display_mode || "auto";
const shellToolDisplayMode: TypesGen.AgentDisplayMode =
prefQuery.data?.shell_tool_display_mode || "auto";
prefQuery.data?.shell_tool_display_mode || "always_collapsed";
const codeDiffDisplayMode: TypesGen.AgentDisplayMode =
prefQuery.data?.code_diff_display_mode || "auto";
@@ -282,7 +282,7 @@ export const ThinkingDuringStreamingWithToolCalls: Story = {
expect(canvas.getAllByText("Thinking").length).toBeGreaterThanOrEqual(1);
const executeButton = canvas.getByRole("button", {
name: /collapse command/i,
name: /expand command/i,
});
const readFileLabel = canvas.getByText(/reading README\.md/i);
const thinkingText = canvas.getAllByText("Thinking").at(-1);
@@ -299,6 +299,7 @@ export const ExecuteModelIntent: Story = {
export const ExecuteModelIntentRunning: Story = {
args: {
shellToolDisplayMode: "always_expanded",
status: "running",
args: {
command: executeCommand,