Simon Willison
Simon Willison
Some miscellaneous thoughts: - Recording which plugins have been installed is obviously a good idea no matter what - Two options for that: `logs.db` or a file in `user_dir()` -...
Assuming we have a recording of the plugins the user has installed previously - with or without timestamps... - We could check it on every call to `llm prompt` and...
For the database, I'm going to do a many-to-many table between `attachments` and `tool_results`.
I'm a bit nervous about async mode and attachments, since I don't think I've had to deal with that before - how should attachments async-resolve URLs?
New table: ```sql CREATE TABLE [tool_results_attachments] ( [tool_result_id] INTEGER REFERENCES [tool_results]([id]), [attachment_id] TEXT REFERENCES [attachments]([id]), [order] INTEGER, PRIMARY KEY ([tool_result_id], [attachment_id]) ); ```
In digging through the code I have a nasty suspicion that attachments are _not_ fully `asyncio` safe - I think sometimes when an async model is executing a prompt it...
`--td` output now looks like this: ``` % llm -T fetch_image_from_url 'Tell me about https://static.simonwillison.net/static/2025/two-pelicans.jpg' --td Tool call: fetch_image_from_url({'image_url': 'https://static.simonwillison.net/static/2025/two-pelicans.jpg'}) Image fetched Attachments: ```