import type { SessionApi } from "@opencode-ai/client/effect/api" import type { Message, SystemPart } from "@opencode-ai/ai" import type { Agent } from "@opencode-ai/schema/agent" import type { Model } from "@opencode-ai/schema/model" import type { Session } from "@opencode-ai/schema/session" import type { JsonSchema } from "effect" import type { Hooks } from "./registration.js" export interface SessionContext { readonly sessionID: Session.ID readonly agent: Agent.ID readonly model: Model.Ref system: Array messages: Array tools: Record } export interface SessionHttpRequest { readonly sessionID: Session.ID readonly agent: Agent.ID readonly model: Model.Ref request: Request } export interface SessionHttpResponse { readonly sessionID: Session.ID readonly agent: Agent.ID readonly model: Model.Ref readonly request: Request response: Response } export interface SessionHooks { readonly context: SessionContext readonly "http.request": SessionHttpRequest readonly "http.response": SessionHttpResponse } export type SessionDomain = Pick< SessionApi, "create" | "get" | "prompt" | "generate" | "command" | "synthetic" | "interrupt" | "rename" | "wait" > & { readonly hook: Hooks }