agentomatic 0.1.1__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentomatic-0.1.1 → agentomatic-0.3.0}/CHANGELOG.md +30 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/PKG-INFO +18 -2
- {agentomatic-0.1.1 → agentomatic-0.3.0}/README.md +17 -1
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/configuration.md +12 -2
- agentomatic-0.3.0/docs/guide/platform-features.md +689 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/prompts.md +5 -4
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/schemas.md +67 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/storage.md +15 -1
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/index.md +15 -15
- {agentomatic-0.1.1 → agentomatic-0.3.0}/mkdocs.yml +1 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/pyproject.toml +3 -1
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/__init__.py +2 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/_version.py +1 -1
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/core/__init__.py +14 -0
- agentomatic-0.3.0/src/agentomatic/core/memory_manager.py +349 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/core/platform.py +23 -6
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/core/registry.py +3 -0
- agentomatic-0.3.0/src/agentomatic/core/router_factory.py +1213 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/core/state.py +4 -0
- agentomatic-0.3.0/src/agentomatic/providers/__init__.py +21 -0
- agentomatic-0.3.0/src/agentomatic/providers/llm.py +223 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/storage/__init__.py +6 -2
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/storage/base.py +108 -0
- agentomatic-0.3.0/src/agentomatic/storage/checkpointer.py +254 -0
- agentomatic-0.3.0/src/agentomatic/storage/memory.py +396 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/storage/models.py +68 -1
- agentomatic-0.3.0/src/agentomatic/storage/sqlalchemy.py +609 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/tests/test_agentomatic.py +191 -1
- {agentomatic-0.1.1 → agentomatic-0.3.0}/tests/test_integration.py +54 -5
- agentomatic-0.3.0/tests/test_platform_features.py +1660 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/uv.lock +1 -1
- agentomatic-0.1.1/src/agentomatic/core/router_factory.py +0 -621
- agentomatic-0.1.1/src/agentomatic/providers/__init__.py +0 -3
- agentomatic-0.1.1/src/agentomatic/providers/llm.py +0 -116
- agentomatic-0.1.1/src/agentomatic/storage/memory.py +0 -167
- agentomatic-0.1.1/src/agentomatic/storage/sqlalchemy.py +0 -317
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/config.toml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/ar-SA.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/bn.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/da-DK.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/de-DE.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/el-GR.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/en-US.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/es.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/fr-FR.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/gu.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/he-IL.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/hi.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/it.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/ja.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/kn.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/ko.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/ml.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/mr.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/nl.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/pt-PT.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/ta.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/te.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/zh-CN.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.chainlit/translations/zh-TW.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.dockerignore +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.env.example +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.github/FUNDING.yml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.github/workflows/ci.yml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.github/workflows/docs.yml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.github/workflows/manual-docs.yml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.github/workflows/manual-pypi.yml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.github/workflows/pr-checks.yml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.github/workflows/release.yml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.gitignore +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.pre-commit-config.yaml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/.vscode-upload.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/CONTRIBUTING.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/Dockerfile +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/Dockerfile.distroless +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/LICENSE +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/Makefile +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/TODO.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/assets/logo.png +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docker-compose.yml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/FRONTEND_API_GUIDE.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/architecture/api-reference.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/architecture/overview.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/assets/architecture_diagram.png +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/assets/logo.png +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/assets/optimization_flow.png +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/changelog.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/cli/commands.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/contributing.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/getting-started/first-agent.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/getting-started/installation.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/getting-started/quickstart.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/agent-structure.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/debug-ui.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/middleware.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/optimization.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/telemetry.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/docs/guide/templates.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/README.md +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/agents/weather/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/agents/weather/api.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/agents/weather/config.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/agents/weather/graph.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/agents/weather/langgraph.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/agents/weather/nodes.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/agents/weather/prompts.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/agents/weather/schemas.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/agents/weather/tools.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/full_agent/main.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/hello_agent/agents/hello/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/hello_agent/agents/hello/graph.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/hello_agent/agents/hello/nodes.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/examples/hello_agent/main.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/cli/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/cli/commands.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/cli/templates.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/config/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/config/defaults.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/config/settings.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/core/lifespan.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/core/manifest.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/middleware/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/middleware/auth.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/middleware/feedback.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/middleware/logging.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/middleware/metrics.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/middleware/rate_limit.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/observability/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/observability/concurrency.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/observability/metrics.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/observability/telemetry.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/optimize/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/optimize/dataset.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/optimize/loop.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/optimize/metrics.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/optimize/optimizer.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/optimize/report.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/optimize/runner.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/optimize/strategies.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/optimize/synthesizer.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/prompts/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/prompts/manager.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/protocols/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/protocols/decorators.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/providers/embeddings.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/py.typed +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/ui/.chainlit/config.toml +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/ui/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agentomatic/ui/chat.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/alpha/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/alpha/agent.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/alpha/api.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/alpha/config.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/alpha/prompts.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/alpha/schemas.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/alpha/state.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/beta/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/beta/agent.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/beta/api.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/beta/config.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/beta/prompts.json +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/beta/schemas.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/agents/beta/state.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/app/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/app/api.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/app/dependencies.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/app/main.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/app/settings.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/common/__init__.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/common/agent_state.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/common/api_decorators.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/common/base_agent.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/common/llm_factory.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/common/prompt_manager.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/src/common/utilities.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/tests/test_cli.py +0 -0
- {agentomatic-0.1.1 → agentomatic-0.3.0}/tests/test_optimize.py +0 -0
|
@@ -1,6 +1,36 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v0.3.0 (2026-06-14)
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
- Implement memory management, platform features, and router updates
|
|
9
|
+
([`5cf8aa8`](https://github.com/UnicoLab/agentomatic/commit/5cf8aa88ef750e2fa443948981aad2f1f9f1f9c4))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## v0.2.0 (2026-06-14)
|
|
13
|
+
|
|
14
|
+
### Documentation
|
|
15
|
+
|
|
16
|
+
- Add telemetry and feedback correlation notes for A/B testing
|
|
17
|
+
([`2c27a86`](https://github.com/UnicoLab/agentomatic/commit/2c27a86ac83b44a022e5d002d88316953f01ab35))
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
- Implement advanced platform features (HITL, checkpointer, structured output, fork, A/B routing,
|
|
22
|
+
fallbacks, hooks) and update documentation
|
|
23
|
+
([`c1a55c3`](https://github.com/UnicoLab/agentomatic/commit/c1a55c39b1efd24084f1453946df27a830d3d7ec))
|
|
24
|
+
|
|
25
|
+
- Increase core test coverage over 85% and enhance homepage aesthetics
|
|
26
|
+
([`98f28f5`](https://github.com/UnicoLab/agentomatic/commit/98f28f56308b7540d642149aa2a7edc20b2eeafb))
|
|
27
|
+
|
|
28
|
+
### Testing
|
|
29
|
+
|
|
30
|
+
- Enhance unit test coverage for sqlalchemy store, sync checkpointers, and structured fallbacks
|
|
31
|
+
([`91ab042`](https://github.com/UnicoLab/agentomatic/commit/91ab04254a623fb4fbd108303265ad8d4b3aeba5))
|
|
32
|
+
|
|
33
|
+
|
|
4
34
|
## v0.1.1 (2026-06-13)
|
|
5
35
|
|
|
6
36
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentomatic
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Drop agents, not code — zero-code multi-agent API platform framework
|
|
5
5
|
Project-URL: Homepage, https://github.com/UnicoLab/agentomatic
|
|
6
6
|
Project-URL: Documentation, https://unicolab.github.io/agentomatic
|
|
@@ -132,7 +132,7 @@ Create production-ready AI agent APIs with auto-discovery, auto-routing, streami
|
|
|
132
132
|
| Feature | Description |
|
|
133
133
|
|---|---|
|
|
134
134
|
| 🔍 **Auto-Discovery** | Drop an agent folder → endpoints appear automatically |
|
|
135
|
-
| 🚀 **
|
|
135
|
+
| 🚀 **25+ Endpoints Per Agent** | invoke, stream, chat, A2A, health, config, threads, memory, feedback |
|
|
136
136
|
| 🗄️ **Pluggable Storage** | MemoryStore, SQLAlchemy, or bring your own |
|
|
137
137
|
| 🔐 **Middleware Pipeline** | Auth, rate limiting, Prometheus metrics — all toggleable |
|
|
138
138
|
| 🎨 **Built-in Debug UI** | ChatGPT-like interface via Chainlit |
|
|
@@ -143,6 +143,17 @@ Create production-ready AI agent APIs with auto-discovery, auto-routing, streami
|
|
|
143
143
|
| ⚡ **Prompt Optimizer** | DSPy-inspired prompt optimization (7 strategies) |
|
|
144
144
|
| 🧪 **Data Synthesizer** | Auto-generate & augment eval datasets via LLM |
|
|
145
145
|
| 📊 **HTML Reports** | SVG charts, prompt diffs, experiment tracking |
|
|
146
|
+
| 🚦 **Human-in-the-Loop** | Suspend/resume execution with human approval gates |
|
|
147
|
+
| 🌳 **Thread Lineage** | First-class parent/child tracking with ancestry traversal |
|
|
148
|
+
| ⏰ **HITL TTL Expiry** | Auto-cleanup of stale suspended states (7-day default) |
|
|
149
|
+
| 🛡️ **LLM Failover** | Multi-provider fallback chains with telemetry |
|
|
150
|
+
| 🧬 **Thread Forking** | Clone conversations at any message index |
|
|
151
|
+
| 🔀 **A/B Prompt Routing** | Weight-based prompt version selection |
|
|
152
|
+
| 🪝 **State Hooks** | Before/after node interceptors for audit & telemetry |
|
|
153
|
+
| 🧠 **Conversation Memory** | Automatic session + long-term memory with windowing |
|
|
154
|
+
| 📝 **Auto-Summarization** | LLM-powered compression of long conversations |
|
|
155
|
+
| 📋 **Thread CRUD** | Full thread lifecycle management (create/update/delete/clear) |
|
|
156
|
+
| 💬 **Message Persistence** | Every turn auto-saved — history survives restarts |
|
|
146
157
|
|
|
147
158
|
## 🚀 Quick Start
|
|
148
159
|
|
|
@@ -317,6 +328,11 @@ Every agent gets 12+ endpoints automatically:
|
|
|
317
328
|
| `GET` | `/api/v1/{agent}/card` | A2A agent card |
|
|
318
329
|
| `POST` | `/api/v1/{agent}/a2a/tasks` | A2A task submission |
|
|
319
330
|
| `GET` | `/api/v1/{agent}/threads` | List threads |
|
|
331
|
+
| `POST` | `/api/v1/{agent}/threads/{id}/approve` | HITL: approve suspended state |
|
|
332
|
+
| `POST` | `/api/v1/{agent}/threads/{id}/reject` | HITL: reject suspended state |
|
|
333
|
+
| `GET` | `/api/v1/{agent}/threads/{id}/pending` | HITL: list pending approvals |
|
|
334
|
+
| `POST` | `/api/v1/{agent}/threads/{id}/fork` | Fork thread at message index |
|
|
335
|
+
| `GET` | `/api/v1/{agent}/threads/{id}/lineage` | Thread ancestry/descendant tree |
|
|
320
336
|
| ... | ... | + config, prompts, thread messages |
|
|
321
337
|
|
|
322
338
|
## 🛠️ Development
|
|
@@ -28,7 +28,7 @@ Create production-ready AI agent APIs with auto-discovery, auto-routing, streami
|
|
|
28
28
|
| Feature | Description |
|
|
29
29
|
|---|---|
|
|
30
30
|
| 🔍 **Auto-Discovery** | Drop an agent folder → endpoints appear automatically |
|
|
31
|
-
| 🚀 **
|
|
31
|
+
| 🚀 **25+ Endpoints Per Agent** | invoke, stream, chat, A2A, health, config, threads, memory, feedback |
|
|
32
32
|
| 🗄️ **Pluggable Storage** | MemoryStore, SQLAlchemy, or bring your own |
|
|
33
33
|
| 🔐 **Middleware Pipeline** | Auth, rate limiting, Prometheus metrics — all toggleable |
|
|
34
34
|
| 🎨 **Built-in Debug UI** | ChatGPT-like interface via Chainlit |
|
|
@@ -39,6 +39,17 @@ Create production-ready AI agent APIs with auto-discovery, auto-routing, streami
|
|
|
39
39
|
| ⚡ **Prompt Optimizer** | DSPy-inspired prompt optimization (7 strategies) |
|
|
40
40
|
| 🧪 **Data Synthesizer** | Auto-generate & augment eval datasets via LLM |
|
|
41
41
|
| 📊 **HTML Reports** | SVG charts, prompt diffs, experiment tracking |
|
|
42
|
+
| 🚦 **Human-in-the-Loop** | Suspend/resume execution with human approval gates |
|
|
43
|
+
| 🌳 **Thread Lineage** | First-class parent/child tracking with ancestry traversal |
|
|
44
|
+
| ⏰ **HITL TTL Expiry** | Auto-cleanup of stale suspended states (7-day default) |
|
|
45
|
+
| 🛡️ **LLM Failover** | Multi-provider fallback chains with telemetry |
|
|
46
|
+
| 🧬 **Thread Forking** | Clone conversations at any message index |
|
|
47
|
+
| 🔀 **A/B Prompt Routing** | Weight-based prompt version selection |
|
|
48
|
+
| 🪝 **State Hooks** | Before/after node interceptors for audit & telemetry |
|
|
49
|
+
| 🧠 **Conversation Memory** | Automatic session + long-term memory with windowing |
|
|
50
|
+
| 📝 **Auto-Summarization** | LLM-powered compression of long conversations |
|
|
51
|
+
| 📋 **Thread CRUD** | Full thread lifecycle management (create/update/delete/clear) |
|
|
52
|
+
| 💬 **Message Persistence** | Every turn auto-saved — history survives restarts |
|
|
42
53
|
|
|
43
54
|
## 🚀 Quick Start
|
|
44
55
|
|
|
@@ -213,6 +224,11 @@ Every agent gets 12+ endpoints automatically:
|
|
|
213
224
|
| `GET` | `/api/v1/{agent}/card` | A2A agent card |
|
|
214
225
|
| `POST` | `/api/v1/{agent}/a2a/tasks` | A2A task submission |
|
|
215
226
|
| `GET` | `/api/v1/{agent}/threads` | List threads |
|
|
227
|
+
| `POST` | `/api/v1/{agent}/threads/{id}/approve` | HITL: approve suspended state |
|
|
228
|
+
| `POST` | `/api/v1/{agent}/threads/{id}/reject` | HITL: reject suspended state |
|
|
229
|
+
| `GET` | `/api/v1/{agent}/threads/{id}/pending` | HITL: list pending approvals |
|
|
230
|
+
| `POST` | `/api/v1/{agent}/threads/{id}/fork` | Fork thread at message index |
|
|
231
|
+
| `GET` | `/api/v1/{agent}/threads/{id}/lineage` | Thread ancestry/descendant tree |
|
|
216
232
|
| ... | ... | + config, prompts, thread messages |
|
|
217
233
|
|
|
218
234
|
## 🛠️ Development
|
|
@@ -37,6 +37,8 @@ platform = AgentPlatform.from_folder(
|
|
|
37
37
|
enable_metrics=True,
|
|
38
38
|
enable_feedback=True,
|
|
39
39
|
enable_telemetry=True,
|
|
40
|
+
max_history_messages=50,
|
|
41
|
+
summarize_after=30,
|
|
40
42
|
)
|
|
41
43
|
```
|
|
42
44
|
|
|
@@ -62,9 +64,17 @@ platform = AgentPlatform.from_folder(
|
|
|
62
64
|
|
|
63
65
|
### 4. Storage Backend
|
|
64
66
|
|
|
65
|
-
- **`store`** (type: `BaseStore | None`, default: `None`): Instance of a storage adapter (e.g. `MemoryStore` or `SQLAlchemyStore`) used to save message threads and rating logs.
|
|
67
|
+
- **`store`** (type: `BaseStore | None`, default: `None`): Instance of a storage adapter (e.g. `MemoryStore` or `SQLAlchemyStore`) used to save message threads, conversation history, and rating logs.
|
|
66
68
|
|
|
67
|
-
### 5.
|
|
69
|
+
### 5. Memory & Conversation
|
|
70
|
+
|
|
71
|
+
- **`max_history_messages`** (type: `int`, default: `50`): Maximum number of messages to load from the thread store into the agent's context window. When the conversation exceeds this limit, older messages are windowed out or summarised.
|
|
72
|
+
- **`summarize_after`** (type: `int`, default: `30`): When the message count in a thread exceeds this threshold, older messages are automatically summarised using the configured LLM and prepended as a `[Conversation Summary]` system message.
|
|
73
|
+
|
|
74
|
+
> [!TIP]
|
|
75
|
+
> These values can also be overridden per-request using the `max_history` field on `AgentChatRequest`, giving frontends full control over how much context each invocation receives.
|
|
76
|
+
|
|
77
|
+
### 6. Security & Rate Limiting
|
|
68
78
|
|
|
69
79
|
- **`enable_auth`** (type: `bool`, default: `False`): If `True`, mounts Key Authentication middleware on all agent routes.
|
|
70
80
|
- **`auth_api_key`** (type: `str`, default: `""`): The secret API key token required by clients when `enable_auth` is enabled.
|