agentomatic 0.8.0__tar.gz → 0.9.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 (161) hide show
  1. {agentomatic-0.8.0 → agentomatic-0.9.0}/PKG-INFO +1 -1
  2. {agentomatic-0.8.0 → agentomatic-0.9.0}/pyproject.toml +2 -1
  3. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/_version.py +1 -1
  4. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/cli/commands.py +65 -18
  5. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/cli/templates.py +909 -1
  6. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/core/platform.py +14 -0
  7. {agentomatic-0.8.0 → agentomatic-0.9.0}/LICENSE +0 -0
  8. {agentomatic-0.8.0 → agentomatic-0.9.0}/README.md +0 -0
  9. {agentomatic-0.8.0 → agentomatic-0.9.0}/examples/full_agent/README.md +0 -0
  10. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/__init__.py +0 -0
  11. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/__init__.py +0 -0
  12. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/base.py +0 -0
  13. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/builder.py +0 -0
  14. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/decorators.py +0 -0
  15. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/graph.py +0 -0
  16. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/metrics.py +0 -0
  17. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/mixins/__init__.py +0 -0
  18. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/mixins/dataset.py +0 -0
  19. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/mixins/evaluation.py +0 -0
  20. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/mixins/graph_execution.py +0 -0
  21. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/mixins/observability.py +0 -0
  22. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/mixins/optimization.py +0 -0
  23. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/mixins/serialization.py +0 -0
  24. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/optimizers.py +0 -0
  25. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/agents/types.py +0 -0
  26. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/cli/__init__.py +0 -0
  27. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/config/__init__.py +0 -0
  28. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/config/defaults.py +0 -0
  29. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/config/settings.py +0 -0
  30. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/core/__init__.py +0 -0
  31. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/core/lifespan.py +0 -0
  32. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/core/manifest.py +0 -0
  33. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/core/memory_manager.py +0 -0
  34. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/core/registry.py +0 -0
  35. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/core/router_factory.py +0 -0
  36. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/core/schemas.py +0 -0
  37. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/core/state.py +0 -0
  38. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/delegation/__init__.py +0 -0
  39. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/delegation/handoff.py +0 -0
  40. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/delegation/swarm.py +0 -0
  41. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/demo/__init__.py +0 -0
  42. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/demo/agent.py +0 -0
  43. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/demo/server.py +0 -0
  44. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/middleware/__init__.py +0 -0
  45. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/middleware/auth.py +0 -0
  46. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/middleware/feedback.py +0 -0
  47. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/middleware/logging.py +0 -0
  48. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/middleware/metrics.py +0 -0
  49. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/middleware/rate_limit.py +0 -0
  50. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/observability/__init__.py +0 -0
  51. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/observability/concurrency.py +0 -0
  52. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/observability/metrics.py +0 -0
  53. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/observability/telemetry.py +0 -0
  54. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/__init__.py +0 -0
  55. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/config.py +0 -0
  56. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/context.py +0 -0
  57. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/dashboard.py +0 -0
  58. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/dataset.py +0 -0
  59. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/deployment.py +0 -0
  60. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/eval_contract.py +0 -0
  61. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/events.py +0 -0
  62. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/failure_analysis.py +0 -0
  63. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/fitter.py +0 -0
  64. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/fitter_optimizers.py +0 -0
  65. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/judges.py +0 -0
  66. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/llm_caller.py +0 -0
  67. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/loop.py +0 -0
  68. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/metrics.py +0 -0
  69. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/optimizer.py +0 -0
  70. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/progress.py +0 -0
  71. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/report.py +0 -0
  72. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/runner.py +0 -0
  73. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/search_space.py +0 -0
  74. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/strategies.py +0 -0
  75. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/optimize/synthesizer.py +0 -0
  76. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/pipelines/__init__.py +0 -0
  77. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/pipelines/builder.py +0 -0
  78. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/pipelines/context.py +0 -0
  79. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/pipelines/engine.py +0 -0
  80. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/pipelines/flow.py +0 -0
  81. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/pipelines/loader.py +0 -0
  82. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/pipelines/models.py +0 -0
  83. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/pipelines/router.py +0 -0
  84. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/pipelines/steps.py +0 -0
  85. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/plugins/__init__.py +0 -0
  86. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/plugins/ml.py +0 -0
  87. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/plugins/registry.py +0 -0
  88. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/plugins/router.py +0 -0
  89. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/prompts/__init__.py +0 -0
  90. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/prompts/manager.py +0 -0
  91. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/protocols/__init__.py +0 -0
  92. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/protocols/decorators.py +0 -0
  93. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/providers/__init__.py +0 -0
  94. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/providers/embeddings.py +0 -0
  95. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/providers/llm.py +0 -0
  96. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/py.typed +0 -0
  97. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/security/__init__.py +0 -0
  98. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/security/jwt_auth.py +0 -0
  99. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/security/policy.py +0 -0
  100. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/security/zero_trust.py +0 -0
  101. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/stacks/__init__.py +0 -0
  102. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/stacks/defaults.py +0 -0
  103. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/stacks/manager.py +0 -0
  104. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/storage/__init__.py +0 -0
  105. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/storage/base.py +0 -0
  106. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/storage/checkpointer.py +0 -0
  107. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/storage/memory.py +0 -0
  108. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/storage/models.py +0 -0
  109. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/storage/sqlalchemy.py +0 -0
  110. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/__init__.py +0 -0
  111. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/adapter.py +0 -0
  112. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/adapters/__init__.py +0 -0
  113. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/adapters/generic.py +0 -0
  114. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/adapters/graph_agent.py +0 -0
  115. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/adapters/langchain.py +0 -0
  116. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/adapters/langgraph.py +0 -0
  117. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/decorators.py +0 -0
  118. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/graph_inspector.py +0 -0
  119. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/models.py +0 -0
  120. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/router.py +0 -0
  121. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/run_tracker.py +0 -0
  122. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/serve.py +0 -0
  123. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/asset-manifest.json +0 -0
  124. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/imgs/graph_view.png +0 -0
  125. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/imgs/logo.png +0 -0
  126. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/imgs/main_screen.png +0 -0
  127. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/imgs/main_screen_ok.png +0 -0
  128. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/index.html +0 -0
  129. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/manifest.json +0 -0
  130. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/static/css/main.8b3c42dd.css +0 -0
  131. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/static/css/main.8b3c42dd.css.map +0 -0
  132. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/static/js/main.cbb2a8ee.js +0 -0
  133. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/static/js/main.cbb2a8ee.js.LICENSE.txt +0 -0
  134. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/studio/static/static/js/main.cbb2a8ee.js.map +0 -0
  135. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/ui/__init__.py +0 -0
  136. {agentomatic-0.8.0 → agentomatic-0.9.0}/src/agentomatic/ui/chat.py +0 -0
  137. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_agent_dataset.py +0 -0
  138. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_agent_graph.py +0 -0
  139. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_agent_graph_stream.py +0 -0
  140. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_agent_metrics.py +0 -0
  141. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_agentomatic.py +0 -0
  142. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_base_graph_agent.py +0 -0
  143. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_bugfixes_041.py +0 -0
  144. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_cli.py +0 -0
  145. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_coverage_boost.py +0 -0
  146. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_deep_agent.py +0 -0
  147. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_delegation.py +0 -0
  148. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_fitter.py +0 -0
  149. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_flow.py +0 -0
  150. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_integration.py +0 -0
  151. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_optimize.py +0 -0
  152. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_optimizer_dashboard.py +0 -0
  153. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_optimizer_events.py +0 -0
  154. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_optimizer_progress.py +0 -0
  155. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_pipelines.py +0 -0
  156. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_platform_features.py +0 -0
  157. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_plugins.py +0 -0
  158. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_security.py +0 -0
  159. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_stacks.py +0 -0
  160. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_studio.py +0 -0
  161. {agentomatic-0.8.0 → agentomatic-0.9.0}/tests/test_v06_core.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentomatic
