Welcome to Ash Chronicle — your quick, informal digest of what’s new and notable in the world of Ash Framework. Got something cool? Drop it in the #showcase channel on Discord!
Check out Ash Premium Support from Alembic.
Sponsor me if you like what I do. To all of my current sponsors: thank you ❤️
We’ve had lots of trouble in the past with our website not doing the heavy lifting that it should to explain what Ash is. I’m hoping we’ve mostly put the nail in that coffin with our new interactive tour on the home page, and a revamp of the What is Ash guide. Now if people wonder what Ash is, sending them a link to ash-hq.org is a reasonable way to explain 🎉
A community-member-contributed improvement to AshAdmin allows for arguments of type `:file` to automatically support file uploads. It is a very cool and useful addition, with zero work required on your end to benefit from it. With the ability now to look up related records with typeaheads/selects, support for unions, json editors for map fields, markdown editors for text fields, and now file upload, AshAdmin is proving more and more useful. Not very pretty, though 😅. Anyone who wants to improve that, give me a shout.
Support for non-OpenAI models in prompt-backed-actions (structured outputs) via adapters. The adapter is inferred from the model, and supplied via an option otherwise. There are now three available adapters, based on the mechanism for extracting a structured output from the model. There are three builtin adapters.
`AshAi.Actions.Prompt.Adapter.StructuredOutput` - Use an LLM that is guaranteed to return the requested JSON Schema.
`AshAi.Actions.Prompt.Adapter.CompletionTool` - Use an LLM and run it until it calls a "completion" tool, up to `max_runs` times.
`AshAi.Actions.Prompt.Adapter.RequestJson` - Use an LLM and ask it nicely to respond with a specific JSON.
Usage rules can get pretty big, especially as we add them to more and more packages. However, LLMs are smart and can often follow breadcrumbs without necessarily needing all of the context in their face. A new option is available for `mix usage_rules` that allows you to sync each package to its own file in a directory, or even just point to that package in your `deps` folder directly!
James did some amazing work to completely revamp the reactor documentation. While very full featured, it was a bit sparse on docs before, as it often goes with power tools made by busy people. Reactor’s brand new fancy documentation has been published. Take a look at the docs and tell us what you think!
Thanks to Abhishek Tripathi, the names and, in cases where possible, links to the Github profiles of contributors, will be included in release notes. We firmly believe in giving credit where credit is due, and this is one of the best ways to do it. We also have a special role in our discord server for contributors of any kind, from typo fixes to features. If you haven’t gotten the role and you’ve contributed to any `ash-project` package, please let me know! If you’re not in the discord, what are you even doing with your life??
AshNeo4j, a new community extension has been released. It is a data layer for Ash and Neo4j! Really excited to see what folks can build with it, and glad to see more folks making non-relational data layers for Ash.
AshOutstanding is a community extension designed to help you implement the `Outstanding` protocol for your Ash resources. Very cool idea!
AshCommanded is a community extension designed to help you work with the Commanded framework in a declarative way that plays well with the rest of Ash. Commanded is really cool, and seeing folks build bridges makes me very happy.
These packages are all labors of love from our very own core team member James Harton. It was initially licensed differently, but is now MIT licensed and exists under the ash-project organization, aligning its license with Reactor itself. This is effectively a donation to a more permissive license by James, who was under no obligation to make this change. He did so to make it easier for folks using Reactor to also use his other Reactor-related tooling. You should buy him a beer if you use his stuff!
My recent article did the rounds on hacker news, posting it here for folks who didn’t catch it.
Nicer inspect protocol implementation for resources, putting relationships & __meta__ at the end since they are likely larger, and least likely to be loaded.
Updated usage-rules.md to include more guidance around codegen, and to remove some incorrect example code
ReactorReq provides step types for working with Req. Check it out on GitHub.
ReactorFile is now MIT licensed and exists under the ash-project organization, aligning its license with Reactor itself, just like `ReactorReq`.
ReactorFile is builtin step types for working with files, and is very fancy. Remember that reactor is a saga orchestrator, so if something goes wrong, all the stuff gets put back 😎 Check it out on GitHub.
ReactorProcess is now MIT licensed and exists under the ash-project organization, aligning its license with Reactor itself, just like `ReactorReq` and `ReactorFile`.
ReactorProcess is builtin step types for working with process, which is naturally something we do in Elixir quite often 🥸 Check it out on GitHub.
Add adapters for prompt backed actions
Add completion tool adapter, and choose it by default for Anthropic models
Don’t set `consolidate_protocols` option when installing packages. This is a holdover from essentially 0.1 of igniter and has no reason to continue to exist 😁
Add `Igniter.rm`, which removes files, tracking this removal in state to “do the right thing” when the changes are accepted and as new files are created/updated.
Add file upload support, and configuration for file fields and their behavior.
Add an optional flag to expose timestamps in version resources as public attributes.
No posts

Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.