agent-ecosystem/src/renderer/utils/toolRendering/toolContentChecks.ts

58 lines
1.8 KiB
TypeScript

/**
* Tool Content Check Helpers
*
* Utilities for checking if tool items have specific types of content.
*/
import type { LinkedToolItem } from '@renderer/types/groups';
/**
* Checks if a Skill tool has skill instructions.
*/
export function hasSkillInstructions(linkedTool: LinkedToolItem): boolean {
return !!linkedTool.skillInstructions;
}
/**
* Checks if a Read tool has content to display.
*/
export function hasReadContent(linkedTool: LinkedToolItem): boolean {
if (!linkedTool.result) return false;
const toolUseResult = linkedTool.result.toolUseResult as Record<string, unknown> | undefined;
const fileData = toolUseResult?.file as { content?: string } | undefined;
if (fileData?.content) return true;
if (linkedTool.result.content != null) {
if (typeof linkedTool.result.content === 'string' && linkedTool.result.content.length > 0)
return true;
if (Array.isArray(linkedTool.result.content) && linkedTool.result.content.length > 0)
return true;
}
return false;
}
/**
* Checks if an Edit tool has content to display.
*/
export function hasEditContent(linkedTool: LinkedToolItem): boolean {
if (linkedTool.input.old_string != null) return true;
const toolUseResult = linkedTool.result?.toolUseResult as Record<string, unknown> | undefined;
if (toolUseResult?.oldString != null || toolUseResult?.newString != null) return true;
return false;
}
/**
* Checks if a Write tool has content to display.
*/
export function hasWriteContent(linkedTool: LinkedToolItem): boolean {
if (linkedTool.input.content != null || linkedTool.input.file_path != null) return true;
const toolUseResult = linkedTool.result?.toolUseResult as Record<string, unknown> | undefined;
if (toolUseResult?.content != null || toolUseResult?.filePath != null) return true;
return false;
}