agentex-sdk 0.2.6__tar.gz → 0.2.7__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.
- agentex_sdk-0.2.7/.release-please-manifest.json +3 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/CHANGELOG.md +14 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/PKG-INFO +32 -1
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/README.md +31 -0
- agentex_sdk-0.2.7/examples/launch-tutorials.sh +336 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/Dockerfile +44 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/README.md +197 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/creator.yaml +42 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/critic.yaml +42 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/formatter.yaml +42 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/orchestrator.yaml +42 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/project/__init__.py +1 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/project/creator.py +294 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/project/critic.py +312 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/project/formatter.py +327 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/project/models.py +80 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/project/orchestrator.py +423 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/project/state_machines/__init__.py +1 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/project/state_machines/content_workflow.py +304 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/pyproject.toml +33 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/start-agents.sh +327 -0
- agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/uv.lock +2244 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/project/run_worker.py +4 -1
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/pyproject.toml +1 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/project/run_worker.py +4 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/pyproject.toml +2 -1
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/project/run_worker.py +4 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/pyproject.toml +1 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/pyproject.toml +4 -3
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_version.py +1 -1
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/utils/_modules/client.py +6 -5
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/commands/agents.py +36 -2
- agentex_sdk-0.2.7/src/agentex/lib/cli/debug/__init__.py +15 -0
- agentex_sdk-0.2.7/src/agentex/lib/cli/debug/debug_config.py +116 -0
- agentex_sdk-0.2.7/src/agentex/lib/cli/debug/debug_handlers.py +174 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/handlers/agent_handlers.py +3 -2
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/handlers/deploy_handlers.py +1 -2
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/handlers/run_handlers.py +24 -7
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/pyproject.toml.j2 +0 -1
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/pyproject.toml.j2 +0 -1
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/project/acp.py.j2 +31 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/project/run_worker.py.j2 +4 -1
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/pyproject.toml.j2 +1 -1
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/acp/acp.py +5 -5
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/workers/worker.py +24 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/environment_variables.py +2 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/base/base_acp_server.py +13 -90
- agentex_sdk-0.2.7/src/agentex/lib/utils/debug.py +63 -0
- agentex_sdk-0.2.7/src/agentex/lib/utils/registration.py +101 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/agent.py +7 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/uv.lock +908 -908
- agentex_sdk-0.2.6/.release-please-manifest.json +0 -3
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/.gitignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/CONTRIBUTING.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/LICENSE +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/SECURITY.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/api.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/bin/check-release-environment +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/bin/publish-pypi +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/.keep +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/000_hello_acp/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/000_hello_acp/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/000_hello_acp/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/000_hello_acp/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/000_hello_acp/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/000_hello_acp/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/000_hello_acp/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/000_hello_acp/pyproject.toml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/010_multiturn/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/010_multiturn/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/010_multiturn/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/010_multiturn/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/010_multiturn/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/010_multiturn/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/010_multiturn/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/010_multiturn/pyproject.toml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/020_streaming/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/020_streaming/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/020_streaming/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/020_streaming/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/020_streaming/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/020_streaming/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/020_streaming/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/00_sync/020_streaming/pyproject.toml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/000_hello_acp/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/000_hello_acp/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/000_hello_acp/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/000_hello_acp/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/000_hello_acp/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/000_hello_acp/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/000_hello_acp/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/000_hello_acp/pyproject.toml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/010_multiturn/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/010_multiturn/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/010_multiturn/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/010_multiturn/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/010_multiturn/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/010_multiturn/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/010_multiturn/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/010_multiturn/pyproject.toml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/020_streaming/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/020_streaming/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/020_streaming/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/020_streaming/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/020_streaming/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/020_streaming/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/020_streaming/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/020_streaming/pyproject.toml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/030_tracing/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/030_tracing/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/030_tracing/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/030_tracing/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/030_tracing/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/030_tracing/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/030_tracing/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/030_tracing/pyproject.toml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/040_other_sdks/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/040_other_sdks/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/040_other_sdks/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/040_other_sdks/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/040_other_sdks/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/040_other_sdks/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/040_other_sdks/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/040_other_sdks/pyproject.toml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/080_batch_events/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/080_batch_events/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/080_batch_events/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/080_batch_events/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/080_batch_events/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/080_batch_events/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/080_batch_events/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/080_batch_events/pyproject.toml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/00_base/080_batch_events/test_batch_events.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/000_hello_acp/project/workflow.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/010_agent_chat/project/workflow.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/.dockerignore +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/Dockerfile +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/dev.ipynb +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/manifest.yaml +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/project/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/project/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/project/state_machines/deep_research.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/project/workflow.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/project/workflows/deep_research/clarify_user_query.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/project/workflows/deep_research/performing_deep_research.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/examples/tutorials/10_agentic/10_temporal/020_state_machine/project/workflows/deep_research/waiting_for_user_input.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/mypy.ini +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/noxfile.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/release-please-config.json +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/requirements-dev.lock +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/requirements.lock +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_base_client.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_client.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_compat.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_constants.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_exceptions.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_files.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_models.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_qs.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_resource.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_streaming.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_types.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/_logs.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/_proxy.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/_reflection.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/_resources_proxy.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/_streams.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/_sync.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/_transform.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/_typing.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/_utils/_utils.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/.keep +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/agent_task_tracker.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/agents.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/events.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/messages.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/state.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/streaming.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/tasks.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/_modules/tracing.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/providers/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/providers/_modules/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/providers/_modules/litellm.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/providers/_modules/openai.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/providers/_modules/sgp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/utils/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/utils/_modules/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/adk/utils/_modules/templating.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/commands/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/commands/init.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/commands/main.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/commands/secrets.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/commands/tasks.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/commands/uv.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/handlers/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/handlers/cleanup_handlers.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/handlers/secret_handlers.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/.dockerignore.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/Dockerfile-uv.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/Dockerfile.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/README.md.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/deploy/example.yaml.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/dev.ipynb.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/manifest.yaml.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/project/acp.py.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/default/requirements.txt.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/deploy/Screenshot 2025-03-19 at 10.36.57/342/200/257AM.png" +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/deploy/example.yaml.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/.dockerignore.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/Dockerfile-uv.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/Dockerfile.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/README.md.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/deploy/example.yaml.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/dev.ipynb.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/manifest.yaml.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/project/acp.py.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/sync/requirements.txt.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/.dockerignore.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/Dockerfile-uv.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/Dockerfile.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/README.md.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/deploy/example.yaml.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/dev.ipynb.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/manifest.yaml.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/project/workflow.py.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/templates/temporal/requirements.txt.j2 +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/utils/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/utils/auth_utils.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/utils/cli_utils.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/utils/credential_utils.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/utils/exceptions.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/utils/kubectl_utils.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/utils/kubernetes_secrets_utils.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/cli/utils/path_utils.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/adapters/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/adapters/llm/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/adapters/llm/adapter_litellm.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/adapters/llm/adapter_sgp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/adapters/llm/port.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/adapters/streams/adapter_redis.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/adapters/streams/port.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/clients/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/clients/temporal/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/clients/temporal/temporal_client.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/clients/temporal/types.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/clients/temporal/utils.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/acp/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/agent_task_tracker.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/agents.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/events.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/messages.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/providers/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/providers/litellm.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/providers/openai.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/providers/sgp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/state.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/streaming.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/tasks.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/tracing.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/utils/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/services/adk/utils/templating.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/activity_helpers.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/acp/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/acp/acp_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/agent_task_tracker_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/agents_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/events_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/messages_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/providers/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/providers/litellm_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/providers/openai_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/providers/sgp_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/state_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/streaming_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/tasks_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/tracing_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/utils/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/activities/adk/utils/templating_activities.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/services/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/services/temporal_task_service.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/types/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/types/workflow.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/workers/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/temporal/workflows/workflow.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/tracing/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/tracing/processors/agentex_tracing_processor.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/tracing/processors/sgp_tracing_processor.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/tracing/processors/tracing_processor_interface.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/tracing/trace.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/tracing/tracer.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/core/tracing/tracing_processor_manager.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/py.typed +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/config/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/config/agent_config.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/config/agent_manifest.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/config/build_config.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/config/deployment_config.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/config/local_development_config.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/config/project_config.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/fastacp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/impl/agentic_base_acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/impl/sync_acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/impl/temporal_acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/tests/README.md +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/tests/conftest.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/tests/pytest.ini +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/tests/run_tests.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/tests/test_base_acp_server.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/tests/test_fastacp_factory.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/fastacp/tests/test_integration.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/state_machine/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/state_machine/noop_workflow.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/state_machine/state.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/state_machine/state_machine.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/state_machine/state_workflow.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/utils/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/sdk/utils/messages.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/acp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/agent_configs.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/agent_results.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/converters.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/credentials.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/fastacp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/files.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/json_rpc.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/llm_messages.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/task_message_updates.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/types/tracing.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/completions.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/console.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/dev_tools/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/dev_tools/async_messages.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/io.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/iterables.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/json_schema.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/logging.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/mcp.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/model_utils.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/parsing.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/regex.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/lib/utils/temporal.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/py.typed +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/agents.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/events.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/messages/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/messages/batch.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/messages/messages.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/spans.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/states.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/tasks.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/resources/tracker.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/acp_type.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/agent_list_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/agent_list_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/agent_rpc_by_name_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/agent_rpc_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/agent_rpc_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/agent_rpc_result.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/agent_task_tracker.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/data_content.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/data_content_param.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/data_delta.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/event.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/event_list_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/event_list_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/message_author.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/message_create_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/message_list_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/message_list_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/message_style.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/message_update_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/messages/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/messages/batch_create_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/messages/batch_create_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/messages/batch_update_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/messages/batch_update_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/shared/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/shared/delete_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/span.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/span_create_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/span_list_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/span_list_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/span_update_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/state.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/state_create_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/state_list_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/state_list_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/state_update_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/task.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/task_list_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/task_list_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/task_message.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/task_message_content.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/task_message_content_param.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/task_message_delta.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/task_message_update.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/text_content.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/text_content_param.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/text_delta.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/tool_request_content.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/tool_request_content_param.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/tool_request_delta.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/tool_response_content.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/tool_response_content_param.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/tool_response_delta.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/tracker_list_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/tracker_list_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/src/agentex/types/tracker_update_params.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/messages/__init__.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/messages/test_batch.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/test_agents.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/test_events.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/test_messages.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/test_spans.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/test_states.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/test_tasks.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/api_resources/test_tracker.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/conftest.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/sample_file.txt +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_client.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_deepcopy.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_extract_files.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_files.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_models.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_qs.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_required_args.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_response.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_streaming.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_transform.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_utils/test_proxy.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/test_utils/test_typing.py +0 -0
- {agentex_sdk-0.2.6 → agentex_sdk-0.2.7}/tests/utils.py +0 -0
@@ -1,5 +1,19 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.2.7 (2025-08-08)
|
4
|
+
|
5
|
+
Full Changelog: [v0.2.6...v0.2.7](https://github.com/scaleapi/agentex-python/compare/v0.2.6...v0.2.7)
|
6
|
+
|
7
|
+
### Features
|
8
|
+
|
9
|
+
* **api:** api update ([e3d08ba](https://github.com/scaleapi/agentex-python/commit/e3d08baad59346db48e04a394a929d6347dafa07))
|
10
|
+
* debug features ([40d8db2](https://github.com/scaleapi/agentex-python/commit/40d8db22dcc8f00a6c78e9bc3e1d036ebd1423b6))
|
11
|
+
|
12
|
+
|
13
|
+
### Chores
|
14
|
+
|
15
|
+
* **internal:** fix ruff target version ([1b880e1](https://github.com/scaleapi/agentex-python/commit/1b880e1dd81d47bb9df12507f13351611ff6367f))
|
16
|
+
|
3
17
|
## 0.2.6 (2025-08-01)
|
4
18
|
|
5
19
|
Full Changelog: [v0.2.5...v0.2.6](https://github.com/scaleapi/agentex-python/compare/v0.2.5...v0.2.6)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: agentex-sdk
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.7
|
4
4
|
Summary: The official Python library for the agentex API
|
5
5
|
Project-URL: Homepage, https://github.com/scaleapi/agentex-python
|
6
6
|
Project-URL: Repository, https://github.com/scaleapi/agentex-python
|
@@ -126,6 +126,37 @@ asyncio.run(main())
|
|
126
126
|
|
127
127
|
Functionality between the synchronous and asynchronous clients is otherwise identical.
|
128
128
|
|
129
|
+
## Debugging
|
130
|
+
|
131
|
+
AgentEx provides built-in debugging support for **temporal projects** during local development.
|
132
|
+
|
133
|
+
```bash
|
134
|
+
# Basic debugging
|
135
|
+
uv run agentex agents run --manifest manifest.yaml --debug-worker
|
136
|
+
|
137
|
+
# Wait for debugger to attach before starting
|
138
|
+
uv run agentex agents run --manifest manifest.yaml --debug-worker --wait-for-debugger
|
139
|
+
|
140
|
+
# Custom debug port
|
141
|
+
uv run agentex agents run --manifest manifest.yaml --debug-worker --debug-port 5679
|
142
|
+
```
|
143
|
+
|
144
|
+
For **VS Code**, add this configuration to `.vscode/launch.json`:
|
145
|
+
|
146
|
+
```json
|
147
|
+
{
|
148
|
+
"name": "Attach to AgentEx Worker",
|
149
|
+
"type": "debugpy",
|
150
|
+
"request": "attach",
|
151
|
+
"connect": { "host": "localhost", "port": 5678 },
|
152
|
+
"pathMappings": [{ "localRoot": "${workspaceFolder}", "remoteRoot": "." }],
|
153
|
+
"justMyCode": false,
|
154
|
+
"console": "integratedTerminal"
|
155
|
+
}
|
156
|
+
```
|
157
|
+
|
158
|
+
The debug server automatically finds an available port starting from 5678 and prints connection details when starting.
|
159
|
+
|
129
160
|
### With aiohttp
|
130
161
|
|
131
162
|
By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
|
@@ -67,6 +67,37 @@ asyncio.run(main())
|
|
67
67
|
|
68
68
|
Functionality between the synchronous and asynchronous clients is otherwise identical.
|
69
69
|
|
70
|
+
## Debugging
|
71
|
+
|
72
|
+
AgentEx provides built-in debugging support for **temporal projects** during local development.
|
73
|
+
|
74
|
+
```bash
|
75
|
+
# Basic debugging
|
76
|
+
uv run agentex agents run --manifest manifest.yaml --debug-worker
|
77
|
+
|
78
|
+
# Wait for debugger to attach before starting
|
79
|
+
uv run agentex agents run --manifest manifest.yaml --debug-worker --wait-for-debugger
|
80
|
+
|
81
|
+
# Custom debug port
|
82
|
+
uv run agentex agents run --manifest manifest.yaml --debug-worker --debug-port 5679
|
83
|
+
```
|
84
|
+
|
85
|
+
For **VS Code**, add this configuration to `.vscode/launch.json`:
|
86
|
+
|
87
|
+
```json
|
88
|
+
{
|
89
|
+
"name": "Attach to AgentEx Worker",
|
90
|
+
"type": "debugpy",
|
91
|
+
"request": "attach",
|
92
|
+
"connect": { "host": "localhost", "port": 5678 },
|
93
|
+
"pathMappings": [{ "localRoot": "${workspaceFolder}", "remoteRoot": "." }],
|
94
|
+
"justMyCode": false,
|
95
|
+
"console": "integratedTerminal"
|
96
|
+
}
|
97
|
+
```
|
98
|
+
|
99
|
+
The debug server automatically finds an available port starting from 5678 and prints connection details when starting.
|
100
|
+
|
70
101
|
### With aiohttp
|
71
102
|
|
72
103
|
By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
|
@@ -0,0 +1,336 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# AgentEx Tutorial Launcher
|
4
|
+
# This script helps you easily launch and test all tutorials in the repository
|
5
|
+
#
|
6
|
+
# Usage:
|
7
|
+
# ./launch-tutorials.sh # Show interactive menu
|
8
|
+
# ./launch-tutorials.sh 1 # Launch tutorial #1 directly
|
9
|
+
# ./launch-tutorials.sh a # Launch all tutorials with confirmations
|
10
|
+
# ./launch-tutorials.sh c # Clean up orphaned tutorial processes
|
11
|
+
#
|
12
|
+
# Note: Excludes 90_multi_agent_non_temporal (use its own start-agents.sh)
|
13
|
+
|
14
|
+
# Simple cleanup function for orphaned processes
|
15
|
+
cleanup() {
|
16
|
+
# Kill any remaining agentex or uvicorn processes from tutorials
|
17
|
+
local agentex_pids=$(pgrep -f "agentex agents run.*tutorials" 2>/dev/null || true)
|
18
|
+
if [[ -n "$agentex_pids" ]]; then
|
19
|
+
echo "$agentex_pids" | xargs kill -TERM 2>/dev/null || true
|
20
|
+
sleep 1
|
21
|
+
echo "$agentex_pids" | xargs kill -KILL 2>/dev/null || true
|
22
|
+
fi
|
23
|
+
|
24
|
+
local uvicorn_pids=$(pgrep -f "uvicorn.*project\." 2>/dev/null || true)
|
25
|
+
if [[ -n "$uvicorn_pids" ]]; then
|
26
|
+
echo "$uvicorn_pids" | xargs kill -TERM 2>/dev/null || true
|
27
|
+
sleep 1
|
28
|
+
echo "$uvicorn_pids" | xargs kill -KILL 2>/dev/null || true
|
29
|
+
fi
|
30
|
+
}
|
31
|
+
|
32
|
+
# Color codes for output
|
33
|
+
RED='\033[0;31m'
|
34
|
+
GREEN='\033[0;32m'
|
35
|
+
YELLOW='\033[1;33m'
|
36
|
+
BLUE='\033[0;34m'
|
37
|
+
NC='\033[0m' # No Color
|
38
|
+
|
39
|
+
# Tutorial definitions
|
40
|
+
declare -a TUTORIALS=(
|
41
|
+
"tutorials/00_sync/000_hello_acp|Basic Hello ACP (Sync)"
|
42
|
+
"tutorials/00_sync/010_multiturn|Multi-turn Chat (Sync)"
|
43
|
+
"tutorials/00_sync/020_streaming|Streaming Response (Sync)"
|
44
|
+
"tutorials/10_agentic/00_base/000_hello_acp|Basic Hello ACP (Agentic)"
|
45
|
+
"tutorials/10_agentic/00_base/010_multiturn|Multi-turn Chat (Agentic)"
|
46
|
+
"tutorials/10_agentic/00_base/020_streaming|Streaming Response (Agentic)"
|
47
|
+
"tutorials/10_agentic/00_base/030_tracing|Tracing Example (Agentic)"
|
48
|
+
"tutorials/10_agentic/00_base/040_other_sdks|Other SDKs Integration (Agentic)"
|
49
|
+
"tutorials/10_agentic/00_base/080_batch_events|Batch Events (Agentic)"
|
50
|
+
"tutorials/10_agentic/10_temporal/000_hello_acp|Basic Hello ACP (Temporal)"
|
51
|
+
"tutorials/10_agentic/10_temporal/010_agent_chat|Agent Chat (Temporal)"
|
52
|
+
"tutorials/10_agentic/10_temporal/020_state_machine|State Machine (Temporal)"
|
53
|
+
)
|
54
|
+
|
55
|
+
# Function to print colored output
|
56
|
+
print_colored() {
|
57
|
+
local color=$1
|
58
|
+
local message=$2
|
59
|
+
# Check if terminal supports colors
|
60
|
+
if [[ -t 1 ]] && command -v tput >/dev/null 2>&1; then
|
61
|
+
printf "${color}%s${NC}\n" "$message"
|
62
|
+
else
|
63
|
+
printf "%s\n" "$message"
|
64
|
+
fi
|
65
|
+
}
|
66
|
+
|
67
|
+
# Function to display the menu
|
68
|
+
show_menu() {
|
69
|
+
print_colored $BLUE "╔════════════════════════════════════════════════════════════════╗"
|
70
|
+
print_colored $BLUE "║ AgentEx Tutorial Launcher ║"
|
71
|
+
print_colored $BLUE "╚════════════════════════════════════════════════════════════════╝"
|
72
|
+
echo ""
|
73
|
+
print_colored $YELLOW "Available tutorials:"
|
74
|
+
echo ""
|
75
|
+
|
76
|
+
local index=1
|
77
|
+
for tutorial in "${TUTORIALS[@]}"; do
|
78
|
+
IFS='|' read -r path description <<< "$tutorial"
|
79
|
+
if [[ -t 1 ]] && command -v tput >/dev/null 2>&1; then
|
80
|
+
printf "${GREEN}%2d.${NC} %s\n" $index "$description"
|
81
|
+
else
|
82
|
+
printf "%2d. %s\n" $index "$description"
|
83
|
+
fi
|
84
|
+
index=$((index + 1))
|
85
|
+
done
|
86
|
+
|
87
|
+
echo ""
|
88
|
+
print_colored $BLUE "Other options:"
|
89
|
+
print_colored $GREEN " a. Run all tutorials sequentially (with confirmations)"
|
90
|
+
print_colored $GREEN " c. Clean up any orphaned tutorial processes"
|
91
|
+
print_colored $GREEN " q. Quit"
|
92
|
+
echo ""
|
93
|
+
print_colored $YELLOW "📌 Note: The multi-agent system tutorial (tutorials/10_agentic/90_multi_agent_non_temporal) is excluded"
|
94
|
+
print_colored $YELLOW " as it has a special launch process. Use its own start-agents.sh script."
|
95
|
+
echo ""
|
96
|
+
}
|
97
|
+
|
98
|
+
# Function to run a specific tutorial
|
99
|
+
run_tutorial() {
|
100
|
+
local tutorial_index=$1
|
101
|
+
local tutorial_info="${TUTORIALS[$((tutorial_index - 1))]}"
|
102
|
+
IFS='|' read -r path description <<< "$tutorial_info"
|
103
|
+
|
104
|
+
local manifest_path="${path}/manifest.yaml"
|
105
|
+
|
106
|
+
print_colored $BLUE "╔════════════════════════════════════════════════════════════════╗"
|
107
|
+
printf "║ Running: %-54s ║\n" "$description"
|
108
|
+
print_colored $BLUE "╚════════════════════════════════════════════════════════════════╝"
|
109
|
+
|
110
|
+
if [[ ! -f "$manifest_path" ]]; then
|
111
|
+
print_colored $RED "❌ Error: Manifest file not found at $manifest_path"
|
112
|
+
return 1
|
113
|
+
fi
|
114
|
+
|
115
|
+
print_colored $YELLOW "📂 Tutorial path: $path"
|
116
|
+
print_colored $YELLOW "📄 Manifest: $manifest_path"
|
117
|
+
echo ""
|
118
|
+
print_colored $GREEN "🚀 Executing: cd .. && uv run agentex agents run --manifest examples/$manifest_path"
|
119
|
+
print_colored $YELLOW "💡 Press Ctrl+C to stop the tutorial"
|
120
|
+
echo ""
|
121
|
+
|
122
|
+
# Run the tutorial directly (need to go to parent dir where uv project is)
|
123
|
+
(cd .. && uv run agentex agents run --manifest "examples/$manifest_path")
|
124
|
+
|
125
|
+
local exit_code=$?
|
126
|
+
if [[ $exit_code -eq 0 ]]; then
|
127
|
+
print_colored $GREEN "✅ Tutorial completed successfully!"
|
128
|
+
elif [[ $exit_code -eq 130 ]]; then
|
129
|
+
print_colored $YELLOW "🛑 Tutorial was interrupted by user"
|
130
|
+
else
|
131
|
+
print_colored $RED "❌ Tutorial failed with exit code: $exit_code"
|
132
|
+
fi
|
133
|
+
|
134
|
+
return $exit_code
|
135
|
+
}
|
136
|
+
|
137
|
+
# Function to run all tutorials
|
138
|
+
run_all_tutorials() {
|
139
|
+
print_colored $BLUE "🎯 Running all tutorials sequentially..."
|
140
|
+
echo ""
|
141
|
+
|
142
|
+
local success_count=0
|
143
|
+
local total_count=${#TUTORIALS[@]}
|
144
|
+
|
145
|
+
for i in $(seq 1 $total_count); do
|
146
|
+
local tutorial_info="${TUTORIALS[$((i - 1))]}"
|
147
|
+
IFS='|' read -r path description <<< "$tutorial_info"
|
148
|
+
|
149
|
+
print_colored $YELLOW "┌─ Tutorial $i/$total_count: $description"
|
150
|
+
echo ""
|
151
|
+
|
152
|
+
# Ask for confirmation
|
153
|
+
while true; do
|
154
|
+
print_colored $BLUE "Run this tutorial? (y/n/q to quit): "
|
155
|
+
read -r response
|
156
|
+
case $response in
|
157
|
+
[Yy]* )
|
158
|
+
if run_tutorial $i; then
|
159
|
+
success_count=$((success_count + 1))
|
160
|
+
fi
|
161
|
+
break
|
162
|
+
;;
|
163
|
+
[Nn]* )
|
164
|
+
print_colored $YELLOW "⏭️ Skipping tutorial $i"
|
165
|
+
break
|
166
|
+
;;
|
167
|
+
[Qq]* )
|
168
|
+
print_colored $YELLOW "🛑 Stopping tutorial run"
|
169
|
+
echo ""
|
170
|
+
print_colored $BLUE "📊 Summary: $success_count/$((i-1)) tutorials completed successfully"
|
171
|
+
return 0
|
172
|
+
;;
|
173
|
+
* )
|
174
|
+
print_colored $RED "Please answer y, n, or q."
|
175
|
+
;;
|
176
|
+
esac
|
177
|
+
done
|
178
|
+
|
179
|
+
if [[ $i -lt $total_count ]]; then
|
180
|
+
echo ""
|
181
|
+
print_colored $BLUE "────────────────────────────────────────────────────────────────"
|
182
|
+
echo ""
|
183
|
+
fi
|
184
|
+
done
|
185
|
+
|
186
|
+
echo ""
|
187
|
+
print_colored $BLUE "🎉 All tutorials completed!"
|
188
|
+
print_colored $BLUE "📊 Summary: $success_count/$total_count tutorials completed successfully"
|
189
|
+
}
|
190
|
+
|
191
|
+
# Function to manually clean up tutorial processes
|
192
|
+
manual_cleanup() {
|
193
|
+
print_colored $BLUE "🧹 Manual cleanup of tutorial processes..."
|
194
|
+
echo ""
|
195
|
+
|
196
|
+
# Check for running tutorial processes
|
197
|
+
local found_processes=false
|
198
|
+
|
199
|
+
# Check for agentex processes
|
200
|
+
local agentex_pids=$(pgrep -f "agentex agents run.*tutorials" 2>/dev/null || true)
|
201
|
+
if [[ -n "$agentex_pids" ]]; then
|
202
|
+
found_processes=true
|
203
|
+
print_colored $YELLOW "🔍 Found agentex tutorial processes:"
|
204
|
+
ps -p $agentex_pids -o pid,command 2>/dev/null || true
|
205
|
+
echo ""
|
206
|
+
fi
|
207
|
+
|
208
|
+
# Check for uvicorn processes
|
209
|
+
local uvicorn_pids=$(pgrep -f "uvicorn.*project\." 2>/dev/null || true)
|
210
|
+
if [[ -n "$uvicorn_pids" ]]; then
|
211
|
+
found_processes=true
|
212
|
+
print_colored $YELLOW "🔍 Found uvicorn tutorial processes:"
|
213
|
+
ps -p $uvicorn_pids -o pid,command 2>/dev/null || true
|
214
|
+
echo ""
|
215
|
+
fi
|
216
|
+
|
217
|
+
# Check for occupied ports
|
218
|
+
print_colored $YELLOW "🔍 Checking common tutorial ports (8000-8003)..."
|
219
|
+
local port_check=$(lsof -i :8000 -i :8001 -i :8002 -i :8003 2>/dev/null || true)
|
220
|
+
if [[ -n "$port_check" ]]; then
|
221
|
+
found_processes=true
|
222
|
+
echo "$port_check"
|
223
|
+
echo ""
|
224
|
+
fi
|
225
|
+
|
226
|
+
if [[ "$found_processes" == "false" ]]; then
|
227
|
+
print_colored $GREEN "✅ No tutorial processes found - system is clean!"
|
228
|
+
return 0
|
229
|
+
fi
|
230
|
+
|
231
|
+
# Ask for confirmation before cleaning
|
232
|
+
while true; do
|
233
|
+
print_colored $BLUE "Kill these processes? (y/n): "
|
234
|
+
read -r response
|
235
|
+
case $response in
|
236
|
+
[Yy]* )
|
237
|
+
print_colored $YELLOW "🧹 Cleaning up..."
|
238
|
+
cleanup
|
239
|
+
print_colored $GREEN "✅ Manual cleanup completed!"
|
240
|
+
break
|
241
|
+
;;
|
242
|
+
[Nn]* )
|
243
|
+
print_colored $YELLOW "⏭️ Cleanup cancelled"
|
244
|
+
break
|
245
|
+
;;
|
246
|
+
* )
|
247
|
+
print_colored $RED "Please answer y or n."
|
248
|
+
;;
|
249
|
+
esac
|
250
|
+
done
|
251
|
+
}
|
252
|
+
|
253
|
+
# Function to validate tutorial number
|
254
|
+
validate_tutorial_number() {
|
255
|
+
local num=$1
|
256
|
+
if [[ ! "$num" =~ ^[0-9]+$ ]] || [[ $num -lt 1 ]] || [[ $num -gt ${#TUTORIALS[@]} ]]; then
|
257
|
+
return 1
|
258
|
+
fi
|
259
|
+
return 0
|
260
|
+
}
|
261
|
+
|
262
|
+
# Main script logic
|
263
|
+
main() {
|
264
|
+
# Check if we're in the right directory
|
265
|
+
if [[ ! -f "../pyproject.toml" ]] || [[ ! -d "tutorials" ]]; then
|
266
|
+
print_colored $RED "❌ Error: This script must be run from the examples directory"
|
267
|
+
print_colored $YELLOW "💡 Current directory: $(pwd)"
|
268
|
+
print_colored $YELLOW "💡 Expected files: ../pyproject.toml, tutorials/"
|
269
|
+
exit 1
|
270
|
+
fi
|
271
|
+
|
272
|
+
# If a tutorial number is provided as argument
|
273
|
+
if [[ $# -eq 1 ]]; then
|
274
|
+
local tutorial_num=$1
|
275
|
+
|
276
|
+
if [[ "$tutorial_num" == "a" ]] || [[ "$tutorial_num" == "all" ]]; then
|
277
|
+
run_all_tutorials
|
278
|
+
exit 0
|
279
|
+
elif [[ "$tutorial_num" == "c" ]] || [[ "$tutorial_num" == "cleanup" ]]; then
|
280
|
+
manual_cleanup
|
281
|
+
exit 0
|
282
|
+
fi
|
283
|
+
|
284
|
+
if validate_tutorial_number "$tutorial_num"; then
|
285
|
+
run_tutorial "$tutorial_num"
|
286
|
+
exit $?
|
287
|
+
else
|
288
|
+
print_colored $RED "❌ Error: Invalid tutorial number '$tutorial_num'"
|
289
|
+
print_colored $YELLOW "💡 Valid range: 1-${#TUTORIALS[@]}"
|
290
|
+
exit 1
|
291
|
+
fi
|
292
|
+
fi
|
293
|
+
|
294
|
+
# Interactive mode
|
295
|
+
while true; do
|
296
|
+
show_menu
|
297
|
+
print_colored $BLUE "Enter your choice (1-${#TUTORIALS[@]}, a, c, or q): "
|
298
|
+
read -r choice
|
299
|
+
|
300
|
+
case $choice in
|
301
|
+
[Qq]* )
|
302
|
+
print_colored $YELLOW "👋 Goodbye!"
|
303
|
+
exit 0
|
304
|
+
;;
|
305
|
+
[Aa]* )
|
306
|
+
echo ""
|
307
|
+
run_all_tutorials
|
308
|
+
echo ""
|
309
|
+
;;
|
310
|
+
[Cc]* )
|
311
|
+
echo ""
|
312
|
+
manual_cleanup
|
313
|
+
echo ""
|
314
|
+
print_colored $BLUE "Press Enter to continue..."
|
315
|
+
read -r
|
316
|
+
;;
|
317
|
+
* )
|
318
|
+
if validate_tutorial_number "$choice"; then
|
319
|
+
echo ""
|
320
|
+
run_tutorial "$choice"
|
321
|
+
echo ""
|
322
|
+
print_colored $BLUE "Press Enter to continue..."
|
323
|
+
read -r
|
324
|
+
else
|
325
|
+
print_colored $RED "❌ Invalid choice: '$choice'"
|
326
|
+
print_colored $YELLOW "💡 Please enter a number between 1 and ${#TUTORIALS[@]}, 'a' for all, 'c' for cleanup, or 'q' to quit"
|
327
|
+
fi
|
328
|
+
;;
|
329
|
+
esac
|
330
|
+
|
331
|
+
echo ""
|
332
|
+
done
|
333
|
+
}
|
334
|
+
|
335
|
+
# Run the main function
|
336
|
+
main "$@"
|
agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/Dockerfile
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# syntax=docker/dockerfile:1.3
|
2
|
+
FROM python:3.12-slim
|
3
|
+
|
4
|
+
COPY --from=ghcr.io/astral-sh/uv:0.6.4 /uv /uvx /bin/
|
5
|
+
|
6
|
+
# Install system dependencies
|
7
|
+
RUN apt-get update && apt-get install -y \
|
8
|
+
htop \
|
9
|
+
vim \
|
10
|
+
curl \
|
11
|
+
tar \
|
12
|
+
python3-dev \
|
13
|
+
postgresql-client \
|
14
|
+
build-essential \
|
15
|
+
libpq-dev \
|
16
|
+
gcc \
|
17
|
+
cmake \
|
18
|
+
netcat-openbsd \
|
19
|
+
&& apt-get clean \
|
20
|
+
&& rm -rf /var/lib/apt/lists/*
|
21
|
+
|
22
|
+
RUN uv pip install --system --upgrade pip setuptools wheel
|
23
|
+
|
24
|
+
ENV UV_HTTP_TIMEOUT=1000
|
25
|
+
|
26
|
+
# Copy just the pyproject.toml file to optimize caching
|
27
|
+
COPY pyproject.toml /app/pyproject.toml
|
28
|
+
WORKDIR /app/
|
29
|
+
# Install the required Python packages
|
30
|
+
RUN uv pip install --system -e .
|
31
|
+
|
32
|
+
# Copy the project code
|
33
|
+
COPY project /app/project
|
34
|
+
|
35
|
+
WORKDIR /app
|
36
|
+
|
37
|
+
# Set environment variables
|
38
|
+
ENV PYTHONPATH=/app
|
39
|
+
|
40
|
+
ARG AGENT_FILE
|
41
|
+
ARG PORT
|
42
|
+
|
43
|
+
# Run the agent using uvicorn
|
44
|
+
CMD uvicorn project.${AGENT_FILE%.*}:acp --host 0.0.0.0 --port ${PORT:-8000}
|
agentex_sdk-0.2.7/examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal/README.md
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
# Multi-Agent Content Assembly Line
|
2
|
+
|
3
|
+
A multi-agent system that creates content through a collaborative workflow. Four agents work together: a creator generates content, a critic reviews it against rules, and a formatter outputs the final result, all coordinated by an orchestrator.
|
4
|
+
|
5
|
+
## 🏗️ Architecture Overview
|
6
|
+
|
7
|
+
```
|
8
|
+
090_multi_agent_non_temporal/
|
9
|
+
├── project/ # All agent code
|
10
|
+
│ ├── creator.py # Content generation agent
|
11
|
+
│ ├── critic.py # Content review agent
|
12
|
+
│ ├── formatter.py # Content formatting agent
|
13
|
+
│ ├── orchestrator.py # Workflow coordination agent
|
14
|
+
│ ├── models.py # Pydantic models for type safety
|
15
|
+
│ └── state_machines/
|
16
|
+
│ └── content_workflow.py # State machine definitions
|
17
|
+
├── creator.yaml # Creator agent manifest
|
18
|
+
├── critic.yaml # Critic agent manifest
|
19
|
+
├── formatter.yaml # Formatter agent manifest
|
20
|
+
├── orchestrator.yaml # Orchestrator agent manifest
|
21
|
+
├── Dockerfile # Single shared Dockerfile
|
22
|
+
├── pyproject.toml # Dependencies and project configuration
|
23
|
+
├── start-agents.sh # Agent management script
|
24
|
+
└── README.md # This file
|
25
|
+
```
|
26
|
+
|
27
|
+
## 📁 File Structure
|
28
|
+
|
29
|
+
The system uses a shared build configuration with type-safe interfaces:
|
30
|
+
- **Single `Dockerfile`** with build arguments for different agents
|
31
|
+
- **Single `pyproject.toml`** for all dependencies
|
32
|
+
- **Agent code** in `project/` directory with clear separation of concerns
|
33
|
+
- **Individual manifest files** at root level for each agent deployment
|
34
|
+
- **Shared state machine definitions** for workflow coordination
|
35
|
+
- **Pydantic models** (`models.py`) for type safety and validation across all agents
|
36
|
+
|
37
|
+
### Key Files:
|
38
|
+
- `project/models.py` - Defines request/response models for type safety
|
39
|
+
- `project/orchestrator.py` - Workflow coordination and inter-agent communication
|
40
|
+
- `project/creator.py` - Content generation with revision capabilities
|
41
|
+
- `project/critic.py` - Content validation against rules
|
42
|
+
- `project/formatter.py` - Multi-format content transformation
|
43
|
+
- `project/state_machines/content_workflow.py` - State management for the workflow
|
44
|
+
|
45
|
+
## 🚀 Quick Start
|
46
|
+
|
47
|
+
### Prerequisites
|
48
|
+
- Python 3.12+
|
49
|
+
- uv package manager
|
50
|
+
- OpenAI API key (set `OPENAI_API_KEY` or create `.env` file)
|
51
|
+
|
52
|
+
### Running the System
|
53
|
+
|
54
|
+
1. **Start all agents**:
|
55
|
+
```bash
|
56
|
+
cd examples/tutorials/10_agentic/00_base/090_multi_agent_non_temporal
|
57
|
+
./start-agents.sh start
|
58
|
+
```
|
59
|
+
|
60
|
+
2. **Check agent status**:
|
61
|
+
```bash
|
62
|
+
./start-agents.sh status
|
63
|
+
```
|
64
|
+
|
65
|
+
3. **Send a test request**:
|
66
|
+
```bash
|
67
|
+
./start-agents.sh test
|
68
|
+
```
|
69
|
+
|
70
|
+
4. **Monitor logs**:
|
71
|
+
```bash
|
72
|
+
./start-agents.sh logs
|
73
|
+
```
|
74
|
+
|
75
|
+
5. **Stop all agents**:
|
76
|
+
```bash
|
77
|
+
./start-agents.sh stop
|
78
|
+
```
|
79
|
+
|
80
|
+
## 🤖 Agent Responsibilities
|
81
|
+
|
82
|
+
### **Creator Agent** (Port 8001)
|
83
|
+
- Generates original content based on user requests
|
84
|
+
- Revises content based on critic feedback
|
85
|
+
- Maintains conversation history and iteration tracking
|
86
|
+
|
87
|
+
### **Critic Agent** (Port 8002)
|
88
|
+
- Reviews content against specified rules
|
89
|
+
- Provides specific, actionable feedback
|
90
|
+
- Approves content when all rules are met
|
91
|
+
|
92
|
+
### **Formatter Agent** (Port 8003)
|
93
|
+
- Converts approved content to target formats (HTML, Markdown, JSON, etc.)
|
94
|
+
- Preserves meaning while applying format-specific conventions
|
95
|
+
- Supports multiple output formats
|
96
|
+
|
97
|
+
### **Orchestrator Agent** (Port 8000)
|
98
|
+
- Coordinates the entire workflow using state machines
|
99
|
+
- Manages inter-agent communication
|
100
|
+
- Tracks progress and handles errors/retries
|
101
|
+
|
102
|
+
## 📋 Example Request
|
103
|
+
|
104
|
+
Send a JSON request to the orchestrator:
|
105
|
+
|
106
|
+
```json
|
107
|
+
{
|
108
|
+
"request": "Write a welcome message for our AI assistant",
|
109
|
+
"rules": ["Under 50 words", "Friendly tone", "Include emoji"],
|
110
|
+
"target_format": "HTML"
|
111
|
+
}
|
112
|
+
```
|
113
|
+
|
114
|
+
The system will:
|
115
|
+
1. **Create** content using the Creator agent
|
116
|
+
2. **Review** against rules using the Critic agent
|
117
|
+
3. **Revise** if needed (up to 10 iterations)
|
118
|
+
4. **Format** final approved content using the Formatter agent
|
119
|
+
|
120
|
+
## 🔧 Development
|
121
|
+
|
122
|
+
### Type Safety with Pydantic
|
123
|
+
The tutorial demonstrates proper type safety using Pydantic models:
|
124
|
+
|
125
|
+
```python
|
126
|
+
# Define request structure
|
127
|
+
class CreatorRequest(BaseModel):
|
128
|
+
request: str = Field(..., description="The content creation request")
|
129
|
+
current_draft: Optional[str] = Field(default=None, description="Current draft for revision")
|
130
|
+
feedback: Optional[List[str]] = Field(default=None, description="Feedback from critic")
|
131
|
+
|
132
|
+
# Validate incoming requests
|
133
|
+
creator_request = CreatorRequest.model_validate(request_data)
|
134
|
+
```
|
135
|
+
|
136
|
+
Benefits:
|
137
|
+
- **Explicit failures** when required fields are missing
|
138
|
+
- **Self-documenting** APIs with field descriptions
|
139
|
+
- **IDE support** with auto-completion and type checking
|
140
|
+
- **Runtime validation** with clear error messages
|
141
|
+
|
142
|
+
### Adding New Agents
|
143
|
+
1. **Add models** to `project/models.py` for request/response types
|
144
|
+
2. **Create agent** in `project/new_agent.py` using the FastACP pattern
|
145
|
+
3. **Add manifest** as `new_agent.yaml` at root level with deployment configuration
|
146
|
+
4. **Update startup script** in `start-agents.sh` to include the new agent
|
147
|
+
|
148
|
+
### Modifying Agents
|
149
|
+
- **Agent code** is in `project/` directory
|
150
|
+
- **Shared models** are in `project/models.py` for consistency
|
151
|
+
- **Dependencies** go in `pyproject.toml`
|
152
|
+
- **Docker configuration** is shared across all agents
|
153
|
+
|
154
|
+
### Deployment
|
155
|
+
Each agent can be deployed independently using its manifest:
|
156
|
+
```bash
|
157
|
+
uv run agentex agents deploy --cluster your-cluster --manifest creator.yaml
|
158
|
+
```
|
159
|
+
|
160
|
+
## 🏗️ Technical Implementation
|
161
|
+
|
162
|
+
### Shared Dockerfile
|
163
|
+
The Dockerfile uses build arguments to run different agents:
|
164
|
+
```dockerfile
|
165
|
+
CMD uvicorn project.${AGENT_FILE%.*}:acp --host 0.0.0.0 --port ${PORT:-8000}
|
166
|
+
```
|
167
|
+
|
168
|
+
Manifest files specify which agent to run:
|
169
|
+
```yaml
|
170
|
+
build_args:
|
171
|
+
AGENT_FILE: creator.py
|
172
|
+
PORT: 8001
|
173
|
+
```
|
174
|
+
|
175
|
+
### State Machine Flow
|
176
|
+
The orchestrator coordinates the workflow through these states:
|
177
|
+
- `CREATING` → `WAITING_FOR_CREATOR` → `REVIEWING` → `WAITING_FOR_CRITIC` → `FORMATTING` → `COMPLETED`
|
178
|
+
|
179
|
+
### Inter-Agent Communication
|
180
|
+
Agents communicate using AgentEx events:
|
181
|
+
```python
|
182
|
+
await adk.acp.send_event(
|
183
|
+
agent_name="ab090-creator-agent",
|
184
|
+
task_id=task_id,
|
185
|
+
content=TextContent(author="agent", content=json.dumps(request_data))
|
186
|
+
)
|
187
|
+
```
|
188
|
+
|
189
|
+
## 📚 What You'll Learn
|
190
|
+
|
191
|
+
This tutorial demonstrates:
|
192
|
+
- **Multi-agent coordination** using state machines for complex workflows
|
193
|
+
- **Type-safe communication** with Pydantic models for all request/response data
|
194
|
+
- **Shared build configuration** for multiple agents in a single deployment
|
195
|
+
- **AgentEx CLI usage** for development and deployment
|
196
|
+
- **Inter-agent communication patterns** with proper error handling
|
197
|
+
- **Scalable agent architecture** with clear separation of concerns
|