Skip to content

Commit 42d4617

Browse files
committed
Version bump.
1 parent a023a4d commit 42d4617

2 files changed

Lines changed: 90 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,94 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
### Breaking Changes
6+
7+
**Self-describing JSON serialization replaces pickle**
8+
- Task results now use JSON serialization with embedded type information (similar to pickle)
9+
- Automatically stores fully qualified class name with data for type reconstruction
10+
- No longer requires `TaskDefinition` registry for result deserialization
11+
- `ax.gather()` now works with tasks created via `ax.enqueue()` without pool context
12+
- **Migration**: Clear Redis or wait for TTL expiry on old pickled results
13+
14+
**TaskHandler Protocol enforces BaseModel returns**
15+
- Task handlers must return a Pydantic `BaseModel` instance (not `None` or arbitrary objects)
16+
- Return type is automatically inferred and validated at registration time
17+
- Enables type-safe result retrieval and automatic serialization
18+
19+
### New Features
20+
21+
**State backend abstraction**
22+
- Introduced `StateBackend` Protocol for pluggable state storage implementations
23+
- Current Redis implementation moved to `agentexec.state.redis_backend`
24+
- Backend modules verified against protocol at import time via `cast()`
25+
- Prepares foundation for alternative backends (in-memory, DynamoDB, etc.)
26+
27+
**Improved async patterns**
28+
- `brpop()` is now a proper async function (was sync returning coroutine)
29+
- Consistent async/await usage across state operations
30+
- Better type hints and IDE support
31+
32+
**Enhanced type safety**
33+
- `TaskHandler` Protocol with support for both sync and async handlers
34+
- Proper type annotations for all state backend operations
35+
- `serialize()` and `deserialize()` type-enforced for `BaseModel` only
36+
37+
### Documentation
38+
39+
**Comprehensive documentation added**
40+
- API reference for core modules (activity, pipeline, runner, task)
41+
- Conceptual guides (architecture, task lifecycle, worker pool)
42+
- Deployment guides (Docker, production best practices)
43+
- Usage guides (basic usage, pipelines, FastAPI integration, OpenAI runner)
44+
- Getting started (installation, quickstart, configuration)
45+
- Contributing guide
46+
47+
### UI & Tooling
48+
49+
**React frontend and component library**
50+
- Added `agentexec-ui` npm package with reusable React components
51+
- Pre-built UI for agent monitoring and activity tracking
52+
- TanStack Query integration for real-time updates
53+
- React Router for navigation between agent list and detail views
54+
55+
**Docker deployment**
56+
- Docker worker image for containerized deployments
57+
- GitHub Actions for automated Docker image publishing to GitHub Container Registry
58+
- GitHub Actions for automated npm publishing of UI components
59+
60+
### Testing
61+
62+
**Comprehensive test coverage**
63+
- Achieved 89% code coverage
64+
- Added unit tests for all core modules:
65+
- State backend and serialization (`test_state.py`, `test_state_backend.py`)
66+
- Self-describing results (`test_self_describing_results.py`)
67+
- Activity tracking schemas (`test_activity_schemas.py`)
68+
- Pipeline orchestration (`test_pipeline.py`)
69+
- Task queue operations (`test_queue.py`)
70+
- Worker events and logging (`test_worker_event.py`, `test_worker_logging.py`)
71+
- Database operations (`test_db.py`)
72+
- Configuration (`test_config.py`)
73+
74+
### Internal Improvements
75+
76+
**Redis client refactoring**
77+
- Removed `core/redis_client.py` in favor of state backend abstraction
78+
- Lazy connection initialization for both async and sync Redis clients
79+
- Proper connection cleanup in `backend.close()`
80+
81+
**Key formatting consistency**
82+
- All state keys use consistent `agentexec:` prefix via `backend.format_key()`
83+
- Results: `agentexec:result:{agent_id}`
84+
- Events: `agentexec:event:{name}:{id}`
85+
- Logs channel: `agentexec:logs`
86+
87+
**Standardized function signatures**
88+
- `get_result()` and `gather()` return `BaseModel` directly (not JSON strings)
89+
- Consistent parameter ordering across state module functions
90+
- Better docstrings with type information
91+
392
## v0.1.2
493

594
### New Features

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "agentexec"
3-
version = "0.1.2"
3+
version = "0.1.3"
44
description = "Production-ready orchestration for OpenAI Agents with Redis-backed coordination, activity tracking, and workflow management"
55
readme = "README.md"
66
requires-python = ">=3.11"

0 commit comments

Comments
 (0)