fix: tighten disconnect recovery guards
This commit is contained in:
@@ -429,6 +429,9 @@ export async function dismissPermission(
|
|||||||
sessionId: string,
|
sessionId: string,
|
||||||
requestId: string,
|
requestId: string,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
|
if (!useConfigStore.getState().isConnected) {
|
||||||
|
throw new Error("Connection lost. Please wait for reconnection.")
|
||||||
|
}
|
||||||
const result = await getRequestReplyClient("permission", sessionId, requestId).permission.reply({
|
const result = await getRequestReplyClient("permission", sessionId, requestId).permission.reply({
|
||||||
requestID: requestId,
|
requestID: requestId,
|
||||||
reply: "reject",
|
reply: "reject",
|
||||||
@@ -463,6 +466,9 @@ export async function rejectQuestion(
|
|||||||
sessionId: string,
|
sessionId: string,
|
||||||
requestId: string,
|
requestId: string,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
|
if (!useConfigStore.getState().isConnected) {
|
||||||
|
throw new Error("Connection lost. Please wait for reconnection.")
|
||||||
|
}
|
||||||
const result = await getRequestReplyClient("question", sessionId, requestId).question.reject({
|
const result = await getRequestReplyClient("question", sessionId, requestId).question.reject({
|
||||||
requestID: requestId,
|
requestID: requestId,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -10,6 +10,18 @@ import {
|
|||||||
sendMessageStreamWsFrame,
|
sendMessageStreamWsFrame,
|
||||||
} from './protocol.js';
|
} from './protocol.js';
|
||||||
|
|
||||||
|
function shouldTriggerUpstreamHealthCheck(upstream) {
|
||||||
|
if (!upstream) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!upstream.body) {
|
||||||
|
return upstream.ok || upstream.status >= 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
return upstream.status >= 500;
|
||||||
|
}
|
||||||
|
|
||||||
export function createGlobalUiEventBroadcaster({
|
export function createGlobalUiEventBroadcaster({
|
||||||
sseClients,
|
sseClients,
|
||||||
wsClients,
|
wsClients,
|
||||||
@@ -151,7 +163,9 @@ export function createMessageStreamWsRuntime({
|
|||||||
message: `OpenCode event stream unavailable (${upstream.status})`,
|
message: `OpenCode event stream unavailable (${upstream.status})`,
|
||||||
});
|
});
|
||||||
socket.close(1011, 'OpenCode event stream unavailable');
|
socket.close(1011, 'OpenCode event stream unavailable');
|
||||||
triggerHealthCheck?.();
|
if (shouldTriggerUpstreamHealthCheck(upstream)) {
|
||||||
|
triggerHealthCheck?.();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user