Add diagnostics context to environment details

This commit is contained in:
Saoud Rizwan
2024-09-14 13:45:41 -04:00
parent a6ff000ac8
commit d29f4a174c
6 changed files with 205 additions and 70 deletions

View File

@@ -22,7 +22,7 @@ export async function downloadTask(dateTs: number, conversationHistory: Anthropi
.map((message) => {
const role = message.role === "user" ? "**User:**" : "**Assistant:**"
const content = Array.isArray(message.content)
? message.content.map(formatContentBlockToMarkdown).join("\n")
? message.content.map((block) => formatContentBlockToMarkdown(block, conversationHistory)).join("\n")
: message.content
return `${role}\n\n${content}\n\n`
})
@@ -46,7 +46,8 @@ export function formatContentBlockToMarkdown(
| Anthropic.TextBlockParam
| Anthropic.ImageBlockParam
| Anthropic.ToolUseBlockParam
| Anthropic.ToolResultBlockParam
| Anthropic.ToolResultBlockParam,
messages: Anthropic.MessageParam[]
): string {
switch (block.type) {
case "text":
@@ -64,16 +65,30 @@ export function formatContentBlockToMarkdown(
}
return `[Tool Use: ${block.name}]\n${input}`
case "tool_result":
const toolName = findToolName(block.tool_use_id, messages)
if (typeof block.content === "string") {
return `[Tool Result${block.is_error ? " (Error)" : ""}]\n${block.content}`
return `[${toolName}${block.is_error ? " (Error)" : ""}]\n${block.content}`
} else if (Array.isArray(block.content)) {
return `[Tool Result${block.is_error ? " (Error)" : ""}]\n${block.content
.map(formatContentBlockToMarkdown)
return `[${toolName}${block.is_error ? " (Error)" : ""}]\n${block.content
.map((contentBlock) => formatContentBlockToMarkdown(contentBlock, messages))
.join("\n")}`
} else {
return `[Tool Result${block.is_error ? " (Error)" : ""}]`
return `[${toolName}${block.is_error ? " (Error)" : ""}]`
}
default:
return "[Unexpected content type]"
}
}
function findToolName(toolCallId: string, messages: Anthropic.MessageParam[]): string {
for (const message of messages) {
if (Array.isArray(message.content)) {
for (const block of message.content) {
if (block.type === "tool_use" && block.id === toolCallId) {
return block.name
}
}
}
}
return "Unknown Tool"
}