3
- Version: 0.8.0
3
+ Version: 0.9.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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentomatic"
3
- version = "0.8.0"
3
+ version = "0.9.0"
4
4
  description = "Drop agents, not code — zero-code multi-agent API platform framework"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -91,6 +91,7 @@ Changelog = "https://github.com/UnicoLab/agentomatic/blob/main/CHANGELOG.md"
91
91
 
92
92
 
93
93
 
94
+
94
95
  [dependency-groups]
95
96
  dev = [
96
97
  "pytest>=8",
@@ -2,4 +2,4 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- __version__ = "0.8.0"
5
+ __version__ = "0.9.0"
@@ -180,6 +180,8 @@ def cli(ctx: click.Context, version: bool) -> None:
180
180
  [
181
181
  "basic",
182
182
  "full",
183
+ "coordinator",
184
+ "pipeline",
183
185
  "rag",
184
186
  "chatbot",
185
187
  "deepagent",
@@ -261,33 +263,73 @@ def init(name: str, agents_dir: str, template: str | None, force: bool) -> None:
261
263
  edit_file = "plugin.py"
262
264
  elif template in ["legacy_dict", "custom"]:
263
265
  edit_file = "nodes.py" if template == "legacy_dict" else "__init__.py"
266
+ elif template == "pipeline":
267
+ edit_file = "pipeline.yaml"
264
268
  else:
265
269
  edit_file = "agent.py"
266
270
 
267
- # Build next-steps text
268
- steps = (
269
- f"[bold]Next steps:[/bold]\n\n"
270
- f" 1. [cyan]cd {agents_dir}[/cyan]\n"
271
- f" 2. Edit [yellow]{name}/{edit_file}[/yellow] with your logic\n"
272
- f" 3. [cyan]agentomatic run[/cyan] to start\n"
273
- f" 4. [cyan]agentomatic test {name}[/cyan] to test\n"
274
- f" 5. Open [blue]http://localhost:8000/docs[/blue] for API docs"
275
- )
271
+ # Build default next-steps text for generic agents
272
+ if template == "pipeline":
273
+ steps = (
274
+ f"[bold]Next steps:[/bold]\n\n"
275
+ f" 1. Edit [yellow]{name}/pipeline.yaml[/yellow] "
276
+ f"define steps and agents\n"
277
+ f" 2. Create the agents referenced in the pipeline:\n"
278
+ f" [cyan]agentomatic init classifier --template basic[/cyan]\n"
279
+ f" [cyan]agentomatic init processor --template basic[/cyan]\n"
280
+ f" 3. [cyan]agentomatic run[/cyan] — pipeline auto-discovered\n\n"
281
+ f" [bold]API:[/bold]\n"
282
+ f" [blue]POST /api/v1/pipelines/{name}/run[/blue] "
283
+ f"[dim]— Execute the pipeline[/dim]\n"
284
+ f" [blue]GET /api/v1/pipelines/{name}/validate[/blue] "
285
+ f"[dim]— Pre-flight check[/dim]\n"
286
+ f" [blue]GET /api/v1/pipelines[/blue] "
287
+ f"[dim]— List all pipelines[/dim]"
288
+ )
289
+ else:
290
+ steps = (
291
+ f"[bold]Next steps:[/bold]\n\n"
292
+ f" 1. [cyan]cd {agents_dir}[/cyan]\n"
293
+ f" 2. Edit [yellow]{name}/{edit_file}[/yellow] with your logic\n"
294
+ f" 3. [cyan]agentomatic run[/cyan] to start\n"
295
+ f" 4. [cyan]agentomatic test {name}[/cyan] to test\n"
296
+ f" 5. Open [blue]http://localhost:8000/docs[/blue] for API docs"
297
+ )
276
298
 
277
- if template == "full":
299
+ if template == "coordinator":
278
300
  steps += (
279
301
  f"\n\n"
280
- f"[bold]ML Lifecycle:[/bold]\n\n"
281
- f" [cyan]python -m agents.{name}.train[/cyan] "
282
- f"[dim] Compile, fit & save[/dim]\n"
283
- f" [cyan]python -m agents.{name}.eval[/cyan] "
302
+ f"[bold]Delegation Setup:[/bold]\n\n"
303
+ f" 1. Create specialist agents:\n"
304
+ f" [cyan]agentomatic init researcher --template basic[/cyan]\n"
305
+ f" [cyan]agentomatic init writer --template basic[/cyan]\n"
306
+ f" 2. Edit [yellow]{name}/delegation.py[/yellow] — "
307
+ f"add targets to DELEGATION_TARGETS\n"
308
+ f" 3. [cyan]agentomatic run[/cyan] — all agents auto-discovered\n\n"
309
+ f" [bold]API:[/bold] [blue]POST /api/v1/{name}/invoke[/blue]"
310
+ )
311
+
312
+ if template in ["full", "pipeline", "plugin"]:
313
+ prefix = (
314
+ "pipelines"
315
+ if template == "pipeline"
316
+ else ("plugins" if template == "plugin" else "agents")
317
+ )
318
+ steps += "\n\n[bold]ML Lifecycle:[/bold]\n\n"
319
+ if template in ["full", "plugin"]:
320
+ steps += (
321
+ f" [cyan]python -m {prefix}.{name}.train[/cyan] "
322
+ f"[dim]— Train & save model[/dim]\n"
323
+ )
324
+ steps += (
325
+ f" [cyan]python -m {prefix}.{name}.eval[/cyan] "
284
326
  f"[dim]— Evaluate quality[/dim]\n"
285
- f" [cyan]python -m agents.{name}.optimize[/cyan] "
286
- f"[dim]— Prompt optimization[/dim]\n"
287
- f" [cyan]python -m agents.{name}.predict[/cyan] "
327
+ f" [cyan]python -m {prefix}.{name}.optimize[/cyan] "
328
+ f"[dim]— Prompt/Hyperparameter optimization[/dim]\n"
329
+ f" [cyan]python -m {prefix}.{name}.predict[/cyan] "
288
330
  f"[dim]— Batch / interactive inference[/dim]\n"
289
331
  f" [cyan]make all[/cyan] "
290
- f"[dim]— Full pipeline (train → eval)[/dim]"
332
+ f"[dim]— Full ML lifecycle[/dim]"
291
333
  )
292
334
 
293
335
  if HAS_RICH:
@@ -301,6 +343,11 @@ def init(name: str, agents_dir: str, template: str | None, force: bool) -> None:
301
343
  click.echo(f" 4. python -m agents.{name}.train")
302
344
  click.echo(f" 5. python -m agents.{name}.eval")
303
345
  click.echo(f" 6. python -m agents.{name}.optimize")
346
+ if template == "coordinator":
347
+ click.echo(f" 4. Edit {name}/delegation.py — add targets")
348
+ click.echo(f" 5. POST /api/v1/{name}/invoke")
349
+ if template == "pipeline":
350
+ click.echo(f" 4. POST /api/v1/pipelines/{name}/run")
304
351
 
305
352
 
306
353
  # =====================================================================