58 lines
1.8 KiB
TypeScript
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;
|
|
}
|