0.2a0
Pre-release
Pre-release
- Tools can now ask the user questions mid-execution. Tools that declare a
contextparameter receive aToolContextobject, andawait context.ask_user(...)can ask a yes/no, multiple-choice (options=[...]) or free-text (free_text=True) question. While a question is unanswered the agent turn suspends: the question renders as a form in the chat UI and persists to the internal database, so suspended conversations survive a server restart. Once answered, the tool re-executes from the top with stored answers replayed, so callask_user()before performing side effects. #20 - New built-in
save_querytool: the agent can save SQL it has written as a Datasette stored query. Saving always requires human approval - the agent shows the full SQL plus the proposed name, database and visibility, and nothing is stored until you click Yes. #20 ask_user()accepts anhtml=parameter for displaying trusted HTML above the question, used bysave_queryto show exactly what is being approved.- Suspension and resume are now built on
llm.PauseChainand chain resume, so resumed tool calls emit the same SSE events as live ones. The plugin now depends onllm>=0.32a3. - Updated the system prompt to avoid common mistakes made by smaller locally-hosted models, such as passing a literal
kwargsargument or callingsql_querywithqueryinstead ofsql. Thanks, Paul Mison. #14 - Tool calls now stream to the UI as they happen.
- Each response now has its own copy button. #19