Skip to content

Commit 0612a3d

Browse files
committed
Method names to enum
1 parent 222223a commit 0612a3d

4 files changed

Lines changed: 73 additions & 67 deletions

File tree

kotlin/kotlin-acp/src/commonMain/kotlin/io/agentclientprotocol/agent/AgentSideConnection.kt

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import io.agentclientprotocol.rpc.ACPJson
1010
import io.agentclientprotocol.transport.Transport
1111
import io.github.oshai.kotlinlogging.KotlinLogging
1212
import kotlinx.coroutines.CoroutineScope
13-
import kotlinx.serialization.json.JsonNull
1413
import kotlinx.serialization.json.decodeFromJsonElement
1514
import kotlinx.serialization.json.encodeToJsonElement
1615

@@ -37,7 +36,7 @@ public class AgentSideConnection(
3736
public fun start() {
3837

3938
// Set up request handlers for incoming client requests
40-
protocol.setRequestHandler(AgentMethods.INITIALIZE) { request ->
39+
protocol.setRequestHandler(AgentMethods.Initialize) { request ->
4140
val params = if (request.params != null) {
4241
ACPJson.decodeFromJsonElement<InitializeRequest>(request.params)
4342
} else {
@@ -47,7 +46,7 @@ public class AgentSideConnection(
4746
ACPJson.encodeToJsonElement(response)
4847
}
4948

50-
protocol.setRequestHandler(AgentMethods.AUTHENTICATE) { request ->
49+
protocol.setRequestHandler(AgentMethods.Authenticate) { request ->
5150
val params = if (request.params != null) {
5251
ACPJson.decodeFromJsonElement<AuthenticateRequest>(request.params)
5352
} else {
@@ -57,7 +56,7 @@ public class AgentSideConnection(
5756
ACPJson.encodeToJsonElement(response)
5857
}
5958

60-
protocol.setRequestHandler(AgentMethods.SESSION_NEW) { request ->
59+
protocol.setRequestHandler(AgentMethods.SessionNew) { request ->
6160
val params = if (request.params != null) {
6261
ACPJson.decodeFromJsonElement<NewSessionRequest>(request.params)
6362
} else {
@@ -67,7 +66,7 @@ public class AgentSideConnection(
6766
ACPJson.encodeToJsonElement(response)
6867
}
6968

70-
protocol.setRequestHandler(AgentMethods.SESSION_LOAD) { request ->
69+
protocol.setRequestHandler(AgentMethods.SessionLoad) { request ->
7170
val params = if (request.params != null) {
7271
ACPJson.decodeFromJsonElement<LoadSessionRequest>(request.params)
7372
} else {
@@ -77,7 +76,7 @@ public class AgentSideConnection(
7776
ACPJson.encodeToJsonElement(response)
7877
}
7978

80-
protocol.setRequestHandler(AgentMethods.SESSION_SET_MODE) { request ->
79+
protocol.setRequestHandler(AgentMethods.SessionSetMode) { request ->
8180
val params = if (request.params != null) {
8281
ACPJson.decodeFromJsonElement<SetSessionModeRequest>(request.params)
8382
} else {
@@ -87,7 +86,7 @@ public class AgentSideConnection(
8786
ACPJson.encodeToJsonElement(response)
8887
}
8988

90-
protocol.setRequestHandler(AgentMethods.SESSION_PROMPT) { request ->
89+
protocol.setRequestHandler(AgentMethods.SessionPrompt) { request ->
9190
val params = if (request.params != null) {
9291
ACPJson.decodeFromJsonElement<PromptRequest>(request.params)
9392
} else {
@@ -97,7 +96,7 @@ public class AgentSideConnection(
9796
ACPJson.encodeToJsonElement(response)
9897
}
9998

100-
protocol.setNotificationHandler(AgentMethods.SESSION_CANCEL) { notification ->
99+
protocol.setNotificationHandler(AgentMethods.SessionCancel) { notification ->
101100
val params = if (notification.params != null) {
102101
ACPJson.decodeFromJsonElement<CancelNotification>(notification.params)
103102
} else {
@@ -112,54 +111,54 @@ public class AgentSideConnection(
112111

113112
override suspend fun sessionUpdate(notification: SessionNotification) {
114113
val params = ACPJson.encodeToJsonElement(notification)
115-
protocol.sendNotification(ClientMethods.SESSION_UPDATE, params)
114+
protocol.sendNotification(ClientMethods.SessionUpdate, params)
116115
}
117116

118117
override suspend fun sessionRequestPermission(request: RequestPermissionRequest): RequestPermissionResponse {
119118
val params = ACPJson.encodeToJsonElement(request)
120-
val responseJson = protocol.sendRequest(ClientMethods.SESSION_REQUEST_PERMISSION, params)
119+
val responseJson = protocol.sendRequest(ClientMethods.SessionRequestPermission, params)
121120
return ACPJson.decodeFromJsonElement(responseJson)
122121
}
123122

124123
override suspend fun fsReadTextFile(request: ReadTextFileRequest): ReadTextFileResponse {
125124
val params = ACPJson.encodeToJsonElement(request)
126-
val responseJson = protocol.sendRequest(ClientMethods.FS_READ_TEXT_FILE, params)
125+
val responseJson = protocol.sendRequest(ClientMethods.FsReadTextFile, params)
127126
return ACPJson.decodeFromJsonElement(responseJson)
128127
}
129128

130129
override suspend fun fsWriteTextFile(request: WriteTextFileRequest): WriteTextFileResponse {
131130
val params = ACPJson.encodeToJsonElement(request)
132-
val responseJson = protocol.sendRequest(ClientMethods.FS_WRITE_TEXT_FILE, params)
131+
val responseJson = protocol.sendRequest(ClientMethods.FsWriteTextFile, params)
133132
return ACPJson.decodeFromJsonElement(responseJson)
134133
}
135134

136135
override suspend fun terminalCreate(request: CreateTerminalRequest): CreateTerminalResponse {
137136
val params = ACPJson.encodeToJsonElement(request)
138-
val responseJson = protocol.sendRequest(ClientMethods.TERMINAL_CREATE, params)
137+
val responseJson = protocol.sendRequest(ClientMethods.TerminalCreate, params)
139138
return ACPJson.decodeFromJsonElement(responseJson)
140139
}
141140

142141
override suspend fun terminalOutput(request: TerminalOutputRequest): TerminalOutputResponse {
143142
val params = ACPJson.encodeToJsonElement(request)
144-
val responseJson = protocol.sendRequest(ClientMethods.TERMINAL_OUTPUT, params)
143+
val responseJson = protocol.sendRequest(ClientMethods.TerminalOutput, params)
145144
return ACPJson.decodeFromJsonElement(responseJson)
146145
}
147146

148147
override suspend fun terminalRelease(request: ReleaseTerminalRequest): ReleaseTerminalResponse {
149148
val params = ACPJson.encodeToJsonElement(request)
150-
val responseJson = protocol.sendRequest(ClientMethods.TERMINAL_RELEASE, params)
149+
val responseJson = protocol.sendRequest(ClientMethods.TerminalRelease, params)
151150
return ACPJson.decodeFromJsonElement(responseJson)
152151
}
153152

154153
override suspend fun terminalWaitForExit(request: WaitForTerminalExitRequest): WaitForTerminalExitResponse {
155154
val params = ACPJson.encodeToJsonElement(request)
156-
val responseJson = protocol.sendRequest(ClientMethods.TERMINAL_WAIT_FOR_EXIT, params)
155+
val responseJson = protocol.sendRequest(ClientMethods.TerminalWaitForExit, params)
157156
return ACPJson.decodeFromJsonElement(responseJson)
158157
}
159158

160159
override suspend fun terminalKill(request: KillTerminalCommandRequest): KillTerminalCommandResponse {
161160
val params = ACPJson.encodeToJsonElement(request)
162-
val responseJson = protocol.sendRequest(ClientMethods.TERMINAL_KILL, params)
161+
val responseJson = protocol.sendRequest(ClientMethods.TerminalKill, params)
163162

164163
return ACPJson.decodeFromJsonElement(responseJson)
165164
}

kotlin/kotlin-acp/src/commonMain/kotlin/io/agentclientprotocol/client/ClientSideConnection.kt

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import io.agentclientprotocol.rpc.ACPJson
3333
import io.agentclientprotocol.transport.Transport
3434
import io.github.oshai.kotlinlogging.KotlinLogging
3535
import kotlinx.coroutines.CoroutineScope
36-
import kotlinx.serialization.json.JsonNull
3736
import kotlinx.serialization.json.decodeFromJsonElement
3837
import kotlinx.serialization.json.encodeToJsonElement
3938

@@ -59,70 +58,70 @@ public class ClientSideConnection(
5958

6059
public fun start() {
6160
// Set up request handlers for incoming agent requests
62-
protocol.setRequestHandler(ClientMethods.FS_READ_TEXT_FILE) { request ->
61+
protocol.setRequestHandler(ClientMethods.FsReadTextFile) { request ->
6362
val params = ACPJson.decodeFromString<ReadTextFileRequest>(
6463
request.params?.toString() ?: "{}"
6564
)
6665
val response = client.fsReadTextFile(params)
6766
ACPJson.encodeToJsonElement(response)
6867
}
6968

70-
protocol.setRequestHandler(ClientMethods.FS_WRITE_TEXT_FILE) { request ->
69+
protocol.setRequestHandler(ClientMethods.FsWriteTextFile) { request ->
7170
val params = ACPJson.decodeFromString<WriteTextFileRequest>(
7271
request.params?.toString() ?: "{}"
7372
)
7473
val response = client.fsWriteTextFile(params)
7574
ACPJson.encodeToJsonElement(response)
7675
}
7776

78-
protocol.setRequestHandler(ClientMethods.SESSION_REQUEST_PERMISSION) { request ->
77+
protocol.setRequestHandler(ClientMethods.SessionRequestPermission) { request ->
7978
val params = ACPJson.decodeFromString<RequestPermissionRequest>(
8079
request.params?.toString() ?: "{}"
8180
)
8281
val response = client.sessionRequestPermission(params)
8382
ACPJson.encodeToJsonElement(response)
8483
}
8584

86-
protocol.setNotificationHandler(ClientMethods.SESSION_UPDATE) { notification ->
85+
protocol.setNotificationHandler(ClientMethods.SessionUpdate) { notification ->
8786
val params = ACPJson.decodeFromString<SessionNotification>(
8887
notification.params?.toString() ?: "{}"
8988
)
9089
client.sessionUpdate(params)
9190
}
9291

93-
protocol.setRequestHandler(ClientMethods.TERMINAL_CREATE) { request ->
92+
protocol.setRequestHandler(ClientMethods.TerminalCreate) { request ->
9493
val params = ACPJson.decodeFromString<CreateTerminalRequest>(
9594
request.params?.toString() ?: "{}"
9695
)
9796
val response = client.terminalCreate(params)
9897
ACPJson.encodeToJsonElement(response)
9998
}
10099

101-
protocol.setRequestHandler(ClientMethods.TERMINAL_OUTPUT) { request ->
100+
protocol.setRequestHandler(ClientMethods.TerminalOutput) { request ->
102101
val params = ACPJson.decodeFromString<TerminalOutputRequest>(
103102
request.params?.toString() ?: "{}"
104103
)
105104
val response = client.terminalOutput(params)
106105
ACPJson.encodeToJsonElement(response)
107106
}
108107

109-
protocol.setRequestHandler(ClientMethods.TERMINAL_RELEASE) { request ->
108+
protocol.setRequestHandler(ClientMethods.TerminalRelease) { request ->
110109
val params = ACPJson.decodeFromString<ReleaseTerminalRequest>(
111110
request.params?.toString() ?: "{}"
112111
)
113112
val response = client.terminalRelease(params)
114113
ACPJson.encodeToJsonElement(response)
115114
}
116115

117-
protocol.setRequestHandler(ClientMethods.TERMINAL_WAIT_FOR_EXIT) { request ->
116+
protocol.setRequestHandler(ClientMethods.TerminalWaitForExit) { request ->
118117
val params = ACPJson.decodeFromString<WaitForTerminalExitRequest>(
119118
request.params?.toString() ?: "{}"
120119
)
121120
val response = client.terminalWaitForExit(params)
122121
ACPJson.encodeToJsonElement(response)
123122
}
124123

125-
protocol.setRequestHandler(ClientMethods.TERMINAL_KILL) { request ->
124+
protocol.setRequestHandler(ClientMethods.TerminalKill) { request ->
126125
val params = ACPJson.decodeFromString<KillTerminalCommandRequest>(
127126
request.params?.toString() ?: "{}"
128127
)
@@ -136,42 +135,42 @@ public class ClientSideConnection(
136135

137136
override suspend fun initialize(request: InitializeRequest): InitializeResponse {
138137
val params = ACPJson.encodeToJsonElement(request)
139-
val responseJson = protocol.sendRequest(AgentMethods.INITIALIZE, params)
138+
val responseJson = protocol.sendRequest(AgentMethods.Initialize, params)
140139
return ACPJson.decodeFromJsonElement(responseJson)
141140
}
142141

143142
override suspend fun authenticate(request: AuthenticateRequest): AuthenticateResponse {
144143
val params = ACPJson.encodeToJsonElement(request)
145-
val responseJson = protocol.sendRequest(AgentMethods.AUTHENTICATE, params)
144+
val responseJson = protocol.sendRequest(AgentMethods.Authenticate, params)
146145
return ACPJson.decodeFromJsonElement(responseJson)
147146
}
148147

149148
override suspend fun sessionNew(request: NewSessionRequest): NewSessionResponse {
150149
val params = ACPJson.encodeToJsonElement(request)
151-
val responseJson = protocol.sendRequest(AgentMethods.SESSION_NEW, params)
150+
val responseJson = protocol.sendRequest(AgentMethods.SessionNew, params)
152151
return ACPJson.decodeFromJsonElement(responseJson)
153152
}
154153

155154
override suspend fun sessionLoad(request: LoadSessionRequest): LoadSessionResponse {
156155
val params = ACPJson.encodeToJsonElement(request)
157-
val responseJson = protocol.sendRequest(AgentMethods.SESSION_LOAD, params)
156+
val responseJson = protocol.sendRequest(AgentMethods.SessionLoad, params)
158157
return ACPJson.decodeFromJsonElement(responseJson)
159158
}
160159

161160
override suspend fun sessionSetMode(request: SetSessionModeRequest): SetSessionModeResponse {
162161
val params = ACPJson.encodeToJsonElement(request)
163-
val responseJson = protocol.sendRequest(AgentMethods.SESSION_SET_MODE, params)
162+
val responseJson = protocol.sendRequest(AgentMethods.SessionSetMode, params)
164163
return ACPJson.decodeFromJsonElement(responseJson)
165164
}
166165

167166
override suspend fun sessionPrompt(request: PromptRequest): PromptResponse {
168167
val params = ACPJson.encodeToJsonElement(request)
169-
val responseJson = protocol.sendRequest(AgentMethods.SESSION_PROMPT, params)
168+
val responseJson = protocol.sendRequest(AgentMethods.SessionPrompt, params)
170169
return ACPJson.decodeFromJsonElement(responseJson)
171170
}
172171

173172
override suspend fun sessionCancel(notification: CancelNotification) {
174173
val params = ACPJson.encodeToJsonElement(notification)
175-
protocol.sendNotification(AgentMethods.SESSION_CANCEL, params)
174+
protocol.sendNotification(AgentMethods.SessionCancel, params)
176175
}
177176
}

kotlin/kotlin-acp/src/commonMain/kotlin/io/agentclientprotocol/model/Methods.kt

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,41 @@
22

33
package io.agentclientprotocol.model
44

5+
/**
6+
* Base interface for ACP method enums.
7+
*/
8+
public interface AcpMethod {
9+
public val methodName: String
10+
}
11+
512
/**
613
* ACP method names for agent-side operations.
7-
*
14+
*
815
* These are methods that agents can call on clients.
916
*/
10-
public object AgentMethods {
11-
public const val INITIALIZE: String = "initialize"
12-
public const val AUTHENTICATE: String = "authenticate"
13-
public const val SESSION_NEW: String = "session/new"
14-
public const val SESSION_LOAD: String = "session/load"
15-
public const val SESSION_PROMPT: String = "session/prompt"
16-
public const val SESSION_CANCEL: String = "session/cancel"
17-
public const val SESSION_SET_MODE: String = "session/set_mode"
17+
public enum class AgentMethods(override val methodName: String) : AcpMethod {
18+
Initialize("initialize"),
19+
Authenticate("authenticate"),
20+
SessionNew("session/new"),
21+
SessionLoad("session/load"),
22+
SessionPrompt("session/prompt"),
23+
SessionCancel("session/cancel"),
24+
SessionSetMode("session/set_mode")
1825
}
1926

2027
/**
2128
* ACP method names for client-side operations.
22-
*
29+
*
2330
* These are methods that clients can call on agents.
2431
*/
25-
public object ClientMethods {
26-
public const val FS_READ_TEXT_FILE: String = "fs/read_text_file"
27-
public const val FS_WRITE_TEXT_FILE: String = "fs/write_text_file"
28-
public const val SESSION_REQUEST_PERMISSION: String = "session/request_permission"
29-
public const val SESSION_UPDATE: String = "session/update"
30-
public const val TERMINAL_CREATE: String = "terminal/create"
31-
public const val TERMINAL_OUTPUT: String = "terminal/output"
32-
public const val TERMINAL_RELEASE: String = "terminal/release"
33-
public const val TERMINAL_WAIT_FOR_EXIT: String = "terminal/wait_for_exit"
34-
public const val TERMINAL_KILL: String = "terminal/kill"
32+
public enum class ClientMethods(override val methodName: String) : AcpMethod {
33+
FsReadTextFile("fs/read_text_file"),
34+
FsWriteTextFile("fs/write_text_file"),
35+
SessionRequestPermission("session/request_permission"),
36+
SessionUpdate("session/update"),
37+
TerminalCreate("terminal/create"),
38+
TerminalOutput("terminal/output"),
39+
TerminalRelease("terminal/release"),
40+
TerminalWaitForExit("terminal/wait_for_exit"),
41+
TerminalKill("terminal/kill")
3542
}

0 commit comments

Comments
 (0)