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 SessionHooks { readonly context: SessionContext } export type SessionDomain = Pick< SessionApi, "create" | "get" | "prompt" | "generate" | "command" | "synthetic" | "interrupt" > & { readonly hook: Hooks }