opencode/packages/cli/test/fixture/mini-wait.ts
Andrei Vince b56e25379b
fix(cli): keep mini session waits alive (#50248)
Co-authored-by: Dax Raad <d@ironbay.co>
2026-10-19 13:13:58 -04:00

24 lines
1,011 B
TypeScript

import assert from "node:assert/strict"
import { ClientError, OpenCode } from "@opencode/client/promise"
import { createMiniConnection } from "../../src/mini"
const endpoint = { url: process.argv[2]! }
const connection = createMiniConnection({ endpoint, reconnect: async () => endpoint })
const replacement = await connection.reconnect?.(new AbortController().signal)
if (!replacement) throw new Error("Expected a replacement client")
const timeout = (error: unknown) =>
error instanceof ClientError &&
error.reason === "Transport" &&
error.cause instanceof Error &&
error.cause.name === "TimeoutError"
await Promise.all([
connection.sdk.session.wait({ sessionID: "ses_initial" }),
replacement.session.wait({ sessionID: "ses_reconnected" }),
assert.rejects(OpenCode.make({ baseUrl: endpoint.url }).session.wait({ sessionID: "ses_control" }), timeout),
assert.rejects(
connection.sdk.session.wait({ sessionID: "ses_cancelled" }, { signal: AbortSignal.timeout(100) }),
timeout,
),
])