Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 9 additions & 27 deletions src/entrypoints/update-comment-link.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ async function run() {
} | null = null;
let actionFailed = false;
let errorDetails: string | undefined;
let errorSubtype: string | undefined;

// First check if prepare step failed
const prepareSuccess = process.env.PREPARE_SUCCESS !== "false";
Expand All @@ -167,40 +166,23 @@ async function run() {
// Output file is an array, get the last element which contains execution details
if (Array.isArray(outputData) && outputData.length > 0) {
const lastElement = outputData[outputData.length - 1];
if (lastElement.type === "result") {
// Extract execution details
if (
lastElement.type === "result" &&
"cost_usd" in lastElement &&
"duration_ms" in lastElement
) {
executionDetails = {
cost_usd: lastElement.total_cost_usd,
cost_usd: lastElement.cost_usd,
duration_ms: lastElement.duration_ms,
duration_api_ms: lastElement.duration_api_ms,
};

// Check if this is an error result based on subtype
switch (lastElement.subtype) {
case "error_during_execution":
errorSubtype = "Error during execution";
// Override the actionFailed flag based on the result
actionFailed = true;
break;
case "error_max_turns":
errorSubtype = "Maximum turns exceeded";
actionFailed = true;
break;
}
}
}
}

// Check if the Claude action failed (only if not already determined from result)
if (!actionFailed) {
const claudeSuccess = process.env.CLAUDE_SUCCESS !== "false";
actionFailed = !claudeSuccess;
}

// Use errorSubtype as errorDetails if no other error details are available
if (actionFailed && !errorDetails && errorSubtype) {
errorDetails = errorSubtype;
}
// Check if the Claude action failed
const claudeSuccess = process.env.CLAUDE_SUCCESS !== "false";
actionFailed = !claudeSuccess;
} catch (error) {
console.error("Error reading output file:", error);
// If we can't read the file, check for any failure markers
Expand Down
19 changes: 2 additions & 17 deletions src/github/operations/comment-logic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,16 +114,6 @@ export function updateCommentBody(input: CommentUpdateInput): string {

if (actionFailed) {
header = "**Claude encountered an error";

// Add error type to header if available
if (errorDetails) {
if (errorDetails === "Error during execution") {
header = "**Claude encountered an error during execution";
} else if (errorDetails === "Maximum turns exceeded") {
header = "**Claude exceeded the maximum number of turns";
}
}

if (durationStr) {
header += ` after ${durationStr}`;
}
Expand Down Expand Up @@ -191,13 +181,8 @@ export function updateCommentBody(input: CommentUpdateInput): string {
// Build the new body with blank line between header and separator
let newBody = `${header}${links}`;

// Add error details if available (but not if it's just the error type we already showed in header)
if (
actionFailed &&
errorDetails &&
errorDetails !== "Error during execution" &&
errorDetails !== "Maximum turns exceeded"
) {
// Add error details if available
if (actionFailed && errorDetails) {
newBody += `\n\n\`\`\`\n${errorDetails}\n\`\`\``;
}

Expand Down