Operand Agency Versions Save

A fast and minimal framework for building agent-integrated systems

v1.2.2

10 months ago

Fixed a bug with broadcasting in an AMQPSpace - https://github.com/operand/agency/pull/79

v1.2.1

10 months ago

Fixes an issue which would cause malformed messages to be repeatedly resent. https://github.com/operand/agency/pull/74. Thanks @wwj718!

v1.2.0

10 months ago

Summary of Changes

  • pika AMQP library replaced with kombu. Kombu brings us a significant step closer to supporting multimedia and other great features such as compression or alternate messaging backends like Redis or Amazon SQS!

  • Fixed an issue preventing heartbeats from being sent causing connection drops.

  • Added generic AMQP connection options class AMQPOptions. Previously custom AMQP options were supplied as a pika.ConnectionParameters object.

  • Moved AMQPSpace and NativeSpace classes into their own files. Update your imports! For example: from agency.space import AMQPSpace should now be: from agency.amqp_space import AMQPSpace

  • Space.add and Space.remove methods are now synchronous. These methods will return only after the agent has been fully added/removed to the space or raises an exception.


The main feature of this release is the switch to the fantastic kombu messaging library. This introduced some breaking changes so the minor version was incremented. agency is now at 1.2.0

I had already been eyeing kombu as a replacement for pika because of the many great features it supports. The heartbeat bug could've been fixed with the pika library, but I decided it would be better to make the switch now.

For one thing, integrating with kombu gets us a huge step closer to multimodal support! And it enables many more useful possibilities like compression etc.

Since the AMQP implementation has been completely rewritten, please report any issues you find.

Thanks so much!

v1.1.1

10 months ago

Removed eventlet library dependency from core library to prevent issues related to eventlet

v1.1.0

10 months ago

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.
    • 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!

Thanks and happy coding!

v1.0.4

11 months ago
  • Moved example classes out of core library