feat: Use the screen, goose (#4905)
This commit is contained in:
@@ -38,15 +38,15 @@ export function ToolCallArguments({ args }: ToolCallArgumentsProps) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="font-sans text-sm mb-2">
|
<div className={`font-sans text-sm mb-2 ${isExpanded ? '' : 'truncate min-w-0'}`}>
|
||||||
<div className="flex flex-row items-stretch">
|
<div className={`flex flex-row items-stretch ${isExpanded ? '' : 'truncate min-w-0'}`}>
|
||||||
<button
|
<button
|
||||||
onClick={() => toggleKey(key)}
|
onClick={() => toggleKey(key)}
|
||||||
className="flex text-left text-textSubtle min-w-[140px]"
|
className="flex text-left text-textSubtle min-w-[140px]"
|
||||||
>
|
>
|
||||||
<span>{key}</span>
|
<span>{key}</span>
|
||||||
</button>
|
</button>
|
||||||
<div className="w-full flex items-stretch">
|
<div className={`w-full flex items-stretch ${isExpanded ? '' : 'truncate min-w-0'}`}>
|
||||||
{isExpanded ? (
|
{isExpanded ? (
|
||||||
<div>
|
<div>
|
||||||
<MarkdownContent
|
<MarkdownContent
|
||||||
@@ -55,8 +55,11 @@ export function ToolCallArguments({ args }: ToolCallArgumentsProps) {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<button onClick={() => toggleKey(key)} className="text-left text-textPlaceholder">
|
<button
|
||||||
{value.slice(0, 60)}...
|
onClick={() => toggleKey(key)}
|
||||||
|
className={`text-left text-textPlaceholder ${isExpanded ? '' : 'truncate min-w-0'}`}
|
||||||
|
>
|
||||||
|
{value}
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ function ToolCallExpandable({
|
|||||||
className="group w-full flex justify-between items-center pr-2 transition-colors rounded-none"
|
className="group w-full flex justify-between items-center pr-2 transition-colors rounded-none"
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
>
|
>
|
||||||
<span className="flex items-center font-sans text-sm">{label}</span>
|
<span className="flex items-center font-sans text-sm truncate flex-1 min-w-0">{label}</span>
|
||||||
<ChevronRight
|
<ChevronRight
|
||||||
className={cn(
|
className={cn(
|
||||||
'group-hover:opacity-100 transition-transform opacity-70',
|
'group-hover:opacity-100 transition-transform opacity-70',
|
||||||
@@ -286,36 +286,32 @@ function ToolCallView({
|
|||||||
return typeof value === 'string' ? value : JSON.stringify(value);
|
return typeof value === 'string' ? value : JSON.stringify(value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const truncate = (str: string, maxLength: number = 50): string => {
|
|
||||||
return str.length > maxLength ? str.substring(0, maxLength) + '...' : str;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Generate descriptive text based on tool type
|
// Generate descriptive text based on tool type
|
||||||
switch (toolName) {
|
switch (toolName) {
|
||||||
case 'text_editor':
|
case 'text_editor':
|
||||||
if (args.command === 'write' && args.path) {
|
if (args.command === 'write' && args.path) {
|
||||||
return `writing ${truncate(getStringValue(args.path))}`;
|
return `writing ${getStringValue(args.path)}`;
|
||||||
}
|
}
|
||||||
if (args.command === 'view' && args.path) {
|
if (args.command === 'view' && args.path) {
|
||||||
return `reading ${truncate(getStringValue(args.path))}`;
|
return `reading ${getStringValue(args.path)}`;
|
||||||
}
|
}
|
||||||
if (args.command === 'str_replace' && args.path) {
|
if (args.command === 'str_replace' && args.path) {
|
||||||
return `editing ${truncate(getStringValue(args.path))}`;
|
return `editing ${getStringValue(args.path)}`;
|
||||||
}
|
}
|
||||||
if (args.command && args.path) {
|
if (args.command && args.path) {
|
||||||
return `${getStringValue(args.command)} ${truncate(getStringValue(args.path))}`;
|
return `${getStringValue(args.command)} ${getStringValue(args.path)}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'shell':
|
case 'shell':
|
||||||
if (args.command) {
|
if (args.command) {
|
||||||
return `running ${truncate(getStringValue(args.command))}`;
|
return `running ${getStringValue(args.command)}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'search':
|
case 'search':
|
||||||
if (args.name) {
|
if (args.name) {
|
||||||
return `searching for "${truncate(getStringValue(args.name))}"`;
|
return `searching for "${getStringValue(args.name)}"`;
|
||||||
}
|
}
|
||||||
if (args.mimeType) {
|
if (args.mimeType) {
|
||||||
return `searching for ${getStringValue(args.mimeType)} files`;
|
return `searching for ${getStringValue(args.mimeType)} files`;
|
||||||
@@ -326,30 +322,30 @@ function ToolCallView({
|
|||||||
if (args.uri) {
|
if (args.uri) {
|
||||||
const uri = getStringValue(args.uri);
|
const uri = getStringValue(args.uri);
|
||||||
const fileId = uri.replace('gdrive:///', '');
|
const fileId = uri.replace('gdrive:///', '');
|
||||||
return `reading file ${truncate(fileId)}`;
|
return `reading file ${fileId}`;
|
||||||
}
|
}
|
||||||
if (args.url) {
|
if (args.url) {
|
||||||
return `reading ${truncate(getStringValue(args.url))}`;
|
return `reading ${getStringValue(args.url)}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'create_file':
|
case 'create_file':
|
||||||
if (args.name) {
|
if (args.name) {
|
||||||
return `creating ${truncate(getStringValue(args.name))}`;
|
return `creating ${getStringValue(args.name)}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'update_file':
|
case 'update_file':
|
||||||
if (args.fileId) {
|
if (args.fileId) {
|
||||||
return `updating file ${truncate(getStringValue(args.fileId))}`;
|
return `updating file ${getStringValue(args.fileId)}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'sheets_tool': {
|
case 'sheets_tool': {
|
||||||
if (args.operation && args.spreadsheetId) {
|
if (args.operation && args.spreadsheetId) {
|
||||||
const operation = getStringValue(args.operation);
|
const operation = getStringValue(args.operation);
|
||||||
const sheetId = truncate(getStringValue(args.spreadsheetId));
|
const sheetId = getStringValue(args.spreadsheetId);
|
||||||
return `${operation} in sheet ${sheetId}`;
|
return `${operation} in sheet ${sheetId}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -358,7 +354,7 @@ function ToolCallView({
|
|||||||
case 'docs_tool': {
|
case 'docs_tool': {
|
||||||
if (args.operation && args.documentId) {
|
if (args.operation && args.documentId) {
|
||||||
const operation = getStringValue(args.operation);
|
const operation = getStringValue(args.operation);
|
||||||
const docId = truncate(getStringValue(args.documentId));
|
const docId = getStringValue(args.documentId);
|
||||||
return `${operation} in document ${docId}`;
|
return `${operation} in document ${docId}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -366,13 +362,13 @@ function ToolCallView({
|
|||||||
|
|
||||||
case 'web_scrape':
|
case 'web_scrape':
|
||||||
if (args.url) {
|
if (args.url) {
|
||||||
return `scraping ${truncate(getStringValue(args.url))}`;
|
return `scraping ${getStringValue(args.url)}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'remember_memory':
|
case 'remember_memory':
|
||||||
if (args.category && args.data) {
|
if (args.category && args.data) {
|
||||||
return `storing ${getStringValue(args.category)}: ${truncate(getStringValue(args.data))}`;
|
return `storing ${getStringValue(args.category)}: ${getStringValue(args.data)}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -384,7 +380,7 @@ function ToolCallView({
|
|||||||
|
|
||||||
case 'screen_capture':
|
case 'screen_capture':
|
||||||
if (args.window_title) {
|
if (args.window_title) {
|
||||||
return `capturing window "${truncate(getStringValue(args.window_title))}"`;
|
return `capturing window "${getStringValue(args.window_title)}"`;
|
||||||
}
|
}
|
||||||
return `capturing screen`;
|
return `capturing screen`;
|
||||||
|
|
||||||
@@ -414,8 +410,7 @@ function ToolCallView({
|
|||||||
if (entries.length === 1) {
|
if (entries.length === 1) {
|
||||||
const [key, value] = entries[0];
|
const [key, value] = entries[0];
|
||||||
const stringValue = getStringValue(value);
|
const stringValue = getStringValue(value);
|
||||||
const truncatedValue = truncate(stringValue, 30);
|
return `${toolDisplayName} ${key}: ${stringValue}`;
|
||||||
return `${toolDisplayName} ${key}: ${truncatedValue}`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// For multiple parameters, show tool name and keys
|
// For multiple parameters, show tool name and keys
|
||||||
@@ -458,12 +453,12 @@ function ToolCallView({
|
|||||||
const toolLabel = (
|
const toolLabel = (
|
||||||
<span
|
<span
|
||||||
className={cn(
|
className={cn(
|
||||||
'flex items-center gap-2',
|
'flex items-center gap-2 min-w-0',
|
||||||
extensionTooltip && 'cursor-pointer hover:opacity-80'
|
extensionTooltip && 'cursor-pointer hover:opacity-80'
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<ToolIconWithStatus ToolIcon={getToolCallIcon(toolCall.name)} status={toolCallStatus} />
|
<ToolIconWithStatus ToolIcon={getToolCallIcon(toolCall.name)} status={toolCallStatus} />
|
||||||
<span>{getToolLabelContent()}</span>
|
<span className="truncate flex-1 min-w-0">{getToolLabelContent()}</span>
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user