Skip to content
Open
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
12 changes: 7 additions & 5 deletions acp-model/api/acp-model.api
Original file line number Diff line number Diff line change
Expand Up @@ -3765,15 +3765,17 @@ public final class com/agentclientprotocol/model/ToolCallContent$Content$Compani

public final class com/agentclientprotocol/model/ToolCallContent$Diff : com/agentclientprotocol/model/ToolCallContent, com/agentclientprotocol/model/AcpWithMeta {
public static final field Companion Lcom/agentclientprotocol/model/ToolCallContent$Diff$Companion;
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)V
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLkotlinx/serialization/json/JsonElement;)V
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Lkotlinx/serialization/json/JsonElement;
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)Lcom/agentclientprotocol/model/ToolCallContent$Diff;
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ToolCallContent$Diff;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ToolCallContent$Diff;
public final fun component4 ()Z
public final fun component5 ()Lkotlinx/serialization/json/JsonElement;
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLkotlinx/serialization/json/JsonElement;)Lcom/agentclientprotocol/model/ToolCallContent$Diff;
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ToolCallContent$Diff;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ToolCallContent$Diff;
public fun equals (Ljava/lang/Object;)Z
public final fun getDeleted ()Z
public final fun getNewText ()Ljava/lang/String;
public final fun getOldText ()Ljava/lang/String;
public final fun getPath ()Ljava/lang/String;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ public sealed class ToolCallContent {
val path: String,
val newText: String,
val oldText: String? = null,
val deleted: Boolean = false,
override val _meta: JsonElement? = null
) : ToolCallContent(), AcpWithMeta

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.agentclientprotocol.model
import com.agentclientprotocol.rpc.ACPJson
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertTrue

class SerializationTests {
Expand Down Expand Up @@ -140,4 +141,60 @@ class SerializationTests {
assertEquals(500000L, update.size)
assertEquals(null, update.cost)
}
}

@Test
fun `decodes diff without deleted flag defaulting to false`() {
val payload = """
{
"type": "diff",
"path": "/home/user/project/src/main.kt",
"oldText": "fun main() {}",
"newText": ""
}
""".trimIndent()

val content = ACPJson.decodeFromString(ToolCallContent.serializer(), payload)

assertTrue(content is ToolCallContent.Diff)
assertEquals("/home/user/project/src/main.kt", content.path)
assertEquals("fun main() {}", content.oldText)
assertEquals("", content.newText)
assertFalse(content.deleted)
}

@Test
fun `decodes diff with deleted true`() {
val payload = """
{
"type": "diff",
"path": "/home/user/project/src/main.kt",
"oldText": "fun main() {}",
"newText": "",
"deleted": true
}
""".trimIndent()

val content = ACPJson.decodeFromString(ToolCallContent.serializer(), payload)

assertTrue(content is ToolCallContent.Diff)
assertTrue(content.deleted)
}

@Test
fun `decodes diff with deleted false`() {
val payload = """
{
"type": "diff",
"path": "/home/user/project/src/main.kt",
"oldText": "fun main() {}",
"newText": "",
"deleted": false
}
""".trimIndent()

val content = ACPJson.decodeFromString(ToolCallContent.serializer(), payload)

assertTrue(content is ToolCallContent.Diff)
assertFalse(content.deleted)
}
}