mirror of
https://github.com/anomalyco/opencode.git
synced 2026-10-26 09:20:09 +00:00
24 lines
1,011 B
TypeScript
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,
|
|
),
|
|
])
|