Skip to content

Commit ac6f99e

Browse files
committed
refactor: standardize chat streaming API
1 parent 0def2c1 commit ac6f99e

7 files changed

Lines changed: 14 additions & 69 deletions

File tree

src/main/java/io/github/easy4j/opencode/OpenCodeClient.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.github.easy4j.opencode.api.OpenCodeChatClient;
1111
import io.github.easy4j.opencode.api.OpenCodeRequestContext;
1212
import io.github.easy4j.opencode.api.OpenCodeSseClient;
13+
import io.github.easy4j.opencode.api.sse.StreamingChatResponse;
1314
import lombok.extern.slf4j.Slf4j;
1415
import okhttp3.OkHttpClient;
1516

@@ -184,7 +185,7 @@ private void runStartupChecks(OpenCodeHttpClientConfig httpConfig, OpenCodeCliCo
184185
if (httpConfig.isEnabled() && httpConfig.isStartupCheckEnabled()) {
185186
try {
186187
httpClient.health();
187-
log.info("OpenCode HTTP health check passed: {}", httpConfig.getServerUrl());
188+
log.info("OpenCode HTTP health check passed: {}", httpConfig.getBaseUrl());
188189
} catch (Exception e) {
189190
if (httpConfig.isFailFastOnUnavailable()) {
190191
throw new IllegalStateException(
@@ -235,7 +236,7 @@ private void copyHttpConfig(OpenCodeHttpClientConfig src) {
235236
this.config.getHttp().setEnabled(src.isEnabled());
236237
this.config.getHttp().setStartupCheckEnabled(src.isStartupCheckEnabled());
237238
this.config.getHttp().setFailFastOnUnavailable(src.isFailFastOnUnavailable());
238-
this.config.getHttp().setServerUrl(src.getServerUrl());
239+
this.config.getHttp().setBaseUrl(src.getBaseUrl());
239240
this.config.getHttp().setUsername(src.getUsername());
240241
this.config.getHttp().setPassword(src.getPassword());
241242
this.config.getHttp().setConnectTimeoutMillis(src.getConnectTimeoutMillis());
@@ -360,25 +361,25 @@ public ChatResponse chatCompletionWithSession(ChatRequest request, String sessio
360361
return ChatMessageMapper.toChatResponse(result);
361362
}
362363

363-
public ChatStreamingResponse chatCompletionStream(ChatRequest request, String sessionKey) {
364+
public StreamingChatResponse chatCompletionStream(ChatRequest request, String sessionKey) {
364365
return chatCompletionStream(request, sessionKey, null);
365366
}
366367

367-
public ChatStreamingResponse chatCompletionStream(ChatRequest request, String sessionKey,
368+
public StreamingChatResponse chatCompletionStream(ChatRequest request, String sessionKey,
368369
OpenCodeRequestContext context) {
369370
return chatCompletionStream(request, sessionKey, context, null);
370371
}
371372

372373
/**
373374
* 流式对话,并在订阅启动前绑定增量回调,避免丢失首批分片。
374375
*/
375-
public ChatStreamingResponse chatCompletionStream(ChatRequest request, String sessionKey,
376+
public StreamingChatResponse chatCompletionStream(ChatRequest request, String sessionKey,
376377
OpenCodeRequestContext context,
377378
Consumer<String> deltaConsumer) {
378379
String sessionId = httpClient.ensureSession(sessionKey, context);
379380
PromptRequest promptRequest = ChatMessageMapper.toPromptRequest(request);
380381

381-
ChatStreamingResponse stream = new ChatStreamingResponse().onDelta(deltaConsumer);
382+
StreamingChatResponse stream = new StreamingChatResponse().onDelta(deltaConsumer);
382383

383384
OpenCodeSseClient.QueueSubscription subscription =
384385
sseClient.subscribeQueueSubscription(context);
@@ -522,12 +523,6 @@ public OpenCodeChatClient chat() {
522523
return chatClient;
523524
}
524525

525-
/** @deprecated 业务聊天请使用 {@link #chat()},这里只保留原始事件订阅兼容入口。 */
526-
@Deprecated
527-
public OpenCodeSseClient sse() {
528-
return sseClient;
529-
}
530-
531526
public OpenCodeSseClient eventStream() {
532527
return sseClient;
533528
}

src/main/java/io/github/easy4j/opencode/OpenCodeHttpClientConfig.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,6 @@ public class OpenCodeHttpClientConfig {
3636
*/
3737
private String baseUrl = "http://localhost:4096";
3838

39-
/** @deprecated 使用 {@link #getBaseUrl()}。 */
40-
@Deprecated
41-
public String getServerUrl() {
42-
return baseUrl;
43-
}
44-
45-
/** @deprecated 使用 {@link #setBaseUrl(String)}。 */
46-
@Deprecated
47-
public void setServerUrl(String value) {
48-
this.baseUrl = value;
49-
}
50-
5139
/**
5240
* HTTP Basic Auth 用户名(对应 {@code OPENCODE_SERVER_USERNAME},默认 {@code opencode})。
5341
*/
@@ -120,18 +108,6 @@ public void setServerUrl(String value) {
120108
*/
121109
private boolean retryOnConnectionFailure = true;
122110

123-
/** @deprecated 使用 {@link #getStreamEventQueueCapacity()}。 */
124-
@Deprecated
125-
public int getSseEventQueueCapacity() {
126-
return streamEventQueueCapacity;
127-
}
128-
129-
/** @deprecated 使用 {@link #setStreamEventQueueCapacity(int)}。 */
130-
@Deprecated
131-
public void setSseEventQueueCapacity(int value) {
132-
this.streamEventQueueCapacity = value;
133-
}
134-
135111
/**
136112
* 是否校验 HTTPS 证书;为 false 时关闭校验(仅建议开发环境)。
137113
*/

src/main/java/io/github/easy4j/opencode/api/OpenCodeHttpClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,7 @@ public ObjectMapper getObjectMapper() {
725725
// ============================================================
726726

727727
private String url(String path) {
728-
return config.getServerUrl() + path;
728+
return config.getBaseUrl() + path;
729729
}
730730

731731
private Request.Builder authedRequest(String url) {

src/main/java/io/github/easy4j/opencode/api/OpenCodeSseClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public EventSource subscribe(Consumer<Event> consumer, OpenCodeRequestContext co
6969
EventSourceListener listener = new EventSourceListener() {
7070
@Override
7171
public void onOpen(EventSource es, Response response) {
72-
log.info("SSE connected to {}/event", config.getServerUrl());
72+
log.info("SSE connected to {}/event", config.getBaseUrl());
7373
}
7474

7575
@Override
@@ -207,7 +207,7 @@ private static Consumer<Event> filterByTypes(Set<String> types, Consumer<Event>
207207
}
208208

209209
private Request buildRequest(OpenCodeRequestContext context) {
210-
String url = config.getServerUrl() + "/event";
210+
String url = config.getBaseUrl() + "/event";
211211
Request.Builder builder = new Request.Builder().url(url)
212212
.header("Accept", "text/event-stream")
213213
.header("Cache-Control", "no-cache");

src/main/java/io/github/easy4j/opencode/api/model/ChatStreamingResponse.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/test/java/io/github/easy4j/opencode/OpenCodeChatClientArchitectureTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ class OpenCodeChatClientArchitectureTest {
1313
void shouldExposeUnifiedConfigAndChatScenarioClient() {
1414
OpenCodeHttpClientConfig config = new OpenCodeHttpClientConfig();
1515
assertEquals(HttpResponseMode.BLOCKING, config.getMode());
16-
config.setServerUrl("http://legacy-opencode");
17-
assertEquals("http://legacy-opencode", config.getBaseUrl());
16+
config.setBaseUrl("http://opencode");
17+
assertEquals("http://opencode", config.getBaseUrl());
1818

1919
try (OpenCodeChatClient client = new OpenCodeChatClient(config)) {
2020
assertEquals(OpenCodeHttpClient.class, client.getClass().getSuperclass());

src/test/java/io/github/easy4j/opencode/api/OpenCodeHttpClientTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void setUp() throws IOException {
3737
server = new MockWebServer();
3838
server.start();
3939
OpenCodeHttpClientConfig config = new OpenCodeHttpClientConfig();
40-
config.setServerUrl(server.url("/").toString().replaceAll("/$", ""));
40+
config.setBaseUrl(server.url("/").toString().replaceAll("/$", ""));
4141
client = new OpenCodeHttpClient(config, null, null);
4242
}
4343

@@ -96,7 +96,7 @@ void shouldRouteEventStreamToDirectory() throws InterruptedException {
9696
.setHeader("Content-Type", "text/event-stream")
9797
.setBody("data: {\"type\":\"server.connected\",\"properties\":{}}\n\n"));
9898
OpenCodeHttpClientConfig config = new OpenCodeHttpClientConfig();
99-
config.setServerUrl(server.url("/").toString().replaceAll("/$", ""));
99+
config.setBaseUrl(server.url("/").toString().replaceAll("/$", ""));
100100
OpenCodeSseClient sseClient = new OpenCodeSseClient(
101101
config, client.getObjectMapper(), client.getOkHttpClient());
102102
try {

0 commit comments

Comments
 (0)