Add abort signal to connect health wait

This commit is contained in:
Nathan Flurry 2026-03-05 20:16:15 -08:00
parent 7d4914c4a2
commit 18473e56e4
3 changed files with 196 additions and 12 deletions

View file

@ -243,6 +243,44 @@ describe("Integration: TypeScript SDK flat session API", () => {
await sdk.dispose();
});
it("aborts the shared health wait when connect signal is aborted", async () => {
const controller = new AbortController();
const customFetch: typeof fetch = async (input, init) => {
const outgoing = new Request(input, init);
const parsed = new URL(outgoing.url);
if (parsed.pathname !== "/v1/health") {
throw new Error(`Unexpected request path during abort test: ${parsed.pathname}`);
}
return new Promise<Response>((_resolve, reject) => {
const onAbort = () => {
outgoing.signal.removeEventListener("abort", onAbort);
reject(outgoing.signal.reason ?? new DOMException("Connect aborted", "AbortError"));
};
if (outgoing.signal.aborted) {
onAbort();
return;
}
outgoing.signal.addEventListener("abort", onAbort, { once: true });
});
};
const sdk = await SandboxAgent.connect({
token,
fetch: customFetch,
signal: controller.signal,
});
const pending = sdk.listAgents();
controller.abort(new DOMException("Connect aborted", "AbortError"));
await expect(pending).rejects.toThrow("Connect aborted");
await sdk.dispose();
});
it("restores a session on stale connection by recreating and replaying history on first prompt", async () => {
const persist = new InMemorySessionPersistDriver({
maxEventsPerSession: 200,