(props: { name: any; content: any })
| 414 | } |
| 415 | |
| 416 | export function ToolResult(props: { name: any; content: any }): React.ReactElement { |
| 417 | const name = String(props.name || ""); |
| 418 | const raw = props.content; |
| 419 | const parsed = parseLeadingJSON(raw); |
| 420 | const data = parsed ? parsed.value : undefined; |
| 421 | const note = (parsed && parsed.rest) ? parsed.rest : ""; |
| 422 | let body: any = null; |
| 423 | try { |
| 424 | if ((name === "terminal" || name === "process" || name === "execute_code" || name === "shell") |
| 425 | && data && typeof data === "object") body = <ToolOutput data={data} />; |
| 426 | else if (name === "read_file" && data) body = <ToolReadFile data={data} />; |
| 427 | else if (name === "search_files" && data) body = <ToolSearchFiles data={data} />; |
| 428 | else if (name === "todo" && data) body = <ToolTodo data={data} />; |
| 429 | else if (name === "patch") body = <ToolPatch data={data} raw={raw} />; |
| 430 | else if (name === "skill_view" && data) body = <ToolSkill data={data} />; |
| 431 | else if (data && typeof data === "object") body = <ToolGeneric data={data} />; |
| 432 | } catch (e) { body = null; } |
| 433 | if (body == null) { |
| 434 | return <MarkdownText className="hermes-lcm-msg-body" text={short(String(raw == null ? "" : raw), 4000)} />; |
| 435 | } |
| 436 | if (note) { |
| 437 | return ( |
| 438 | <div className="hermes-lcm-tool"> |
| 439 | {body} |
| 440 | <div className="hermes-lcm-dim hermes-lcm-tool-note">{short(note, 400)}</div> |
| 441 | </div> |
| 442 | ); |
| 443 | } |
| 444 | return body; |
| 445 | } |
| 446 | |
| 447 | // --- list rows ------------------------------------------------------------- |
| 448 |
nothing calls this directly
no test coverage detected