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.
Files changed (187) hide show
  1. {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/ci.yml +3 -0
  2. {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/docs.yml +3 -0
  3. {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/manual-docs.yml +3 -0
  4. {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/manual-pypi.yml +5 -0
  5. {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/pr-checks.yml +3 -0
  6. {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/workflows/release.yml +5 -0
  7. {agentomatic-0.1.0 → agentomatic-0.2.0}/CHANGELOG.md +50 -0
  8. {agentomatic-0.1.0 → agentomatic-0.2.0}/PKG-INFO +1 -1
  9. agentomatic-0.2.0/docs/assets/architecture_diagram.png +0 -0
  10. agentomatic-0.2.0/docs/assets/optimization_flow.png +0 -0
  11. agentomatic-0.2.0/docs/cli/commands.md +285 -0
  12. agentomatic-0.2.0/docs/getting-started/first-agent.md +135 -0
  13. agentomatic-0.2.0/docs/getting-started/installation.md +130 -0
  14. agentomatic-0.2.0/docs/getting-started/quickstart.md +122 -0
  15. agentomatic-0.2.0/docs/guide/agent-structure.md +189 -0
  16. agentomatic-0.2.0/docs/guide/configuration.md +97 -0
  17. agentomatic-0.2.0/docs/guide/debug-ui.md +91 -0
  18. agentomatic-0.2.0/docs/guide/middleware.md +156 -0
  19. agentomatic-0.2.0/docs/guide/optimization.md +223 -0
  20. agentomatic-0.2.0/docs/guide/platform-features.md +339 -0
  21. agentomatic-0.2.0/docs/guide/prompts.md +151 -0
  22. agentomatic-0.2.0/docs/guide/schemas.md +185 -0
  23. agentomatic-0.2.0/docs/guide/storage.md +204 -0
  24. agentomatic-0.2.0/docs/guide/telemetry.md +198 -0
  25. agentomatic-0.2.0/docs/index.md +123 -0
  26. {agentomatic-0.1.0 → agentomatic-0.2.0}/mkdocs.yml +3 -0
  27. {agentomatic-0.1.0 → agentomatic-0.2.0}/pyproject.toml +3 -1
  28. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/_version.py +1 -1
  29. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/platform.py +8 -0
  30. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/registry.py +3 -0
  31. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/router_factory.py +391 -15
  32. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/__init__.py +2 -2
  33. agentomatic-0.2.0/src/agentomatic/providers/llm.py +194 -0
  34. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/storage/__init__.py +6 -2
  35. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/storage/base.py +91 -0
  36. agentomatic-0.2.0/src/agentomatic/storage/checkpointer.py +230 -0
  37. agentomatic-0.2.0/src/agentomatic/storage/memory.py +329 -0
  38. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/storage/models.py +54 -0
  39. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/storage/sqlalchemy.py +239 -1
  40. {agentomatic-0.1.0 → agentomatic-0.2.0}/tests/test_agentomatic.py +191 -1
  41. {agentomatic-0.1.0 → agentomatic-0.2.0}/tests/test_integration.py +109 -5
  42. agentomatic-0.2.0/tests/test_platform_features.py +622 -0
  43. {agentomatic-0.1.0 → agentomatic-0.2.0}/uv.lock +1 -1
  44. agentomatic-0.1.0/docs/cli/commands.md +0 -275
  45. agentomatic-0.1.0/docs/getting-started/first-agent.md +0 -89
  46. agentomatic-0.1.0/docs/getting-started/installation.md +0 -118
  47. agentomatic-0.1.0/docs/getting-started/quickstart.md +0 -124
  48. agentomatic-0.1.0/docs/guide/agent-structure.md +0 -60
  49. agentomatic-0.1.0/docs/guide/configuration.md +0 -54
  50. agentomatic-0.1.0/docs/guide/debug-ui.md +0 -35
  51. agentomatic-0.1.0/docs/guide/middleware.md +0 -63
  52. agentomatic-0.1.0/docs/guide/optimization.md +0 -456
  53. agentomatic-0.1.0/docs/guide/storage.md +0 -64
  54. agentomatic-0.1.0/docs/guide/telemetry.md +0 -195
  55. agentomatic-0.1.0/docs/index.md +0 -138
  56. agentomatic-0.1.0/src/agentomatic/providers/llm.py +0 -116
  57. agentomatic-0.1.0/src/agentomatic/storage/memory.py +0 -167
  58. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/config.toml +0 -0
  59. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ar-SA.json +0 -0
  60. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/bn.json +0 -0
  61. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/da-DK.json +0 -0
  62. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/de-DE.json +0 -0
  63. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/el-GR.json +0 -0
  64. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/en-US.json +0 -0
  65. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/es.json +0 -0
  66. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/fr-FR.json +0 -0
  67. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/gu.json +0 -0
  68. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/he-IL.json +0 -0
  69. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/hi.json +0 -0
  70. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/it.json +0 -0
  71. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ja.json +0 -0
  72. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/kn.json +0 -0
  73. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ko.json +0 -0
  74. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ml.json +0 -0
  75. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/mr.json +0 -0
  76. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/nl.json +0 -0
  77. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/pt-PT.json +0 -0
  78. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/ta.json +0 -0
  79. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/te.json +0 -0
  80. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/zh-CN.json +0 -0
  81. {agentomatic-0.1.0 → agentomatic-0.2.0}/.chainlit/translations/zh-TW.json +0 -0
  82. {agentomatic-0.1.0 → agentomatic-0.2.0}/.dockerignore +0 -0
  83. {agentomatic-0.1.0 → agentomatic-0.2.0}/.env.example +0 -0
  84. {agentomatic-0.1.0 → agentomatic-0.2.0}/.github/FUNDING.yml +0 -0
  85. {agentomatic-0.1.0 → agentomatic-0.2.0}/.gitignore +0 -0
  86. {agentomatic-0.1.0 → agentomatic-0.2.0}/.pre-commit-config.yaml +0 -0
  87. {agentomatic-0.1.0 → agentomatic-0.2.0}/.vscode-upload.json +0 -0
  88. {agentomatic-0.1.0 → agentomatic-0.2.0}/CONTRIBUTING.md +0 -0
  89. {agentomatic-0.1.0 → agentomatic-0.2.0}/Dockerfile +0 -0
  90. {agentomatic-0.1.0 → agentomatic-0.2.0}/Dockerfile.distroless +0 -0
  91. {agentomatic-0.1.0 → agentomatic-0.2.0}/LICENSE +0 -0
  92. {agentomatic-0.1.0 → agentomatic-0.2.0}/Makefile +0 -0
  93. {agentomatic-0.1.0 → agentomatic-0.2.0}/README.md +0 -0
  94. {agentomatic-0.1.0 → agentomatic-0.2.0}/TODO.md +0 -0
  95. {agentomatic-0.1.0 → agentomatic-0.2.0}/assets/logo.png +0 -0
  96. {agentomatic-0.1.0 → agentomatic-0.2.0}/docker-compose.yml +0 -0
  97. {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/FRONTEND_API_GUIDE.md +0 -0
  98. {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/architecture/api-reference.md +0 -0
  99. {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/architecture/overview.md +0 -0
  100. {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/assets/logo.png +0 -0
  101. {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/changelog.md +0 -0
  102. {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/contributing.md +0 -0
  103. {agentomatic-0.1.0 → agentomatic-0.2.0}/docs/guide/templates.md +0 -0
  104. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/README.md +0 -0
  105. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/__init__.py +0 -0
  106. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/api.py +0 -0
  107. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/config.py +0 -0
  108. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/graph.py +0 -0
  109. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/langgraph.json +0 -0
  110. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/nodes.py +0 -0
  111. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/prompts.json +0 -0
  112. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/schemas.py +0 -0
  113. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/agents/weather/tools.py +0 -0
  114. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/full_agent/main.py +0 -0
  115. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/hello_agent/agents/hello/__init__.py +0 -0
  116. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/hello_agent/agents/hello/graph.py +0 -0
  117. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/hello_agent/agents/hello/nodes.py +0 -0
  118. {agentomatic-0.1.0 → agentomatic-0.2.0}/examples/hello_agent/main.py +0 -0
  119. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/__init__.py +0 -0
  120. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/__init__.py +0 -0
  121. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/cli/__init__.py +0 -0
  122. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/cli/commands.py +0 -0
  123. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/cli/templates.py +0 -0
  124. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/config/__init__.py +0 -0
  125. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/config/defaults.py +0 -0
  126. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/config/settings.py +0 -0
  127. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/__init__.py +0 -0
  128. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/lifespan.py +0 -0
  129. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/manifest.py +0 -0
  130. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/core/state.py +0 -0
  131. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/__init__.py +0 -0
  132. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/auth.py +0 -0
  133. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/feedback.py +0 -0
  134. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/logging.py +0 -0
  135. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/metrics.py +0 -0
  136. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/middleware/rate_limit.py +0 -0
  137. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/observability/__init__.py +0 -0
  138. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/observability/concurrency.py +0 -0
  139. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/observability/metrics.py +0 -0
  140. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/observability/telemetry.py +0 -0
  141. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/dataset.py +0 -0
  142. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/loop.py +0 -0
  143. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/metrics.py +0 -0
  144. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/optimizer.py +0 -0
  145. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/report.py +0 -0
  146. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/runner.py +0 -0
  147. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/strategies.py +0 -0
  148. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/optimize/synthesizer.py +0 -0
  149. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/prompts/__init__.py +0 -0
  150. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/prompts/manager.py +0 -0
  151. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/protocols/__init__.py +0 -0
  152. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/protocols/decorators.py +0 -0
  153. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/providers/__init__.py +0 -0
  154. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/providers/embeddings.py +0 -0
  155. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/py.typed +0 -0
  156. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/ui/.chainlit/config.toml +0 -0
  157. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/ui/__init__.py +0 -0
  158. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agentomatic/ui/chat.py +0 -0
  159. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/__init__.py +0 -0
  160. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/__init__.py +0 -0
  161. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/agent.py +0 -0
  162. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/api.py +0 -0
  163. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/config.py +0 -0
  164. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/prompts.json +0 -0
  165. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/schemas.py +0 -0
  166. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/alpha/state.py +0 -0
  167. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/__init__.py +0 -0
  168. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/agent.py +0 -0
  169. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/api.py +0 -0
  170. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/config.py +0 -0
  171. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/prompts.json +0 -0
  172. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/schemas.py +0 -0
  173. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/agents/beta/state.py +0 -0
  174. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/__init__.py +0 -0
  175. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/api.py +0 -0
  176. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/dependencies.py +0 -0
  177. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/main.py +0 -0
  178. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/app/settings.py +0 -0
  179. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/__init__.py +0 -0
  180. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/agent_state.py +0 -0
  181. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/api_decorators.py +0 -0
  182. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/base_agent.py +0 -0
  183. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/llm_factory.py +0 -0
  184. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/prompt_manager.py +0 -0
  185. {agentomatic-0.1.0 → agentomatic-0.2.0}/src/common/utilities.py +0 -0
  186. {agentomatic-0.1.0 → agentomatic-0.2.0}/tests/test_cli.py +0 -0
  187. {agentomatic-0.1.0 → agentomatic-0.2.0}/tests/test_optimize.py +0 -0
@@ -1,5 +1,8 @@
1
1
  name: CI
2
2
 
3
+ env:
4
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
5
+
3
6
  on:
4
7
  push:
5
8
  branches: [main]
@@ -1,5 +1,8 @@
1
1
  name: Docs
2
2
 
3
+ env:
4
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
5
+
3
6
  on:
4
7
  push:
5
8
  branches: [main]
@@ -1,5 +1,8 @@
1
1
  name: "Manual Documentation Publish"
2
2
 
3
+ env:
4
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
5
+
3
6
  on:
4
7
  workflow_dispatch:
5
8
  inputs:
@@ -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: PR Checks
2
2
 
3
+ env:
4
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
5
+
3
6
  on:
4
7
  pull_request:
5
8
  branches: [main]
@@ -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.1.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
@@ -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.