Skip to content

Commit 9d2605f

Browse files
committed
refactor: standardize chat streaming API
1 parent a1a81c0 commit 9d2605f

7 files changed

Lines changed: 14 additions & 70 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

@@ -191,7 +192,7 @@ private void runStartupChecks(OpenCodeHttpClientConfig httpConfig, OpenCodeCliCo
191192
if (httpConfig.isEnabled() && httpConfig.isStartupCheckEnabled()) {
192193
try {
193194
httpClient.health();
194-
log.info("OpenCode HTTP health check passed: {}", httpConfig.getServerUrl());
195+
log.info("OpenCode HTTP health check passed: {}", httpConfig.getBaseUrl());
195196
} catch (Exception e) {
196197
if (httpConfig.isFailFastOnUnavailable()) {
197198
throw new IllegalStateException(
@@ -242,7 +243,7 @@ private void copyHttpConfig(OpenCodeHttpClientConfig src) {
242243
this.config.getHttp().setEnabled(src.isEnabled());
243244
this.config.getHttp().setStartupCheckEnabled(src.isStartupCheckEnabled());
244245
this.config.getHttp().setFailFastOnUnavailable(src.isFailFastOnUnavailable());
245-
this.config.getHttp().setServerUrl(src.getServerUrl());
246+
this.config.getHttp().setBaseUrl(src.getBaseUrl());
246247
this.config.getHttp().setUsername(src.getUsername());
247248
this.config.getHttp().setPassword(src.getPassword());
248249
this.config.getHttp().setConnectTimeoutMillis(src.getConnectTimeoutMillis());
@@ -367,25 +368,25 @@ public ChatResponse chatCompletionWithSession(ChatRequest request, String sessio
367368
return ChatMessageMapper.toChatResponse(result);
368369
}
369370

370-
public ChatStreamingResponse chatCompletionStream(ChatRequest request, String sessionKey) {
371+
public StreamingChatResponse chatCompletionStream(ChatRequest request, String sessionKey) {
371372
return chatCompletionStream(request, sessionKey, null);
372373
}
373374

374-
public ChatStreamingResponse chatCompletionStream(ChatRequest request, String sessionKey,
375+
public StreamingChatResponse chatCompletionStream(ChatRequest request, String sessionKey,
375376
OpenCodeRequestContext context) {
376377
return chatCompletionStream(request, sessionKey, context, null);
377378
}
378379

379380
/**
380381
* 流式对话,并在订阅启动前绑定增量回调,避免丢失首批分片。
381382
*/
382-
public ChatStreamingResponse chatCompletionStream(ChatRequest request, String sessionKey,
383+
public StreamingChatResponse chatCompletionStream(ChatRequest request, String sessionKey,
383384
OpenCodeRequestContext context,
384385
Consumer<String> deltaConsumer) {
385386
String sessionId = httpClient.ensureSession(sessionKey, context);
386387
PromptRequest promptRequest = ChatMessageMapper.toPromptRequest(request);
387388

388-
ChatStreamingResponse stream = new ChatStreamingResponse().onDelta(deltaConsumer);
389+
StreamingChatResponse stream = new StreamingChatResponse().onDelta(deltaConsumer);
389390

390391
OpenCodeSseClient.QueueSubscription subscription =
391392
sseClient.subscribeQueueSubscription(context);
@@ -529,12 +530,6 @@ public OpenCodeChatClient chat() {
529530
return chatClient;
530531
}
531532

532-
/** @deprecated 业务聊天请使用 {@link #chat()},这里只保留原始事件订阅兼容入口。 */
533-
@Deprecated
534-
public OpenCodeSseClient sse() {
535-
return sseClient;
536-
}
537-
538533
public OpenCodeSseClient eventStream() {
539534
return sseClient;
540535
}

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

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

44-
/** @deprecated 使用 {@link #getBaseUrl()}。 */
45-
@Deprecated
46-
public String getServerUrl() {
47-
return baseUrl;
48-
}
49-
50-
/** @deprecated 使用 {@link #setBaseUrl(String)}。 */
51-
@Deprecated
52-
public void setServerUrl(String value) {
53-
this.baseUrl = value;
54-
}
55-
5644
/**
5745
* HTTP Basic Auth 用户名(对应 {@code OPENCODE_SERVER_USERNAME},默认 {@code opencode})。
5846
*/
@@ -125,18 +113,6 @@ public void setServerUrl(String value) {
125113
*/
126114
private boolean retryOnConnectionFailure = true;
127115

128-
/** @deprecated 使用 {@link #getStreamEventQueueCapacity()}。 */
129-
@Deprecated
130-
public int getSseEventQueueCapacity() {
131-
return streamEventQueueCapacity;
132-
}
133-
134-
/** @deprecated 使用 {@link #setStreamEventQueueCapacity(int)}。 */
135-
@Deprecated
136-
public void setSseEventQueueCapacity(int value) {
137-
this.streamEventQueueCapacity = value;
138-
}
139-
140116
/**
141117
* 是否校验 HTTPS 证书;为 false 时关闭校验(仅建议开发环境)。
142118
*/

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

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

732732
private String url(String path) {
733-
return config.getServerUrl() + path;
733+
return config.getBaseUrl() + path;
734734
}
735735

736736
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
@@ -77,7 +77,7 @@ public EventSource subscribe(Consumer<Event> consumer, OpenCodeRequestContext co
7777
EventSourceListener listener = new EventSourceListener() {
7878
@Override
7979
public void onOpen(EventSource es, Response response) {
80-
log.info("SSE connected to {}/event", config.getServerUrl());
80+
log.info("SSE connected to {}/event", config.getBaseUrl());
8181
}
8282

8383
@Override
@@ -215,7 +215,7 @@ private static Consumer<Event> filterByTypes(Set<String> types, Consumer<Event>
215215
}
216216

217217
private Request buildRequest(OpenCodeRequestContext context) {
218-
String url = config.getServerUrl() + "/event";
218+
String url = config.getBaseUrl() + "/event";
219219
Request.Builder builder = new Request.Builder().url(url)
220220
.header("Accept", "text/event-stream")
221221
.header("Cache-Control", "no-cache");

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

Lines changed: 0 additions & 27 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)