import { Schema } from "effect" import { Agent } from "@opencode-ai/schema/agent" import { SessionMessage } from "./message" import { SessionSchema } from "./schema" import { SessionError } from "@opencode-ai/schema/session-error" export class MessageDecodeError extends Schema.TaggedErrorClass()("Session.MessageDecodeError", { sessionID: SessionSchema.ID, messageID: SessionMessage.ID, }) { override get message() { return `Failed to decode message ${this.messageID} in session ${this.sessionID}` } } export class AgentNotFoundError extends Schema.TaggedErrorClass()("Session.AgentNotFoundError", { sessionID: SessionSchema.ID, agent: Agent.ID, }) { override get message() { return `Agent not found: "${this.agent}"` } } export class StepFailedError extends Schema.TaggedErrorClass()("Session.StepFailedError", { error: SessionError.Error, }) { override get message() { return this.error.message } } export class UserInterruptedError extends Schema.TaggedErrorClass()( "Session.UserInterruptedError", {}, ) { override get message() { return "Session interrupted by user" } }