Model the AG-UI protocol as an in-process API of Java-style interfaces and
classes, mirroring the official AG-UI Java SDK, and build it as a Kotlin
Multiplatform library with two Ktor transport modules.
Modules:
- api: BaseEvent sealed hierarchy (all AG-UI event types), messages, state,
tool, context, RunAgentInput/Parameters, Agent/AgentSubscriber/
EventDispatcher, AguiJson (kotlinx.serialization, "type" discriminator),
plus a SerializersModule registering every event subtype polymorphically.
- client: HttpAgent over Ktor SSE (POST RunAgentInput -> stream BaseEvent),
implementing the Agent interface.
- server: Application.agui()/Route.aguiAgent() exposing an Agent behind a
POST + SSE endpoint via SSEServerContent, plus a runnable sample.
Tests: api serialization round-trips, client SSE decode against a real
test-host server, server endpoint integration.