v0.2.0rc1
Pre-release
Pre-release
0.2.0rc1 — Architecture overhaul
First release candidate for 0.2.0. Major refactor of the backend, queue, activity, and worker systems.
Breaking changes
agentexec.state.redis_backend→agentexec.state.redis(updateAGENTEXEC_STATE_BACKENDif set explicitly)AGENTEXEC_QUEUE_NAME→AGENTEXEC_QUEUE_PREFIX(old name still accepted as alias)- Activity functions are now async (
await ax.activity.create(...),await ax.activity.update(...), etc.) Task.contextis nowMapping[str, Any](raw dict), not a typed BaseModel — hydration happens at execution timeTask.create()is now async- Removed:
set_global_session/get_global_session/remove_global_session— useconfigure_engine/get_session - Removed:
state.backend.publish/subscribe(pubsub),index_add/index_range/index_remove,clear,configure
New features
- Partitioned Redis queues — tasks with
lock_keyroute to dedicated partition queues with per-partition locking and SCAN-based fair dequeue - Activity handler pattern — pluggable persistence via
PostgresHandler(default) andIPCHandler(worker processes) - Task retry with backoff — failed tasks requeue as high priority with
AGENTEXEC_MAX_TASK_RETRIES(default 3) - Kafka backend (experimental) —
pip install agentexec[kafka]for queue and schedule via Kafka (state ops raise NotImplementedError) - Typed worker IPC —
TaskFailed,LogEntry,ActivityUpdatedmessages overmultiprocessing.Queue - Schedule composite keys —
{task_name}:{cron}:{context_hash}for unique schedule identity
Improvements
- Class-based backend architecture with ABCs
Taskis pure data,TaskDefinitionowns behavior- Session management via
configure_engine/get_session(Pool owns the engine) - Status enum extracted to
activity/status.py(no SQLAlchemy dependency) - 277 tests passing across partitions, retries, execute lifecycle, schedules