58 lines · 1.8 KB · TypeScript
RawDownload
/** * 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;}