Merge pull request #2166 from frizynn/fix/rpc-bugs-and-memory-leaks

fix(rpc): resolve double-set race, missing error ID, and stream handler
This commit is contained in:
TÂCHES 2026-03-25 22:15:27 -06:00 committed by GitHub
commit 13dcd1dbd9
3 changed files with 8 additions and 4 deletions

View file

@ -48,11 +48,17 @@ export function attachJsonlLineReader(stream: Readable, onLine: (line: string) =
}
};
const onError = (_err: Error) => {
// Stream errors are non-fatal for JSONL reading
};
stream.on("data", onData);
stream.on("end", onEnd);
stream.on("error", onError);
return () => {
stream.off("data", onData);
stream.off("end", onEnd);
stream.off("error", onError);
};
}

View file

@ -488,8 +488,6 @@ export class RpcClient {
const fullCommand = { ...command, id } as RpcCommand;
return new Promise((resolve, reject) => {
this.pendingRequests.set(id, { resolve, reject });
const timeout = setTimeout(() => {
this.pendingRequests.delete(id);
reject(new Error(`Timeout waiting for response to ${command.type}. Stderr: ${this.stderr}`));

View file

@ -710,8 +710,8 @@ export async function runRpcMode(session: AgentSession): Promise<never> {
}
default: {
const unknownCommand = command as { type: string };
return error(undefined, unknownCommand.type, `Unknown command: ${unknownCommand.type}`);
const unknownCommand = command as { type: string; id?: string };
return error(unknownCommand.id, unknownCommand.type, `Unknown command: ${unknownCommand.type}`);
}
}
};