control: reconnect on EOF and relax rpc text parse

This commit is contained in:
Peter Steinberger
2025-12-09 00:29:20 +00:00
parent 2761c40781
commit ec1ff52dfb
2 changed files with 7 additions and 2 deletions

View File

@@ -407,7 +407,10 @@ final class ControlChannel: ObservableObject {
self.logger.debug("control receive error: \(error.localizedDescription, privacy: .public)")
break
}
if isComplete { break }
if isComplete {
self.logger.debug("control receive complete")
break
}
guard let data else { continue }
self.buffer.append(data)
while let range = buffer.firstRange(of: Data([0x0A])) {
@@ -416,6 +419,8 @@ final class ControlChannel: ObservableObject {
self.handleLine(lineData)
}
}
// If we exit the loop, drop the connection so the next request reconnects.
await self.disconnect()
}
private func handleLine(_ data: Data) {

View File

@@ -535,7 +535,7 @@ export async function runCommandReply(
let lastStreamedAssistant: string | undefined;
const streamAssistantFinal = (msg?: {
role?: string;
content?: unknown[];
content?: unknown;
}) => {
if (!onPartialReply || msg?.role !== "assistant") return;
const textBlocks = Array.isArray(msg.content)