Create a platform-agnostic chat interface abstraction that allows the agent system to work with multiple chat platforms (Telegram, Zulip, Slack, etc.) without duplicating core logic.
Omni/Agent.hs - core agent engine (platform-agnostic)Omni/Ava.hs - telegram-specific wrapperOmni.Agent (core)
├─ skills system
├─ tool registry
└─ provider interface
Omni.Agent.Chat (NEW - generic adapter)
├─ input: platform-agnostic message type
├─ output: platform-agnostic response type
└─ handles: conversation state, skill loading, tool execution
Omni.Agent.Chat.Telegram
└─ maps telegram api ↔ generic chat types
Omni.Agent.Chat.Zulip
└─ maps zulip api ↔ generic chat types
Omni.Agent.Chat.Slack
└─ maps slack api ↔ generic chat types
data ChatMessage = ChatMessage
{ sender :: UserId
, text :: Text
, attachments :: [Attachment]
, thread :: Maybe ThreadId
}
data ChatResponse = ChatResponse
{ text :: Text
, formatting :: MarkupType -- markdown, html, plain
, actions :: [Action] -- buttons, edits, etc
}
Pipeline: dev failed (run=dev-t-462-1771468859): Agent exited with code -15: