diff --git a/apps/open-swe/src/utils/github/issue-task.ts b/apps/open-swe/src/utils/github/issue-task.ts
index 2dc3501a..9690a4e7 100644
--- a/apps/open-swe/src/utils/github/issue-task.ts
+++ b/apps/open-swe/src/utils/github/issue-task.ts
@@ -15,6 +15,10 @@ export const TASK_CLOSE_TAG = "";
export const PROPOSED_PLAN_OPEN_TAG = "";
export const PROPOSED_PLAN_CLOSE_TAG = "";
+const DETAILS_OPEN_TAG = "";
+const DETAILS_CLOSE_TAG = " ";
+const AGENT_CONTEXT_DETAILS_SUMMARY = "Agent Context";
+
function typeNarrowTaskPlan(taskPlan: unknown): taskPlan is TaskPlan {
return !!(
typeof taskPlan === "object" &&
@@ -126,8 +130,6 @@ function insertPlanToIssueBody(
${planString}
${closingPlanTag}`;
- let newBody = "";
-
if (
!issueBody.includes(openingPlanTag) &&
!issueBody.includes(closingPlanTag)
@@ -136,7 +138,7 @@ ${closingPlanTag}`;
!issueBody.includes(DETAILS_OPEN_TAG) &&
!issueBody.includes(DETAILS_CLOSE_TAG)
) {
- newBody = `${issueBody}
+ return `${issueBody}
${DETAILS_OPEN_TAG}
${AGENT_CONTEXT_DETAILS_SUMMARY}
${wrappedPlan}
@@ -144,22 +146,34 @@ ${DETAILS_CLOSE_TAG}`;
} else {
// No plan present yet, but details already exists.
const contentBeforeDetailsTag = issueBody.split(DETAILS_OPEN_TAG)?.[0];
- const contentAfterDetailsTag = issueBody.split(DETAILS_CLOSE_TAG)?.[0];
+ const contentAfterDetailsOpenTag =
+ issueBody.split(DETAILS_OPEN_TAG)?.[1] || "";
+ const contentAfterSummary = contentAfterDetailsOpenTag.includes(
+ AGENT_CONTEXT_DETAILS_SUMMARY,
+ )
+ ? contentAfterDetailsOpenTag.split(AGENT_CONTEXT_DETAILS_SUMMARY)[1]
+ : contentAfterDetailsOpenTag;
+ const contentAfterDetailsCloseTag =
+ issueBody.split(DETAILS_CLOSE_TAG)?.[1] || "";
- newBody = `${contentBeforeDetailsTag}
-${wrappedPlan}
-${contentAfterDetailsTag}`;
+ return `${contentBeforeDetailsTag}${DETAILS_OPEN_TAG}
+${AGENT_CONTEXT_DETAILS_SUMMARY}
+${wrappedPlan}${
+ contentAfterSummary.trim()
+ ? `
+${contentAfterSummary.trim()}`
+ : ""
+ }
+${DETAILS_CLOSE_TAG}${contentAfterDetailsCloseTag}`;
}
} else {
const contentBeforeOpenTag = issueBody.split(openingPlanTag)?.[0];
const contentAfterCloseTag = issueBody.split(closingPlanTag)?.[1];
- newBody = `${contentBeforeOpenTag}
+ return `${contentBeforeOpenTag}
${wrappedPlan}
${contentAfterCloseTag}`;
}
-
- return newBody;
}
export async function addProposedPlanToIssue(
@@ -197,10 +211,6 @@ export async function addProposedPlanToIssue(
});
}
-const DETAILS_OPEN_TAG = "";
-const DETAILS_CLOSE_TAG = " ";
-const AGENT_CONTEXT_DETAILS_SUMMARY = "Agent Context";
-
export async function addTaskPlanToIssue(
input: GetIssueTaskPlanInput,
config: GraphConfig,