29 lines
823 B
TypeScript
29 lines
823 B
TypeScript
import { createOpencodeClient } from "@opencode-ai/sdk/v2"
|
|
import { SessionID } from "@/session/schema"
|
|
import { Schema } from "effect"
|
|
|
|
const decodeSessionID = Schema.decodeUnknownSync(SessionID)
|
|
|
|
export async function validateSession(input: {
|
|
url: string
|
|
sessionID?: string
|
|
directory?: string
|
|
fetch?: typeof fetch
|
|
headers?: RequestInit["headers"]
|
|
}) {
|
|
if (!input.sessionID) return
|
|
|
|
let sessionID: SessionID
|
|
try {
|
|
sessionID = decodeSessionID(input.sessionID)
|
|
} catch (error) {
|
|
throw new Error(`Invalid session ID: ${error instanceof Error ? error.message : "unknown error"}`, { cause: error })
|
|
}
|
|
|
|
await createOpencodeClient({
|
|
baseUrl: input.url,
|
|
directory: input.directory,
|
|
fetch: input.fetch,
|
|
headers: input.headers,
|
|
}).session.get({ sessionID }, { throwOnError: true })
|
|
}
|