agentomatic 0.1.0__tar.gz → 0.2.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.0 → agentomatic-0.2.0}/.github/workflows/ci.yml +3 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/docs.yml +3 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/manual-docs.yml +3 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/manual-pypi.yml +5 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/pr-checks.yml +3 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/release.yml +5 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/CHANGELOG.md +50 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/PKG-INFO +1 -1
- agentomatic-0.2.0/docs/assets/architecture_diagram.png +0 -0
- agentomatic-0.2.0/docs/assets/optimization_flow.png +0 -0
- agentomatic-0.2.0/docs/cli/commands.md +285 -0
- agentomatic-0.2.0/docs/getting-started/first-agent.md +135 -0
- agentomatic-0.2.0/docs/getting-started/installation.md +130 -0
- agentomatic-0.2.0/docs/getting-started/quickstart.md +122 -0
- agentomatic-0.2.0/docs/guide/agent-structure.md +189 -0
- agentomatic-0.2.0/docs/guide/configuration.md +97 -0
- agentomatic-0.2.0/docs/guide/debug-ui.md +91 -0
- agentomatic-0.2.0/docs/guide/middleware.md +156 -0
- agentomatic-0.2.0/docs/guide/optimization.md +223 -0
- agentomatic-0.2.0/docs/guide/platform-features.md +339 -0
- agentomatic-0.2.0/docs/guide/prompts.md +151 -0
- agentomatic-0.2.0/docs/guide/schemas.md +185 -0
- agentomatic-0.2.0/docs/guide/storage.md +204 -0
- agentomatic-0.2.0/docs/guide/telemetry.md +198 -0
- agentomatic-0.2.0/docs/index.md +123 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/mkdocs.yml +3 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/pyproject.toml +3 -1
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/_version.py +1 -1
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/platform.py +8 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/registry.py +3 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/router_factory.py +391 -15
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/__init__.py +2 -2
- agentomatic-0.2.0/src/agentomatic/providers/llm.py +194 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/storage/__init__.py +6 -2
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/storage/base.py +91 -0
- agentomatic-0.2.0/src/agentomatic/storage/checkpointer.py +230 -0
- agentomatic-0.2.0/src/agentomatic/storage/memory.py +329 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/storage/models.py +54 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/storage/sqlalchemy.py +239 -1
- {agentomatic-0.1.0 → agentomatic-0.2.0}/tests/test_agentomatic.py +191 -1
- {agentomatic-0.1.0 → agentomatic-0.2.0}/tests/test_integration.py +109 -5
- agentomatic-0.2.0/tests/test_platform_features.py +622 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/uv.lock +1 -1
- agentomatic-0.1.0/docs/cli/commands.md +0 -275
- agentomatic-0.1.0/docs/getting-started/first-agent.md +0 -89
- agentomatic-0.1.0/docs/getting-started/installation.md +0 -118
- agentomatic-0.1.0/docs/getting-started/quickstart.md +0 -124
- agentomatic-0.1.0/docs/guide/agent-structure.md +0 -60
- agentomatic-0.1.0/docs/guide/configuration.md +0 -54
- agentomatic-0.1.0/docs/guide/debug-ui.md +0 -35
- agentomatic-0.1.0/docs/guide/middleware.md +0 -63
- agentomatic-0.1.0/docs/guide/optimization.md +0 -456
- agentomatic-0.1.0/docs/guide/storage.md +0 -64
- agentomatic-0.1.0/docs/guide/telemetry.md +0 -195
- agentomatic-0.1.0/docs/index.md +0 -138
- agentomatic-0.1.0/src/agentomatic/providers/llm.py +0 -116
- agentomatic-0.1.0/src/agentomatic/storage/memory.py +0 -167
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/config.toml +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ar-SA.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/bn.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/da-DK.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/de-DE.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/el-GR.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/en-US.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/es.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/fr-FR.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/gu.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/he-IL.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/hi.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/it.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ja.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/kn.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ko.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ml.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/mr.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/nl.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/pt-PT.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ta.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/te.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/zh-CN.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/zh-TW.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.dockerignore +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.env.example +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/FUNDING.yml +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.gitignore +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.pre-commit-config.yaml +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/.vscode-upload.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/CONTRIBUTING.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/Dockerfile +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/Dockerfile.distroless +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/LICENSE +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/Makefile +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/README.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/TODO.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/assets/logo.png +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/docker-compose.yml +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/FRONTEND_API_GUIDE.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/architecture/api-reference.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/architecture/overview.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/assets/logo.png +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/changelog.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/contributing.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/guide/templates.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/README.md +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/api.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/config.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/graph.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/langgraph.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/nodes.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/prompts.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/schemas.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/tools.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/main.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/hello_agent/agents/hello/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/hello_agent/agents/hello/graph.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/hello_agent/agents/hello/nodes.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/hello_agent/main.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/cli/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/cli/commands.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/cli/templates.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/config/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/config/defaults.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/config/settings.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/lifespan.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/manifest.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/state.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/auth.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/feedback.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/logging.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/metrics.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/rate_limit.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/observability/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/observability/concurrency.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/observability/metrics.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/observability/telemetry.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/dataset.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/loop.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/metrics.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/optimizer.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/report.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/runner.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/strategies.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/synthesizer.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/prompts/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/prompts/manager.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/protocols/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/protocols/decorators.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/providers/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/providers/embeddings.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/py.typed +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/ui/.chainlit/config.toml +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/ui/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/ui/chat.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/agent.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/api.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/config.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/prompts.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/schemas.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/state.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/agent.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/api.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/config.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/prompts.json +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/schemas.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/state.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/api.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/dependencies.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/main.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/settings.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/__init__.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/agent_state.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/api_decorators.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/base_agent.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/llm_factory.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/prompt_manager.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/utilities.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/tests/test_cli.py +0 -0
- {agentomatic-0.1.0 → agentomatic-0.2.0}/tests/test_optimize.py +0 -0
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
name: "Manual PyPI Publish"
|
|
2
2
|
|
|
3
|
+
env:
|
|
4
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
5
|
+
|
|
3
6
|
on:
|
|
4
7
|
workflow_dispatch:
|
|
5
8
|
inputs:
|
|
@@ -48,6 +51,7 @@ jobs:
|
|
|
48
51
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
49
52
|
with:
|
|
50
53
|
password: ${{ secrets.PYPI_TOKEN }}
|
|
54
|
+
attestations: false
|
|
51
55
|
continue-on-error: true
|
|
52
56
|
|
|
53
57
|
- name: Retry PyPI publish on failure
|
|
@@ -63,3 +67,4 @@ jobs:
|
|
|
63
67
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
64
68
|
with:
|
|
65
69
|
password: ${{ secrets.PYPI_TOKEN }}
|
|
70
|
+
attestations: false
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
name: Release
|
|
2
2
|
|
|
3
|
+
env:
|
|
4
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
5
|
+
|
|
3
6
|
on:
|
|
4
7
|
workflow_dispatch:
|
|
5
8
|
inputs:
|
|
@@ -91,6 +94,7 @@ jobs:
|
|
|
91
94
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
92
95
|
with:
|
|
93
96
|
password: ${{ secrets.PYPI_TOKEN }}
|
|
97
|
+
attestations: false
|
|
94
98
|
continue-on-error: true
|
|
95
99
|
|
|
96
100
|
- name: Retry PyPI publish on failure
|
|
@@ -106,6 +110,7 @@ jobs:
|
|
|
106
110
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
107
111
|
with:
|
|
108
112
|
password: ${{ secrets.PYPI_TOKEN }}
|
|
113
|
+
attestations: false
|
|
109
114
|
|
|
110
115
|
# ─────────────────────────────────────────────────────────────
|
|
111
116
|
# 3. GITHUB RELEASE — Create GitHub release with assets
|
|
@@ -1,6 +1,56 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v0.2.0 (2026-06-14)
|
|
5
|
+
|
|
6
|
+
### Documentation
|
|
7
|
+
|
|
8
|
+
- Add telemetry and feedback correlation notes for A/B testing
|
|
9
|
+
([`2c27a86`](https://github.com/UnicoLab/agentomatic/commit/2c27a86ac83b44a022e5d002d88316953f01ab35))
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
- Implement advanced platform features (HITL, checkpointer, structured output, fork, A/B routing,
|
|
14
|
+
fallbacks, hooks) and update documentation
|
|
15
|
+
([`c1a55c3`](https://github.com/UnicoLab/agentomatic/commit/c1a55c39b1efd24084f1453946df27a830d3d7ec))
|
|
16
|
+
|
|
17
|
+
- Increase core test coverage over 85% and enhance homepage aesthetics
|
|
18
|
+
([`98f28f5`](https://github.com/UnicoLab/agentomatic/commit/98f28f56308b7540d642149aa2a7edc20b2eeafb))
|
|
19
|
+
|
|
20
|
+
### Testing
|
|
21
|
+
|
|
22
|
+
- Enhance unit test coverage for sqlalchemy store, sync checkpointers, and structured fallbacks
|
|
23
|
+
([`91ab042`](https://github.com/UnicoLab/agentomatic/commit/91ab04254a623fb4fbd108303265ad8d4b3aeba5))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## v0.1.1 (2026-06-13)
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
- Resolve import block sorting and unused typing imports
|
|
31
|
+
([`99c83ba`](https://github.com/UnicoLab/agentomatic/commit/99c83ba9c0170a29584db4dca316999f764a4c13))
|
|
32
|
+
|
|
33
|
+
- **ci**: Force Node.js 24 runtime and disable PyPI attestations to remove warnings
|
|
34
|
+
([`275a233`](https://github.com/UnicoLab/agentomatic/commit/275a2336cbfe8ca6860e95545172d02ff118234e))
|
|
35
|
+
|
|
36
|
+
### Documentation
|
|
37
|
+
|
|
38
|
+
- Add detailed input and output schemas guide and improve custom schema extraction
|
|
39
|
+
([`4c5e079`](https://github.com/UnicoLab/agentomatic/commit/4c5e0790aeaf68cfcbe6f0f0c52963c9ce3bdffe))
|
|
40
|
+
|
|
41
|
+
- Expand agent structure, customization overrides, and platform settings references
|
|
42
|
+
([`5aa9956`](https://github.com/UnicoLab/agentomatic/commit/5aa9956f25f2a56abf27d364f56f086d4a105616))
|
|
43
|
+
|
|
44
|
+
- Overhaul documentation with detailed guides, visual diagrams, and logo accents
|
|
45
|
+
([`ef3de5a`](https://github.com/UnicoLab/agentomatic/commit/ef3de5adb9056184b4a66e7c7130c673c84088e6))
|
|
46
|
+
|
|
47
|
+
- **agnostic**: Replace all remaining hr_bot references with project-agnostic placeholders
|
|
48
|
+
([`4f868d6`](https://github.com/UnicoLab/agentomatic/commit/4f868d623362d6fa0e1e961cccf52440df4d4aa4))
|
|
49
|
+
|
|
50
|
+
- **prompts**: Document versioned prompts and PromptManager usage
|
|
51
|
+
([`f0fe872`](https://github.com/UnicoLab/agentomatic/commit/f0fe8726d73cafd935afa67724b427f452c6d33c))
|
|
52
|
+
|
|
53
|
+
|
|
4
54
|
## v0.1.0 (2026-06-13)
|
|
5
55
|
|
|
6
56
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentomatic
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.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
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# CLI Reference
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="../assets/logo.png" width="200" alt="agentomatic logo">
|
|
5
|
+
<h3>Interactive Command-Line Toolchain</h3>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Agentomatic ships with a robust, click-based CLI for scaffolding, serving, listing, inspecting, testing, and optimizing your agents.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## ⚡ Global Help Overview
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
agentomatic --help
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
Usage: agentomatic [OPTIONS] COMMAND [ARGS]...
|
|
22
|
+
|
|
23
|
+
Agentomatic — Drop agents, not code ⚡
|
|
24
|
+
|
|
25
|
+
Options:
|
|
26
|
+
--version Show the version and exit.
|
|
27
|
+
--help Show this message and exit.
|
|
28
|
+
|
|
29
|
+
Commands:
|
|
30
|
+
init Scaffold a new agent from a template.
|
|
31
|
+
run Start the platform server.
|
|
32
|
+
list List discovered agents.
|
|
33
|
+
test Interactive agent testing in the console.
|
|
34
|
+
inspect Show agent folder structure and configs.
|
|
35
|
+
doctor Verify environment health and packages.
|
|
36
|
+
ui Launch the Chainlit debug UI.
|
|
37
|
+
optimize Run automatic prompt tuning loops.
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 🏗️ `agentomatic init`
|
|
43
|
+
|
|
44
|
+
Scaffold a new agent directory from one of our 5 pre-built conventions.
|
|
45
|
+
|
|
46
|
+
### Usage
|
|
47
|
+
```text
|
|
48
|
+
Usage: agentomatic init [OPTIONS] NAME
|
|
49
|
+
|
|
50
|
+
Arguments:
|
|
51
|
+
NAME Agent name (snake_case) [required]
|
|
52
|
+
|
|
53
|
+
Options:
|
|
54
|
+
-t, --template [basic|full|rag|chatbot|custom]
|
|
55
|
+
Template to use (interactive list if omitted)
|
|
56
|
+
--dir TEXT Agents parent directory [default: agents]
|
|
57
|
+
-f, --force Overwrite existing agent directory
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Examples
|
|
61
|
+
```bash
|
|
62
|
+
# Select templates interactively (requires pip install questionary)
|
|
63
|
+
agentomatic init support_agent
|
|
64
|
+
|
|
65
|
+
# Standard scaffolding (basic template)
|
|
66
|
+
agentomatic init helper_bot --template basic
|
|
67
|
+
|
|
68
|
+
# RAG template forced overwrite
|
|
69
|
+
agentomatic init knowledge_bot --template rag --force
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 🚀 `agentomatic run`
|
|
75
|
+
|
|
76
|
+
Start the platform microservice. Runs a local `uvicorn` web server hosting the FastAPI routing stack.
|
|
77
|
+
|
|
78
|
+
### Usage
|
|
79
|
+
```text
|
|
80
|
+
Usage: agentomatic run [OPTIONS]
|
|
81
|
+
|
|
82
|
+
Options:
|
|
83
|
+
--agents-dir TEXT Agents folder to scan [default: agents]
|
|
84
|
+
--host TEXT Bind address [default: 0.0.0.0]
|
|
85
|
+
--port INTEGER Bind port [default: 8000]
|
|
86
|
+
--reload Auto-reload on code or config file changes
|
|
87
|
+
--with-ui Mount the Chainlit chat UI at /chat
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Examples
|
|
91
|
+
```bash
|
|
92
|
+
# Standard launch
|
|
93
|
+
agentomatic run
|
|
94
|
+
|
|
95
|
+
# Dev launch (live reload + debugging Chat UI at http://localhost:8000/chat)
|
|
96
|
+
agentomatic run --reload --with-ui
|
|
97
|
+
|
|
98
|
+
# Bound to specific port
|
|
99
|
+
agentomatic run --port 9000
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 📊 `agentomatic list`
|
|
105
|
+
|
|
106
|
+
Scans your agents folder and prints a rich table of discovered agent packages and their statuses.
|
|
107
|
+
|
|
108
|
+
### Usage
|
|
109
|
+
```text
|
|
110
|
+
Usage: agentomatic list [OPTIONS]
|
|
111
|
+
|
|
112
|
+
Options:
|
|
113
|
+
--agents-dir TEXT Agents folder to scan [default: agents]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Example Output
|
|
117
|
+
```text
|
|
118
|
+
╭────────────────────── Discovered Agents ──────────────────────╮
|
|
119
|
+
│ Name │ Framework │ Version │ Endpoints │ Status │
|
|
120
|
+
├──────────────┼────────────┼─────────┼───────────┼─────────────┤
|
|
121
|
+
│ my_agent │ langgraph │ 1.0.0 │ 12 │ Ready │
|
|
122
|
+
│ rag_agent │ langgraph │ 1.0.0 │ 12 │ Ready │
|
|
123
|
+
│ classifier │ custom │ 0.1.0 │ 12 │ Ready │
|
|
124
|
+
╰──────────────┴────────────┴─────────┴───────────┴─────────────╯
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 🔍 `agentomatic inspect`
|
|
130
|
+
|
|
131
|
+
Validates your agent package structure, reading manifest properties and listing present/absent conventions.
|
|
132
|
+
|
|
133
|
+
### Usage
|
|
134
|
+
```text
|
|
135
|
+
Usage: agentomatic inspect [OPTIONS] NAME
|
|
136
|
+
|
|
137
|
+
Arguments:
|
|
138
|
+
NAME Agent name to inspect [required]
|
|
139
|
+
|
|
140
|
+
Options:
|
|
141
|
+
--agents-dir TEXT Agents parent folder [default: agents]
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Example Output
|
|
145
|
+
```text
|
|
146
|
+
╭──────────────────── Agent: my_agent ──────────────────╮
|
|
147
|
+
│ Manifest │
|
|
148
|
+
│ name: my_agent │
|
|
149
|
+
│ slug: my-agent │
|
|
150
|
+
│ framework: langgraph │
|
|
151
|
+
│ version: 1.0.0 │
|
|
152
|
+
│ keywords: help, search, assistant │
|
|
153
|
+
│ │
|
|
154
|
+
│ Files │
|
|
155
|
+
│ ✅ __init__.py (manifest + entry) │
|
|
156
|
+
│ ✅ graph.py (state graph) │
|
|
157
|
+
│ ✅ nodes.py (processing logic) │
|
|
158
|
+
│ ✅ config.py (pydantic config) │
|
|
159
|
+
│ ✅ prompts.json (2 versions: v1, v2) │
|
|
160
|
+
│ ⬚ api.py (not present — using auto-gen) │
|
|
161
|
+
╰───────────────────────────────────────────────────────╯
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 💬 `agentomatic test`
|
|
167
|
+
|
|
168
|
+
Interactive, chat-like terminal interface to test agent completions and streaming directly inside your shell.
|
|
169
|
+
|
|
170
|
+
### Usage
|
|
171
|
+
```text
|
|
172
|
+
Usage: agentomatic test [OPTIONS] NAME
|
|
173
|
+
|
|
174
|
+
Arguments:
|
|
175
|
+
NAME Agent name to test [required]
|
|
176
|
+
|
|
177
|
+
Options:
|
|
178
|
+
--host TEXT Server host address [default: localhost]
|
|
179
|
+
--port INTEGER Server host port [default: 8000]
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Example Session
|
|
183
|
+
```bash
|
|
184
|
+
agentomatic test my_agent
|
|
185
|
+
# 🤖 Connected to my_agent at http://localhost:8000
|
|
186
|
+
# You: Hello!
|
|
187
|
+
# my_agent: Hello! How can I assist you today?
|
|
188
|
+
# You: /quit
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 🎯 `agentomatic optimize`
|
|
194
|
+
|
|
195
|
+
Executes the prompt optimization tuning loop over a dataset, evaluating outputs and saving improvements.
|
|
196
|
+
|
|
197
|
+
### Usage
|
|
198
|
+
```text
|
|
199
|
+
Usage: agentomatic optimize [OPTIONS] AGENT
|
|
200
|
+
|
|
201
|
+
Arguments:
|
|
202
|
+
AGENT Agent name to optimize [required]
|
|
203
|
+
|
|
204
|
+
Options:
|
|
205
|
+
-d, --dataset TEXT Path to evaluation dataset (JSONL/CSV) [required]
|
|
206
|
+
-m, --metrics TEXT Comma-separated metrics (e.g., exact_match,contains) [required]
|
|
207
|
+
-s, --strategy [iterative_rewrite|few_shot|chain_of_thought]
|
|
208
|
+
Optimization strategy [default: iterative_rewrite]
|
|
209
|
+
--max-iterations INTEGER
|
|
210
|
+
Maximum optimization steps [default: 10]
|
|
211
|
+
--target-score FLOAT Stop optimization once this average score is hit [default: 0.9]
|
|
212
|
+
--rewrite-llm TEXT Override LLM used to rewrite prompt instructions
|
|
213
|
+
--eval-llm TEXT Override LLM used to grade responses
|
|
214
|
+
--llm TEXT Default LLM to fallback on [default: ollama/mistral:7b]
|
|
215
|
+
--patience INTEGER Stop early if score doesn't improve for N steps [default: 3]
|
|
216
|
+
--prompt TEXT Initial system prompt override (bypasses prompts.json)
|
|
217
|
+
--no-report Skip generating interactive HTML report logs
|
|
218
|
+
--apply Automatically save and promote the best-performing prompt
|
|
219
|
+
--host TEXT Platform API base host url [default: http://localhost:8000]
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Examples
|
|
223
|
+
```bash
|
|
224
|
+
# Run basic optimization loop and auto-save the best prompt
|
|
225
|
+
agentomatic optimize my_agent \
|
|
226
|
+
--dataset eval_qa.jsonl \
|
|
227
|
+
--metrics exact_match,contains \
|
|
228
|
+
--strategy iterative_rewrite \
|
|
229
|
+
--max-iterations 10 \
|
|
230
|
+
--apply
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 🩺 `agentomatic doctor`
|
|
236
|
+
|
|
237
|
+
Diagnostic diagnostic tool that audits your local Python virtualenv, installs, dependencies, package versions, and external service connections (Ollama / OpenAI).
|
|
238
|
+
|
|
239
|
+
### Usage
|
|
240
|
+
```text
|
|
241
|
+
Usage: agentomatic doctor [OPTIONS]
|
|
242
|
+
|
|
243
|
+
Options:
|
|
244
|
+
--agents-dir TEXT Agents folder to inspect [default: agents]
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Example Output
|
|
248
|
+
```text
|
|
249
|
+
╭──────────────────── Agentomatic Doctor ────────────────────╮
|
|
250
|
+
│ ✅ Python 3.12.0 │
|
|
251
|
+
│ ✅ agentomatic 0.1.0 │
|
|
252
|
+
│ ✅ FastAPI 0.115.x │
|
|
253
|
+
│ ✅ click 8.1.x │
|
|
254
|
+
│ ✅ LangGraph 0.4.x │
|
|
255
|
+
│ ✅ Ollama connected │
|
|
256
|
+
│ ⬚ OpenAI not installed │
|
|
257
|
+
│ ✅ Prometheus 0.21.x │
|
|
258
|
+
│ ✅ SQLAlchemy 2.0.x │
|
|
259
|
+
│ ✅ Chainlit 2.0.x │
|
|
260
|
+
│ ✅ DeepEval 2.0.x │
|
|
261
|
+
│ ✅ OpenTelemetry 1.20.x │
|
|
262
|
+
╰────────────────────────────────────────────────────────────╯
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## 🎨 `agentomatic ui`
|
|
268
|
+
|
|
269
|
+
Launch the Chainlit debug Chat console as a standalone process (points to a running backend application).
|
|
270
|
+
|
|
271
|
+
### Usage
|
|
272
|
+
```text
|
|
273
|
+
Usage: agentomatic ui [OPTIONS]
|
|
274
|
+
|
|
275
|
+
Options:
|
|
276
|
+
--host TEXT FastAPI server address [default: localhost]
|
|
277
|
+
--port INTEGER FastAPI server port [default: 8000]
|
|
278
|
+
--ui-port INTEGER Chainlit UI port to bind [default: 8001]
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Example
|
|
282
|
+
```bash
|
|
283
|
+
# Launch standalone debug UI on port 9000
|
|
284
|
+
agentomatic ui --port 8000 --ui-port 9000
|
|
285
|
+
```
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Your First Agent
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="../assets/logo.png" width="200" alt="agentomatic logo">
|
|
5
|
+
<h3>Step-by-Step RAG Agent Tutorial</h3>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
This tutorial walks through building a production-ready **Retrieval-Augmented Generation (RAG)** search agent from scratch using Agentomatic.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Step 1: Scaffold the Agent Folder
|
|
15
|
+
|
|
16
|
+
Use the `full` scaffolding template to include all optional configuration files and overrides:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
agentomatic init search_bot --template full
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
This creates a dedicated directory containing:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
agents/search_bot/
|
|
26
|
+
├── __init__.py # Required: agent manifest declaration and entry point
|
|
27
|
+
├── graph.py # Optional: LangGraph orchestration flow
|
|
28
|
+
├── nodes.py # Optional: node execution logic
|
|
29
|
+
├── config.py # Optional: agent settings schema (Pydantic)
|
|
30
|
+
├── schemas.py # Optional: custom request/response validation schemas
|
|
31
|
+
├── tools.py # Optional: LangChain tools
|
|
32
|
+
├── api.py # Optional: custom routers (overrides auto-generated endpoints)
|
|
33
|
+
├── prompts.json # Optional: versioned prompt templates
|
|
34
|
+
├── langgraph.json # Optional: local developer environment settings
|
|
35
|
+
├── .env.example # Optional: environment blueprint
|
|
36
|
+
└── README.md # Optional: agent readme documentation
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Step 2: Declare the Agent Manifest
|
|
42
|
+
|
|
43
|
+
Open `agents/search_bot/__init__.py`. Define your manifest properties:
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
from agentomatic import AgentManifest
|
|
47
|
+
from .graph import get_graph
|
|
48
|
+
|
|
49
|
+
manifest = AgentManifest(
|
|
50
|
+
name="search_bot",
|
|
51
|
+
slug="search-bot",
|
|
52
|
+
description="Knowledge base search assistant utilizing LangGraph and Vector Stores.",
|
|
53
|
+
intent_keywords=["search", "find", "document", "knowledge"],
|
|
54
|
+
version="1.0.0",
|
|
55
|
+
framework="langgraph",
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
def graph_fn():
|
|
59
|
+
"""Retrieve the LangGraph compiled state graph."""
|
|
60
|
+
return get_graph()
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Step 3: Implement RAG Nodes
|
|
66
|
+
|
|
67
|
+
Open `agents/search_bot/nodes.py`. Define your document retrieval and answer generation logic:
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from typing import Any
|
|
71
|
+
from langchain_ollama import ChatOllama
|
|
72
|
+
from langchain_core.messages import HumanMessage
|
|
73
|
+
|
|
74
|
+
async def retrieve_context(state: dict[str, Any]) -> dict[str, Any]:
|
|
75
|
+
"""Mock document retriever node."""
|
|
76
|
+
query = state.get("current_query", "")
|
|
77
|
+
logger_info = f"Querying KB: {query}"
|
|
78
|
+
|
|
79
|
+
# Mock retrieval docs (swap with a real VectorDB like Qdrant/Chroma)
|
|
80
|
+
docs = [
|
|
81
|
+
"Company policy: Employees get 25 days of paid time off per year.",
|
|
82
|
+
"Requesting leaves: Submit request in employee portal 2 weeks in advance."
|
|
83
|
+
]
|
|
84
|
+
return {
|
|
85
|
+
"citations": [{"source": "company_handbook.pdf", "page": 10}],
|
|
86
|
+
"metadata": {"retrieved_docs": docs},
|
|
87
|
+
"steps_taken": ["retrieve_docs"],
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async def generate_response(state: dict[str, Any]) -> dict[str, Any]:
|
|
91
|
+
"""Generates the final response based on retrieved docs."""
|
|
92
|
+
query = state.get("current_query", "")
|
|
93
|
+
context = state.get("metadata", {}).get("retrieved_docs", [])
|
|
94
|
+
|
|
95
|
+
# Format a prompt template and query the LLM
|
|
96
|
+
llm = ChatOllama(model="mistral:7b", temperature=0.1)
|
|
97
|
+
prompt = f"Context:\n" + "\n".join(context) + f"\n\nQuestion: {query}"
|
|
98
|
+
|
|
99
|
+
result = await llm.ainvoke([HumanMessage(content=prompt)])
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
"response": result.content,
|
|
103
|
+
"suggestions": ["How to request leaves?", "PTO balance check"],
|
|
104
|
+
"steps_taken": ["generate_response"],
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Step 4: Configure Settings Schema
|
|
111
|
+
|
|
112
|
+
Open `agents/search_bot/config.py`. Define default agent settings and hyper-parameters using Pydantic:
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
from pydantic import BaseModel, Field
|
|
116
|
+
|
|
117
|
+
class SearchBotConfig(BaseModel):
|
|
118
|
+
prompt_version: str = Field("v1", description="Default prompt version")
|
|
119
|
+
temperature: float = Field(0.2, description="Sampling temperature")
|
|
120
|
+
max_tokens: int = Field(2048, description="Maximum completion tokens")
|
|
121
|
+
vector_store_url: str = Field("http://localhost:6333", description="Vector database URL")
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Step 5: Test the Agent
|
|
127
|
+
|
|
128
|
+
Start the platform server locally, loading your newly created agent:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
agentomatic run --reload --with-ui
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
1. **REST API endpoints**: Go to `http://localhost:8000/docs` to test `/api/v1/search_bot/invoke` interactively.
|
|
135
|
+
2. **Graphical Sandbox**: Go to `http://localhost:8000/chat` to test token-by-token streaming and rating collection.
|