diff --git a/src/core/task/__tests__/appendEnvironmentDetails.spec.ts b/src/core/task/__tests__/appendEnvironmentDetails.spec.ts
index 54ccb1ee1e..590d4ab5a0 100644
--- a/src/core/task/__tests__/appendEnvironmentDetails.spec.ts
+++ b/src/core/task/__tests__/appendEnvironmentDetails.spec.ts
@@ -1,10 +1,5 @@
import { Anthropic } from "@anthropic-ai/sdk"
-import {
- appendEnvironmentDetails,
- removeEnvironmentDetailsBlocks,
- stripAppendedEnvironmentDetails,
- UserContentBlock,
-} from "../appendEnvironmentDetails"
+import { appendEnvironmentDetails, removeEnvironmentDetailsBlocks, UserContentBlock } from "../appendEnvironmentDetails"
describe("appendEnvironmentDetails", () => {
const envDetails = "\n# Test\nSome details\n"
@@ -319,96 +314,3 @@ describe("removeEnvironmentDetailsBlocks", () => {
expect(result).toHaveLength(0)
})
})
-
-describe("stripAppendedEnvironmentDetails", () => {
- const envDetails = "\n# Test\nSome details\n"
-
- it("should strip environment details from the end of a text block", () => {
- const content: UserContentBlock[] = [{ type: "text", text: "User message\n\n" + envDetails }]
-
- const result = stripAppendedEnvironmentDetails(content)
-
- expect(result).toHaveLength(1)
- expect((result[0] as Anthropic.Messages.TextBlockParam).text).toBe("User message")
- })
-
- it("should strip environment details from tool_result string content", () => {
- const content: UserContentBlock[] = [
- {
- type: "tool_result",
- tool_use_id: "tool-123",
- content: "Tool result\n\n" + envDetails,
- },
- ]
-
- const result = stripAppendedEnvironmentDetails(content)
-
- expect(result).toHaveLength(1)
- expect((result[0] as Anthropic.Messages.ToolResultBlockParam).content).toBe("Tool result")
- })
-
- it("should strip environment details from tool_result array content", () => {
- const content: UserContentBlock[] = [
- {
- type: "tool_result",
- tool_use_id: "tool-123",
- content: [{ type: "text", text: "Result text\n\n" + envDetails }],
- },
- ]
-
- const result = stripAppendedEnvironmentDetails(content)
-
- const toolResult = result[0] as Anthropic.Messages.ToolResultBlockParam
- const contentArray = toolResult.content as Anthropic.Messages.TextBlockParam[]
- expect(contentArray[0].text).toBe("Result text")
- })
-
- it("should also remove standalone environment_details blocks", () => {
- const content: UserContentBlock[] = [
- { type: "text", text: "User message" },
- { type: "text", text: envDetails },
- ]
-
- const result = stripAppendedEnvironmentDetails(content)
-
- expect(result).toHaveLength(1)
- expect((result[0] as Anthropic.Messages.TextBlockParam).text).toBe("User message")
- })
-
- it("should handle content without environment details", () => {
- const content: UserContentBlock[] = [
- { type: "text", text: "User message" },
- {
- type: "tool_result",
- tool_use_id: "tool-123",
- content: "Tool result",
- },
- ]
-
- const result = stripAppendedEnvironmentDetails(content)
-
- expect(result).toEqual(content)
- })
-
- it("should handle empty content", () => {
- const result = stripAppendedEnvironmentDetails([])
- expect(result).toHaveLength(0)
- })
-
- it("should preserve is_error flag when stripping from tool_result", () => {
- const content: UserContentBlock[] = [
- {
- type: "tool_result",
- tool_use_id: "tool-123",
- content: "Error\n\n" + envDetails,
- is_error: true,
- },
- ]
-
- const result = stripAppendedEnvironmentDetails(content)
-
- const toolResult = result[0] as Anthropic.Messages.ToolResultBlockParam
- expect(toolResult.is_error).toBe(true)
- expect(toolResult.content).toBe("Error")
- })
-})
diff --git a/src/core/task/appendEnvironmentDetails.ts b/src/core/task/appendEnvironmentDetails.ts
index 09495d89e7..5e21347788 100644
--- a/src/core/task/appendEnvironmentDetails.ts
+++ b/src/core/task/appendEnvironmentDetails.ts
@@ -143,96 +143,3 @@ export function removeEnvironmentDetailsBlocks(content: UserContentBlock[]): Use
return true
})
}
-
-/**
- * Strips environment details from the last text block or tool_result in the content.
- * This handles the case where environment details were appended to an existing block
- * rather than added as a standalone block.
- *
- * @param content - Array of content blocks
- * @returns New array with environment details stripped from the last suitable block
- */
-export function stripAppendedEnvironmentDetails(content: UserContentBlock[]): UserContentBlock[] {
- if (content.length === 0) {
- return content
- }
-
- // First, remove any standalone environment_details blocks
- let result = removeEnvironmentDetailsBlocks(content)
-
- if (result.length === 0) {
- return result
- }
-
- // Then, strip appended environment details from the last block
- const lastIndex = result.length - 1
- const lastBlock = result[lastIndex]
-
- if (lastBlock.type === "text") {
- const strippedText = stripEnvDetailsFromText(lastBlock.text)
- if (strippedText !== lastBlock.text) {
- result = [...result]
- result[lastIndex] = { type: "text" as const, text: strippedText }
- }
- } else if (lastBlock.type === "tool_result") {
- const strippedToolResult = stripEnvDetailsFromToolResult(lastBlock)
- if (strippedToolResult !== lastBlock) {
- result = [...result]
- result[lastIndex] = strippedToolResult
- }
- }
-
- return result
-}
-
-/**
- * Strips environment details from the end of a text string.
- */
-function stripEnvDetailsFromText(text: string): string {
- // Match environment details at the end of the string, with optional preceding newlines
- const envDetailsPattern = /\n*[\s\S]*<\/environment_details>\s*$/
- return text.replace(envDetailsPattern, "")
-}
-
-/**
- * Strips environment details from a tool_result block's content.
- */
-function stripEnvDetailsFromToolResult(
- toolResult: Anthropic.Messages.ToolResultBlockParam,
-): Anthropic.Messages.ToolResultBlockParam {
- const { content, ...rest } = toolResult
-
- if (content === undefined || content === null) {
- return toolResult
- }
-
- if (typeof content === "string") {
- const strippedContent = stripEnvDetailsFromText(content)
- if (strippedContent === content) {
- return toolResult
- }
- return { ...rest, content: strippedContent }
- }
-
- if (Array.isArray(content)) {
- let changed = false
- const newContent = content.map((block) => {
- if (block.type === "text") {
- const strippedText = stripEnvDetailsFromText(block.text)
- if (strippedText !== block.text) {
- changed = true
- return { type: "text" as const, text: strippedText }
- }
- }
- return block
- })
-
- if (!changed) {
- return toolResult
- }
-
- return { ...rest, content: newContent }
- }
-
- return toolResult
-}