feat(ui): toggle tool call input YAML (#182)
* feat(ui): toggle tool call input yaml * ui: rename tool input toggle and add IO headers * ui: add input/output accordions in tool calls * ui: refine tool IO accordion styling * ui: remove extra padding around IO sections * ui: remove semibold from IO headers * feat(ui): add tool input visibility preference * fix(ui): scope tool input toggle to current tool call * ui: left-align tool IO header text * fix(ui): let palette tool input visibility override per-call * ui: default tool input visibility to collapsed * fix(ui): expand read tool calls on error --------- Co-authored-by: Shantur Rathore <i@shantur.com>
This commit is contained in:
committed by
GitHub
parent
e84adebe61
commit
9800afb785
@@ -1,6 +1,6 @@
|
||||
import { createSignal, onMount } from "solid-js"
|
||||
import type { Accessor } from "solid-js"
|
||||
import type { Preferences, ExpansionPreference } from "../../stores/preferences"
|
||||
import type { Preferences, ExpansionPreference, ToolInputsVisibilityPreference } from "../../stores/preferences"
|
||||
import { createCommandRegistry, type Command } from "../commands"
|
||||
import { instances, activeInstanceId, setActiveInstanceId } from "../../stores/instances"
|
||||
import type { ClientPart, MessageInfo } from "../../types/message"
|
||||
@@ -38,6 +38,7 @@ export interface UseCommandsOptions {
|
||||
setToolOutputExpansion: (mode: ExpansionPreference) => void
|
||||
setDiagnosticsExpansion: (mode: ExpansionPreference) => void
|
||||
setThinkingBlocksExpansion: (mode: ExpansionPreference) => void
|
||||
setToolInputsVisibility: (mode: ToolInputsVisibilityPreference) => void
|
||||
handleNewInstanceRequest: () => void
|
||||
handleCloseInstance: (instanceId: string) => Promise<void>
|
||||
handleNewSession: (instanceId: string) => Promise<void>
|
||||
@@ -551,6 +552,29 @@ export function useCommands(options: UseCommandsOptions) {
|
||||
},
|
||||
})
|
||||
|
||||
commandRegistry.register({
|
||||
id: "tool-inputs-visibility",
|
||||
label: () => {
|
||||
const mode = options.preferences().toolInputsVisibility || "hidden"
|
||||
const state =
|
||||
mode === "expanded"
|
||||
? tGlobal("commands.common.expanded")
|
||||
: mode === "collapsed"
|
||||
? tGlobal("commands.common.collapsed")
|
||||
: tGlobal("commands.common.hidden")
|
||||
return tGlobal("commands.toolInputsVisibility.label", { state })
|
||||
},
|
||||
description: () => tGlobal("commands.toolInputsVisibility.description"),
|
||||
category: "System",
|
||||
keywords: () => splitKeywords("commands.toolInputsVisibility.keywords"),
|
||||
action: () => {
|
||||
const mode = options.preferences().toolInputsVisibility || "hidden"
|
||||
const next: ToolInputsVisibilityPreference =
|
||||
mode === "hidden" ? "collapsed" : mode === "collapsed" ? "expanded" : "hidden"
|
||||
options.setToolInputsVisibility(next)
|
||||
},
|
||||
})
|
||||
|
||||
commandRegistry.register({
|
||||
id: "token-usage-visibility",
|
||||
label: () => {
|
||||
|
||||
@@ -130,6 +130,10 @@ export const commandMessages = {
|
||||
"commands.diagnosticsDefault.description": "Toggle default expansion for diagnostics output",
|
||||
"commands.diagnosticsDefault.keywords": "diagnostics, expand, collapse",
|
||||
|
||||
"commands.toolInputsVisibility.label": "Tool Inputs Visibility · {state}",
|
||||
"commands.toolInputsVisibility.description": "Set default visibility for tool call input arguments",
|
||||
"commands.toolInputsVisibility.keywords": "tool, inputs, arguments, visibility, hide, show, expand, collapse",
|
||||
|
||||
"commands.tokenUsageDisplay.label": "Token Usage Display · {state}",
|
||||
"commands.tokenUsageDisplay.description": "Show or hide token and cost stats for assistant messages",
|
||||
"commands.tokenUsageDisplay.keywords": "token, usage, cost, stats",
|
||||
|
||||
@@ -5,6 +5,14 @@ export const toolCallMessages = {
|
||||
"toolCall.header.copyTitle": "Copy tool call title",
|
||||
"toolCall.header.copyAriaLabel": "Copy tool call title",
|
||||
|
||||
"toolCall.header.showInputTitle": "Show Tool Arguments",
|
||||
"toolCall.header.showInputAriaLabel": "Show Tool Arguments",
|
||||
"toolCall.header.hideInputTitle": "Hide Tool Arguments",
|
||||
"toolCall.header.hideInputAriaLabel": "Hide Tool Arguments",
|
||||
|
||||
"toolCall.io.input": "Tool Input",
|
||||
"toolCall.io.output": "Tool Output",
|
||||
|
||||
"toolCall.diff.label": "Diff",
|
||||
"toolCall.diff.label.withPath": "Diff · {path}",
|
||||
"toolCall.diff.viewMode.ariaLabel": "Diff view mode",
|
||||
|
||||
@@ -130,6 +130,10 @@ export const commandMessages = {
|
||||
"commands.diagnosticsDefault.description": "Alternar la expansión por defecto de la salida de diagnósticos",
|
||||
"commands.diagnosticsDefault.keywords": "diagnósticos, expandir, colapsar",
|
||||
|
||||
"commands.toolInputsVisibility.label": "Visibilidad de entradas de herramientas · {state}",
|
||||
"commands.toolInputsVisibility.description": "Configurar la visibilidad por defecto de los argumentos de entrada de llamadas de herramienta",
|
||||
"commands.toolInputsVisibility.keywords": "herramienta, entradas, argumentos, visibilidad, ocultar, mostrar, expandir, colapsar",
|
||||
|
||||
"commands.tokenUsageDisplay.label": "Mostrar uso de tokens · {state}",
|
||||
"commands.tokenUsageDisplay.description": "Mostrar u ocultar estadísticas de tokens y costo en los mensajes del asistente",
|
||||
"commands.tokenUsageDisplay.keywords": "token, uso, costo, estadísticas",
|
||||
|
||||
@@ -5,6 +5,14 @@ export const toolCallMessages = {
|
||||
"toolCall.header.copyTitle": "Copy tool call title",
|
||||
"toolCall.header.copyAriaLabel": "Copy tool call title",
|
||||
|
||||
"toolCall.header.showInputTitle": "Show Tool Arguments",
|
||||
"toolCall.header.showInputAriaLabel": "Show Tool Arguments",
|
||||
"toolCall.header.hideInputTitle": "Hide Tool Arguments",
|
||||
"toolCall.header.hideInputAriaLabel": "Hide Tool Arguments",
|
||||
|
||||
"toolCall.io.input": "Tool Input",
|
||||
"toolCall.io.output": "Tool Output",
|
||||
|
||||
"toolCall.diff.label": "Diff",
|
||||
"toolCall.diff.label.withPath": "Diff · {path}",
|
||||
"toolCall.diff.viewMode.ariaLabel": "Modo de vista de diff",
|
||||
|
||||
@@ -130,6 +130,10 @@ export const commandMessages = {
|
||||
"commands.diagnosticsDefault.description": "Choisir l'ouverture par défaut de la sortie des diagnostics",
|
||||
"commands.diagnosticsDefault.keywords": "diagnostics, développer, réduire",
|
||||
|
||||
"commands.toolInputsVisibility.label": "Visibilité des entrées d'outil · {state}",
|
||||
"commands.toolInputsVisibility.description": "Définir la visibilité par défaut des arguments d'entrée des appels d'outil",
|
||||
"commands.toolInputsVisibility.keywords": "outil, entrées, arguments, visibilité, masquer, afficher, développer, réduire",
|
||||
|
||||
"commands.tokenUsageDisplay.label": "Affichage de l'usage des tokens · {state}",
|
||||
"commands.tokenUsageDisplay.description": "Afficher ou masquer les stats de tokens et de coût pour les messages de l'assistant",
|
||||
"commands.tokenUsageDisplay.keywords": "token, usage, coût, stats",
|
||||
|
||||
@@ -5,6 +5,14 @@ export const toolCallMessages = {
|
||||
"toolCall.header.copyTitle": "Copy tool call title",
|
||||
"toolCall.header.copyAriaLabel": "Copy tool call title",
|
||||
|
||||
"toolCall.header.showInputTitle": "Show Tool Arguments",
|
||||
"toolCall.header.showInputAriaLabel": "Show Tool Arguments",
|
||||
"toolCall.header.hideInputTitle": "Hide Tool Arguments",
|
||||
"toolCall.header.hideInputAriaLabel": "Hide Tool Arguments",
|
||||
|
||||
"toolCall.io.input": "Tool Input",
|
||||
"toolCall.io.output": "Tool Output",
|
||||
|
||||
"toolCall.diff.label": "Diff",
|
||||
"toolCall.diff.label.withPath": "Diff · {path}",
|
||||
"toolCall.diff.viewMode.ariaLabel": "Mode d'affichage du diff",
|
||||
|
||||
@@ -130,6 +130,10 @@ export const commandMessages = {
|
||||
"commands.diagnosticsDefault.description": "診断出力を既定で展開するか切り替え",
|
||||
"commands.diagnosticsDefault.keywords": "診断, 展開, 折りたたみ, diagnostics, expand, collapse",
|
||||
|
||||
"commands.toolInputsVisibility.label": "ツール入力の表示 · {state}",
|
||||
"commands.toolInputsVisibility.description": "ツール呼び出しの入力引数の既定の表示状態を設定します",
|
||||
"commands.toolInputsVisibility.keywords": "ツール, 入力, 引数, 表示, 非表示, 展開, 折りたたみ, tool, inputs, arguments, visibility, hide, show, expand, collapse",
|
||||
|
||||
"commands.tokenUsageDisplay.label": "トークン使用量表示 · {state}",
|
||||
"commands.tokenUsageDisplay.description": "アシスタントメッセージのトークン/コスト統計を表示/非表示",
|
||||
"commands.tokenUsageDisplay.keywords": "トークン, 使用量, コスト, 統計, token, usage, cost, stats",
|
||||
|
||||
@@ -5,6 +5,14 @@ export const toolCallMessages = {
|
||||
"toolCall.header.copyTitle": "Copy tool call title",
|
||||
"toolCall.header.copyAriaLabel": "Copy tool call title",
|
||||
|
||||
"toolCall.header.showInputTitle": "Show Tool Arguments",
|
||||
"toolCall.header.showInputAriaLabel": "Show Tool Arguments",
|
||||
"toolCall.header.hideInputTitle": "Hide Tool Arguments",
|
||||
"toolCall.header.hideInputAriaLabel": "Hide Tool Arguments",
|
||||
|
||||
"toolCall.io.input": "Tool Input",
|
||||
"toolCall.io.output": "Tool Output",
|
||||
|
||||
"toolCall.diff.label": "Diff",
|
||||
"toolCall.diff.label.withPath": "Diff · {path}",
|
||||
"toolCall.diff.viewMode.ariaLabel": "diff 表示モード",
|
||||
|
||||
@@ -130,6 +130,10 @@ export const commandMessages = {
|
||||
"commands.diagnosticsDefault.description": "Переключить, разворачивать ли вывод диагностики по умолчанию",
|
||||
"commands.diagnosticsDefault.keywords": "diagnostics, развернуть, свернуть",
|
||||
|
||||
"commands.toolInputsVisibility.label": "Видимость входных данных инструмента · {state}",
|
||||
"commands.toolInputsVisibility.description": "Установить видимость аргументов входа вызовов инструментов по умолчанию",
|
||||
"commands.toolInputsVisibility.keywords": "инструмент, вход, аргументы, видимость, скрыть, показать, раскрыть, свернуть, tool, inputs, arguments, visibility, hide, show, expand, collapse",
|
||||
|
||||
"commands.tokenUsageDisplay.label": "Отображение token-статистики · {state}",
|
||||
"commands.tokenUsageDisplay.description": "Показать или скрыть статистику token и стоимости для сообщений ассистента",
|
||||
"commands.tokenUsageDisplay.keywords": "token, usage, cost, статистика",
|
||||
|
||||
@@ -5,6 +5,14 @@ export const toolCallMessages = {
|
||||
"toolCall.header.copyTitle": "Copy tool call title",
|
||||
"toolCall.header.copyAriaLabel": "Copy tool call title",
|
||||
|
||||
"toolCall.header.showInputTitle": "Show Tool Arguments",
|
||||
"toolCall.header.showInputAriaLabel": "Show Tool Arguments",
|
||||
"toolCall.header.hideInputTitle": "Hide Tool Arguments",
|
||||
"toolCall.header.hideInputAriaLabel": "Hide Tool Arguments",
|
||||
|
||||
"toolCall.io.input": "Tool Input",
|
||||
"toolCall.io.output": "Tool Output",
|
||||
|
||||
"toolCall.diff.label": "Diff",
|
||||
"toolCall.diff.label.withPath": "Diff · {path}",
|
||||
"toolCall.diff.viewMode.ariaLabel": "Режим просмотра diff",
|
||||
|
||||
@@ -130,6 +130,10 @@ export const commandMessages = {
|
||||
"commands.diagnosticsDefault.description": "切换诊断输出是否默认展开",
|
||||
"commands.diagnosticsDefault.keywords": "diagnostics, expand, collapse, 诊断, 展开, 折叠",
|
||||
|
||||
"commands.toolInputsVisibility.label": "工具输入可见性 · {state}",
|
||||
"commands.toolInputsVisibility.description": "设置工具调用输入参数的默认可见性",
|
||||
"commands.toolInputsVisibility.keywords": "工具, 输入, 参数, 可见性, 隐藏, 显示, 展开, 折叠, tool, inputs, arguments, visibility, hide, show, expand, collapse",
|
||||
|
||||
"commands.tokenUsageDisplay.label": "Token 使用显示 · {state}",
|
||||
"commands.tokenUsageDisplay.description": "显示或隐藏助手消息的 token 和费用统计",
|
||||
"commands.tokenUsageDisplay.keywords": "token, usage, cost, stats, 令牌, 用量, 费用, 统计",
|
||||
|
||||
@@ -5,6 +5,14 @@ export const toolCallMessages = {
|
||||
"toolCall.header.copyTitle": "Copy tool call title",
|
||||
"toolCall.header.copyAriaLabel": "Copy tool call title",
|
||||
|
||||
"toolCall.header.showInputTitle": "Show Tool Arguments",
|
||||
"toolCall.header.showInputAriaLabel": "Show Tool Arguments",
|
||||
"toolCall.header.hideInputTitle": "Hide Tool Arguments",
|
||||
"toolCall.header.hideInputAriaLabel": "Hide Tool Arguments",
|
||||
|
||||
"toolCall.io.input": "Tool Input",
|
||||
"toolCall.io.output": "Tool Output",
|
||||
|
||||
"toolCall.diff.label": "Diff",
|
||||
"toolCall.diff.label.withPath": "Diff · {path}",
|
||||
"toolCall.diff.viewMode.ariaLabel": "Diff 视图模式",
|
||||
|
||||
Reference in New Issue
Block a user