# What is Yamvil

> :warning: This is a Work in Progress&#x20;
>
> The Runtime Library is totally usable as it is just a "normal" Android Library.
>
> The Compiler Plugin works in terms of compilation errors shown in the Build output, but as K2 IDE Plugin [doesn't work yet on Android Studio](https://issuetracker.google.com/issues/341233001), the errors or warnings thrown by Yamvil doesn't show up in Android Studio, yet.

## The Runtime Library

The runtime Library brings you three main base classes:

* MVIViewModel\<UiState, UiEvent>
* MVIFragment\<UiState, UiEvent, UiAction>
* Actionable (one-time actions)

## The Compiler Plugin

The Compiler Plugin checks a few pitfalls for us so we'll implement MVI without creating any bugs.

### Fragments

MVIFragment as a base class brings all the infrastructure needed to use MVI properly, besides one detail.

The Compiler plugin will throw an error (or a warning instead if you choose to) if you've implemented `Actionable` on your `UiState` but forgot to call `state.onAction` in `observeUiState()`.

### Composable functions

The compiler plugin will validate that a Composable is written correctly, meaning it has

* an `uiState` parameter of the type of its ViewModel (matched by name)
* an `handleEvent()` parameter function getting the Action Type of its ViewModel


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.galex.dev/yamvil/what-is-yamvil.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
