# The assistant

The Lua tab has an assistant pane that knows the whole scripting API. Describe a feature in plain language ("draw a watermark with my ping") and it writes or edits the script for you, or answers questions about the API. It proposes code as a diff you accept or reject; nothing runs until you accept it and load the script.

## Modes

Mode | What it does
--- | -----------
  **Agent** | Writes or edits the script end to end and hands you a diff to accept or reject.
  **Ask** | Answers a question about the API without touching your script.
  **Plan** | Lays out the steps for a change first, so you can steer before any code is written.

## Streaming and the thought-chain

Replies stream in as they are generated, so you see the answer build word by word. When the model reasons before answering, that reasoning shows in a separate **thought** panel above the reply — expand it to follow how it reached the code, collapse it to just read the result.

## It can inspect the live game

The assistant is not limited to what you type. It can call tools mid-reply to look things up and check its work against the running game before it writes code:

- **Match history** and **account list** — your recent matches and the game accounts saved on this install.
- **Web fetch** — read a public web page (docs, a reference) when you point it at one.
- **read_memory**, **read_game_state**, **check_symbol_exists**, **call_function** — probe the live game's memory, state and symbols, so the code it writes targets what is actually there rather than a guess.

You will see each tool run in the reply as it happens; the assistant folds the result back in and keeps going.

## Free limit and your own key

The assistant is free for **20 messages over the lifetime of your account** on the shared model. After that it stops with a quota notice.

To keep going without the limit, bring your own API key: open the assistant settings, paste an **OpenAI** or **Anthropic** key, and pick a **model** from the picker. Requests then run on your key with no message cap, and your key is never stored. The model picker also lets you choose which model answers when you are on your own key.

## Commands

Command | What it does
--- | -----------
  **/clear** | Start a fresh conversation, dropping the current history.
  **/compact** | Summarise the conversation so far into a shorter context and continue, when a long chat starts to lose the thread.

## Working with it

- Describe the feature in plain language, or ask a question in **Ask** mode.
- Review the proposed diff. Accept applies it to the script; reject drops it.
- Load or reload the script from the **Scripts** panel to run it.

The assistant is taught the same API this documentation covers, so anything documented here you can ask it to write against.