Releases: UnicoLab/agentomatic
v0.3.0
v0.3.0 (2026-06-14)
This release is published under the MIT License.
Features
- Implement memory management, platform features, and router updates (
5cf8aa8)
Detailed Changes: v0.2.0...v0.3.0
v0.2.0
v0.2.0 (2026-06-14)
This release is published under the MIT License.
Documentation
- Add telemetry and feedback correlation notes for A/B testing (
2c27a86)
Features
-
Implement advanced platform features (HITL, checkpointer, structured output, fork, A/B routing, fallbacks, hooks) and update documentation (
c1a55c3) -
Increase core test coverage over 85% and enhance homepage aesthetics (
98f28f5)
Testing
- Enhance unit test coverage for sqlalchemy store, sync checkpointers, and structured fallbacks (
91ab042)
Detailed Changes: v0.1.1...v0.2.0
v0.1.1
v0.1.1 (2026-06-13)
This release is published under the MIT License.
Bug Fixes
-
Resolve import block sorting and unused typing imports (
99c83ba) -
ci: Force Node.js 24 runtime and disable PyPI attestations to remove warnings (
275a233)
Documentation
-
Add detailed input and output schemas guide and improve custom schema extraction (
4c5e079) -
Expand agent structure, customization overrides, and platform settings references (
5aa9956) -
Overhaul documentation with detailed guides, visual diagrams, and logo accents (
ef3de5a) -
agnostic: Replace all remaining hr_bot references with project-agnostic placeholders (
4f868d6) -
prompts: Document versioned prompts and PromptManager usage (
f0fe872)
Detailed Changes: v0.1.0...v0.1.1
v0.1.0
v0.1.0 (2026-06-13)
This release is published under the MIT License.
Bug Fixes
- Add parallel-safe Annotated reducers to BaseAgentState (
04ed6b8)
All state fields now use Annotated reducers for LangGraph parallel fan-out compatibility:
- metadata: dict merge (last-writer-wins per key)
- response/agent_type/routing_decision/error: last-writer-wins
- suggestions/citations/steps_taken: list concatenation (operator.add)
- messages: add_messages (existing)
This fixes 'Can receive only one value per step' errors when parallel graph branches write to the same state field.
-
ci: Fix codecov param on v7, add pr-title check filter, and import Callable (
490583c) -
ci: Fix semantic release token and upgrade deprecated Node.js 20 actions (
7dfea0d) -
release: Disable semantic-release build command and pypi upload (
2b1c427)
Chores
-
Fix workflows, docker, setup-telemetry, and resolve all type/mypy errors for first release (
54cd42d) -
Run pre-commit quality gate autofix, add importlib.util, resolve mypy and formatting (
1140c7b)
Documentation
-
Comprehensive v0.1.0 release documentation (
06c34b1) -
Create root CHANGELOG.md with detailed release notes
-
Update docs/changelog.md with full feature breakdown
-
Update docs/index.md with badges, expanded features, architecture diagram
-
Update docs/getting-started/installation.md with extras table, pip/uv/poetry tabs
-
Update docs/getting-started/quickstart.md with expected outputs, next steps
-
Update docs/cli/commands.md with click-style help for all 7 commands
-
Update docs/guide/optimization.md with all 7 strategies, GEval, per-agent pattern
-
Fix noqa WPS433 → F811 in optimize/report.py
-
Format cli/commands.py
-
mkdocs build --strict passes with 0 errors
-
Mkdocs Material + CI/CD + semantic release + pre-commit (
2f672e8)
Documentation (MkDocs Material): - 16 documentation pages (getting-started, user guide, CLI, architecture) - mike versioning (dev/latest aliases) - Dark/light theme with deep purple accent - Mermaid diagrams, tabbed content, code copy
CI/CD (GitHub Actions): - ci.yml: lint (ruff), test (Python 3.11/3.12/3.13 matrix), typecheck (mypy) - release.yml: python-semantic-release + PyPI publish + GitHub Release - docs.yml: auto-deploy docs via mike on push/tag
Pre-commit: - trailing whitespace, end-of-file-fixer, check-yaml/toml/json - ruff lint + format - mypy type checking - conventional-pre-commit (commit message enforcement)
Author: UnicoLab - Updated pyproject.toml, LICENSE, README, all URLs - Added semantic-release config, coverage thresholds - Added docs and cli optional deps - Cleaned up 12 stale test files, removed conflicting pytest.ini - Enhanced Makefile with docs-serve, docs-build, docs-deploy, check-all
88/88 tests passing, docs build clean in strict mode
Features
-
Add Pixar logo, fix 130 lint errors, format all files (
902072d) -
Add assets/logo.png (Pixar-style 3D robot mascot)
-
Update README.md with centered logo
-
Fix 130 ruff lint errors (import sorting, unused imports, etc.)
-
Reformat 51 files with ruff format
-
All 161 tests pass, all linting clean
-
Verify CI workflows reference UnicoLab/agentomatic
-
Add PromptOptimizationLoop — local-first prompt optimizer (
3b4143f)
Generic, framework-agnostic iterative prompt optimization engine:
-
PromptOptimizationLoop: evaluate → analyse failures → LLM rewrite → repeat
-
4 rewrite strategies: iterative, adversarial, structured, minimal
-
Built-in scorers: keyword_overlap, contains_score
-
Pluggable scoring: sync or async (LLM-as-a-judge)
-
Pluggable rewrite LLM: any LangChain model or raw callable
-
Early stopping with patience
-
Rich HTML reports with SVG evolution charts
-
JSON experiment tracking for reproducibility
-
Zero project-specific deps — works with any agent
-
Complete framework with SQLAlchemy storage, full example, and integration tests (
c358ed1)
New modules:
- storage/models.py: SQLAlchemy ORM (ThreadModel, MessageModel, FeedbackModel)
- storage/sqlalchemy.py: Async SQLAlchemyStore with connection pooling
- examples/full_agent/: Full weather agent demonstrating ALL overwrite options
(manifest, graph, nodes, config, schemas, tools, api, prompts, langgraph.json)
Fixes:
- platform.py: Mount routers for programmatic agents at build-time
(previously only mounted during lifespan, breaking TestClient)
Tests:
-
test_integration.py: 20 integration tests (platform + agent endpoints)
-
41/41 tests passing (unit + integration)
-
Deep DeepEval + HolySheet integration (
fc2dc44)
Metrics (metrics.py): - GEvalMetric — DeepEval GEval with custom criteria + eval_steps (chain-of-thought LLM-as-judge, Ollama fallback) - DeepEvalMetric — wrap ANY deepeval metric instance as BaseMetric - RedTeamMetric — adversarial safety scoring (bias+toxicity) - resolve_metrics() now supports 'geval:criteria' shorthand syntax - All DeepEval imports gracefully degrade via try/except
Reports (report.py): - HolySheet integration for interactive React dashboards - KPI cards (baseline, best, improvement, duration, iteration) - LineChart (score vs iteration per metric) - DataTable (full iteration history) - Markdown (prompt diffs via difflib) - Falls back to inline SVG/HTML if HolySheet not installed
Synthesizer (synthesizer.py): - generate_from_docs() — DeepEval Synthesizer.generate_goldens_from_docs() - red_team() — DeepEval RedTeamer with 40+ vulnerability scans - to_deepeval_dataset() / from_deepeval_dataset() — bidirectional bridge - Convenience: generate_from_docs(), red_team() at module level
Dependencies: - optimize extra: deepeval>=2.0, holysheet>=0.1
Tests: 139/139 passing | Docs: builds clean
-
Make skip_paths customizable in AuthMiddleware (
acc6de2) -
Optimization endpoints, feedback collection, OpenTelemetry (
3dcfc8c)
API Endpoints: - POST /{agent}/optimize/invoke — full pipeline context (retrieval_context, tool_calls, reasoning, citations) for DeepEval metrics - POST /{agent}/feedback — async user feedback (thumbs, rating, correction) - GET /{agent}/feedback — list feedback entries - GET /{agent}/feedback/export — JSONL export for optimization datasets
Feedback System (middleware/feedback.py): - FeedbackCollector — async collector with in-memory buffer + BaseStore backend - @collect_feedback decorator — auto-record agent I/O for dataset building - Module-level singleton via get_collector()/set_collector() - Corrections feed back as expected_answers for optimization
OpenTelemetry (observability/telemetry.py): - setup_telemetry(app) — auto-configures from env vars - Auto-instruments FastAPI + httpx - @Traced decorator — creates spans for any sync/async function - OTLP exporter (gRPC → HTTP fallback) or ConsoleSpanExporter - Graceful no-op when opentelemetry not installed
Runner Context (optimize/runner.py): - RunResult now carries retrieval_context, tool_calls, reasoning, steps_taken - Auto-tries /optimize/invoke first, falls back to /invoke - submit_feedback() method for feeding optimization results back
Platform (core/platform.py): - enable_feedback=True (default) — auto-attaches feedback endpoints - enable_telemetry=True (default) — auto-configures OTEL on build()
Dependencies: - telemetry = [opentelemetry-api, opentelemetry-sdk, fastapi+httpx instrumentors] - all extra now includes telemetry
Tests: 161/161 passing | Docs: builds clean
- Production-ready pluggable architecture (
f096a9d)
Storage: - BaseStore ABC defining the universal storage protocol - MemoryStore and SQLAlchemyStore both inherit BaseStore - Users can implement RedisStore, MongoStore, etc. by subclassing - Platform accepts store= param with auto-init/close lifecycle
Middleware pipeline: - AuthMiddleware: API key auth via header/query param - RateLimitMiddleware: sliding-window per-IP rate limiter - MetricsMiddleware: Prometheus counters + histograms - All toggleable via platform constructor params - Custom middleware via middleware=[] param
Platform integration: - Storage wired into router_factory (threads, messages, feedback) - Health endpoint includes storage health check - /api/v1/storage/stats and /api/v1/feedback endpoints - Lifecycle hooks properly init/close storage
Tests: - 63/63 passing (21 unit + 42 integration) - Coverage: invoke, chat, stream, A2A, threads, lifecycle, middleware, storage, feedback, programmatic reg, custom routers
- Prompt optimization engine with DSPy-inspired strategies (
c12f00e)
Optimization Module (agentomatic.optimize): - PromptOptimizer — like model.fit() for prompts -...