Summary of 1.1.0 changes
* `Agent` class changes:
* The concept of "fully qualified ids" and nested namespacing has been
removed. All agents may declare any string `id` and will receive messages at
that `id` and messages that are broadcast in their space.
* For better compatibility with the AMQP standard, agent id's must now:
- Be 1 to 255 characters in length
- Cannot start with the reserved sequence `"amq."`
* `_after_add` and `_before_remove` callbacks added for implementing
setup/teardown logic for agents.
* `_before_action` callback added (`_after_action` already existed)
* `Space` class changes:
* No longer extends the `Agent` class. If one wants to expose a space
instance as an agent as well, they can simply extend both the `Space` and
`Agent` classes to do so.
* `Space` is now an abstract parent class and should not be instantiated
directly. There are now two `Space` implementations to choose from:
* `NativeSpace`
- Connects in-process agents using multithreading and the native `queue`
class
- Limited to agents in the same process
- Useful for single process applications or testing
* `AMQPSpace`
- Connects agents via an AMQP broker
- Allows distributing agents across processes/systems
- Requires AMQP server such as RabbitMQ
- Configurable connection from environment variables or you can provide
your own `pika.ConnectionParameters` instance to configure connectivity
to your needs.
* Nested spaces, along with "fully qualified ids" are no longer directly
supported. You can easily implement a custom hierarchy or namespacing
approach if you need to for your application.
* Documentation updates
* Moved walkthrough to the [docs directory](./docs/).
* Rewrote summary and tried to better clarify the project.
* Added high level roadmap on main page.
* Demo changes
* Updated demo to run either AMQP or native space examples in containers
* Docker configuration reworked to use local agency package for
experimentation and development
* `WebApp` class changes
* Does not extend `Space` anymore and is no longer added to the demo space
as a distinct agent
* Rewrittent to add/remove demo user as the web client connects
* Demo OpenAI agents now use `_after_add` to auto-discover available actions
upon being added to a space
* Updated tests to include e2e tests of both native/amqp
---
I'm very excited for this release as I think it takes a solid step in the right
direction, and improves on some earlier design decisions, leaving the project on
better footing for the next series of improvements.
With the addition of AMQP support, the `id` related changes, and others, I'm
hoping that Agency is less opinionated about the organization and naming of the
agents and systems in your application. No more forced hierarchy or "fully
qualified ids" etc. And AMQP opens the door for scalability and many more
interesting use cases.
Since the API changes are not backwards compatible, I bumped the minor version.
The latest `agency` version is now 1.1.0.
Moving forward, expect more minor version increments when significant or
non-backwards compatible features are added. Patch updates will maintain
backwards compatibility with their minor versions. (This hasn't been true yet)
[If you have issues or questions with any of these changes please let me know
about it!](https://github.com/operand/agency/issues)
Thanks and happy coding!