autobots-devtools-shared-lib 0.10.0__tar.gz → 0.10.0b1__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 (100) hide show
  1. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/PKG-INFO +6 -4
  2. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/pyproject.toml +6 -4
  3. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/__init__.py +8 -0
  4. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/agents/agent_config_utils.py +30 -1
  5. autobots_devtools_shared_lib-0.10.0b1/src/autobots_devtools_shared_lib/dynagent/agents/base_deepagent.py +91 -0
  6. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/agents/invocation_utils.py +139 -0
  7. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/config/dynagent_settings.py +6 -0
  8. autobots_devtools_shared_lib-0.10.0b1/src/autobots_devtools_shared_lib/dynagent/models/deep_state.py +18 -0
  9. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/README.md +0 -0
  10. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/__init__.py +0 -0
  11. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/__init__.py +0 -0
  12. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/config/__init__.py +0 -0
  13. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/config/jenkins_config.py +0 -0
  14. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/config/jenkins_constants.py +0 -0
  15. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/config/jenkins_loader.py +0 -0
  16. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/observability/__init__.py +0 -0
  17. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/observability/logging_utils.py +0 -0
  18. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/observability/otel_fastapi.py +0 -0
  19. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/observability/trace_metadata.py +0 -0
  20. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/observability/trace_propagation.py +0 -0
  21. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/observability/tracing.py +0 -0
  22. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/__init__.py +0 -0
  23. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/fileserver/README.md +0 -0
  24. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/fileserver/__init__.py +0 -0
  25. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/fileserver/app.py +0 -0
  26. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/fileserver/config.py +0 -0
  27. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/fileserver/models.py +0 -0
  28. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/noderedmanagerserver/README.md +0 -0
  29. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/noderedmanagerserver/__init__.py +0 -0
  30. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/noderedmanagerserver/__main__.py +0 -0
  31. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/noderedmanagerserver/app.py +0 -0
  32. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/noderedmanagerserver/config.py +0 -0
  33. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/noderedmanagerserver/exceptions.py +0 -0
  34. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/servers/noderedmanagerserver/models.py +0 -0
  35. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/services/__init__.py +0 -0
  36. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/services/context/README.md +0 -0
  37. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/services/context/__init__.py +0 -0
  38. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/services/context/cache_backed.py +0 -0
  39. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/services/context/db_repository.py +0 -0
  40. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/services/context/factory.py +0 -0
  41. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/services/context/in_memory.py +0 -0
  42. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/services/context/redis_store.py +0 -0
  43. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/services/context/store.py +0 -0
  44. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/tools/__init__.py +0 -0
  45. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/tools/context_tools.py +0 -0
  46. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/tools/format_tools.py +0 -0
  47. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/tools/fserver_client_tools.py +0 -0
  48. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/tools/jenkins_builtin_tools.py +0 -0
  49. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/tools/jenkins_pipeline_tools.py +0 -0
  50. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/tools/noderedmanager_client_tools.py +0 -0
  51. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/utils/__init__.py +0 -0
  52. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/utils/context_utils.py +0 -0
  53. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/utils/format_utils.py +0 -0
  54. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/utils/fserver_client_utils.py +0 -0
  55. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/utils/jenkins_builtin_utils.py +0 -0
  56. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/utils/jenkins_http_utils.py +0 -0
  57. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/utils/jenkins_pipeline_utils.py +0 -0
  58. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/common/utils/noderedmanager_client_utils.py +0 -0
  59. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/agents/__init__.py +0 -0
  60. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/agents/agent_meta.py +0 -0
  61. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/agents/base_agent.py +0 -0
  62. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/agents/batch.py +0 -0
  63. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/agents/middleware.py +0 -0
  64. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/config/__init__.py +0 -0
  65. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/llm/__init__.py +0 -0
  66. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/llm/llm.py +0 -0
  67. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/models/__init__.py +0 -0
  68. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/models/state.py +0 -0
  69. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/services/__init__.py +0 -0
  70. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/services/structured_converter.py +0 -0
  71. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/tools/__init__.py +0 -0
  72. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/tools/state_tools.py +0 -0
  73. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/tools/tool_registry.py +0 -0
  74. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/ui/__init__.py +0 -0
  75. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/ui/default_ui.py +0 -0
  76. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/ui/ui_utils.py +0 -0
  77. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/utils/__init__.py +0 -0
  78. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/dynagent/utils/schema_directive_resolver.py +0 -0
  79. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/__init__.py +0 -0
  80. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/assertions/__init__.py +0 -0
  81. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/assertions/deterministic.py +0 -0
  82. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/assertions/golden.py +0 -0
  83. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/assertions/llm_judge.py +0 -0
  84. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/assertions/registry.py +0 -0
  85. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/assertions/written_file.py +0 -0
  86. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/core/__init__.py +0 -0
  87. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/core/cost_tracker.py +0 -0
  88. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/core/loader.py +0 -0
  89. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/core/runner.py +0 -0
  90. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/core/workspace.py +0 -0
  91. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/models/__init__.py +0 -0
  92. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/models/eval_case.py +0 -0
  93. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/models/result.py +0 -0
  94. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/pytest_plugin/__init__.py +0 -0
  95. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/pytest_plugin/fixtures.py +0 -0
  96. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/pytest_plugin/plugin.py +0 -0
  97. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/pytest_plugin/reporting.py +0 -0
  98. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/scoring/__init__.py +0 -0
  99. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/eval/scoring/langfuse_scorer.py +0 -0
  100. {autobots_devtools_shared_lib-0.10.0 → autobots_devtools_shared_lib-0.10.0b1}/src/autobots_devtools_shared_lib/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autobots-devtools-shared-lib
3
- Version: 0.10.0
3
+ Version: 0.10.0b1
4
4
  Summary: Shared library functions to be used for all autobots projects
5
5
  License: MIT
6
6
  Author: Pralhad
@@ -12,11 +12,13 @@ Classifier: Programming Language :: Python :: 3.12
12
12
  Classifier: Programming Language :: Python :: 3.13
13
13
  Classifier: Programming Language :: Python :: 3.14
14
14
  Requires-Dist: chainlit (>=2.9.6)
15
+ Requires-Dist: deepagents (==0.6.12)
15
16
  Requires-Dist: fastapi (>=0.115.0)
16
17
  Requires-Dist: jsonschema (>=4.26.0)
17
- Requires-Dist: langchain (>=1.0.0)
18
- Requires-Dist: langchain-anthropic (>=1.4.0)
19
- Requires-Dist: langchain-google-genai (>=4.2.0)
18
+ Requires-Dist: langchain (>=1.3.11,<2.0.0)
19
+ Requires-Dist: langchain-anthropic (>=1.4.7,<2.0.0)
20
+ Requires-Dist: langchain-core (>=1.4.8,<2.0.0)
21
+ Requires-Dist: langchain-google-genai (>=4.2.5,<5.0.0)
20
22
  Requires-Dist: langfuse (>=3.12.1)
21
23
  Requires-Dist: openevals (>=0.1.0)
22
24
  Requires-Dist: opentelemetry-api (>=1.30.0,<2.0.0)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "autobots-devtools-shared-lib"
3
- version = "0.10.0"
3
+ version = "0.10.0b1"
4
4
  description = "Shared library functions to be used for all autobots projects"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -12,9 +12,11 @@ dependencies = [
12
12
  "chainlit>=2.9.6",
13
13
  "referencing>=0.37.0",
14
14
  "jsonschema>=4.26.0",
15
- "langchain>=1.0.0",
16
- "langchain-anthropic>=1.4.0",
17
- "langchain-google-genai>=4.2.0",
15
+ "langchain>=1.3.11,<2.0.0",
16
+ "langchain-core>=1.4.8,<2.0.0",
17
+ "langchain-anthropic>=1.4.7,<2.0.0",
18
+ "langchain-google-genai>=4.2.5,<5.0.0",
19
+ "deepagents==0.6.12",
18
20
  "langfuse>=3.12.1",
19
21
  "pydantic-settings>=2.10.1",
20
22
  "python-dotenv>=1.1.1",
@@ -10,6 +10,7 @@ from autobots_devtools_shared_lib.common.utils.format_utils import output_format
10
10
  from autobots_devtools_shared_lib.dynagent.agents.agent_config_utils import get_batch_enabled_agents
11
11
  from autobots_devtools_shared_lib.dynagent.agents.agent_meta import AgentMeta
12
12
  from autobots_devtools_shared_lib.dynagent.agents.base_agent import create_base_agent
13
+ from autobots_devtools_shared_lib.dynagent.agents.base_deepagent import create_base_deepagent
13
14
  from autobots_devtools_shared_lib.dynagent.agents.batch import (
14
15
  BatchResult,
15
16
  RecordResult,
@@ -17,7 +18,9 @@ from autobots_devtools_shared_lib.dynagent.agents.batch import (
17
18
  )
18
19
  from autobots_devtools_shared_lib.dynagent.agents.invocation_utils import (
19
20
  ainvoke_agent,
21
+ ainvoke_deepagent,
20
22
  invoke_agent,
23
+ invoke_deepagent,
21
24
  )
22
25
  from autobots_devtools_shared_lib.dynagent.config.dynagent_settings import (
23
26
  DynagentSettings,
@@ -26,22 +29,27 @@ from autobots_devtools_shared_lib.dynagent.config.dynagent_settings import (
26
29
  set_dynagent_settings,
27
30
  )
28
31
  from autobots_devtools_shared_lib.dynagent.llm.llm import lm
32
+ from autobots_devtools_shared_lib.dynagent.models.deep_state import DynaDeepAgent
29
33
  from autobots_devtools_shared_lib.dynagent.models.state import Dynagent
30
34
  from autobots_devtools_shared_lib.dynagent.tools.tool_registry import register_usecase_tools
31
35
 
32
36
  __all__ = [
33
37
  "AgentMeta",
34
38
  "BatchResult",
39
+ "DynaDeepAgent",
35
40
  "Dynagent",
36
41
  "DynagentSettings",
37
42
  "LLMProvider",
38
43
  "RecordResult",
39
44
  "ainvoke_agent",
45
+ "ainvoke_deepagent",
40
46
  "batch_invoker",
41
47
  "create_base_agent",
48
+ "create_base_deepagent",
42
49
  "get_batch_enabled_agents",
43
50
  "get_dynagent_settings",
44
51
  "invoke_agent",
52
+ "invoke_deepagent",
45
53
  "lm",
46
54
  "make_context_tools",
47
55
  "output_format_converter",
@@ -2,6 +2,8 @@
2
2
  # ABOUTME: Reads agents.yaml and provides typed accessors for prompts, tools, schemas.
3
3
 
4
4
  import json
5
+ import os
6
+ import re
5
7
  from dataclasses import dataclass, field
6
8
  from pathlib import Path
7
9
  from typing import Any
@@ -27,11 +29,37 @@ __all__ = [
27
29
  "get_resolved_input_schema_map",
28
30
  "get_resolved_output_schema_map",
29
31
  "get_tool_map",
32
+ "interpolate_env",
30
33
  "load_agents_config",
31
34
  "load_prompt",
32
35
  "load_schema",
33
36
  ]
34
37
 
38
+ _ENV_VAR_PATTERN = re.compile(r"\$\{(\w+)\}")
39
+
40
+
41
+ def interpolate_env(value: Any) -> Any:
42
+ """Recursively expand ${VAR} from os.environ in config values.
43
+
44
+ Fails fast on undefined variables so misconfigured domains surface at
45
+ startup instead of at first tool call.
46
+ """
47
+ if isinstance(value, str):
48
+
49
+ def _sub(match: re.Match[str]) -> str:
50
+ var = match.group(1)
51
+ if var not in os.environ:
52
+ msg = f"Config references undefined environment variable '${{{var}}}'"
53
+ raise ValueError(msg)
54
+ return os.environ[var]
55
+
56
+ return _ENV_VAR_PATTERN.sub(_sub, value)
57
+ if isinstance(value, dict):
58
+ return {key: interpolate_env(item) for key, item in value.items()}
59
+ if isinstance(value, list):
60
+ return [interpolate_env(item) for item in value]
61
+ return value
62
+
35
63
 
36
64
  @dataclass
37
65
  class AgentConfig:
@@ -128,10 +156,11 @@ def load_agents_config() -> dict[str, AgentConfig]:
128
156
  if _GLOBAL_AGENT_CONFIG:
129
157
  return _GLOBAL_AGENT_CONFIG
130
158
  config_dir = get_config_dir()
131
- config_path = Path(config_dir) / "agents.yaml"
159
+ config_path = Path(config_dir) / get_dynagent_settings().agents_config_filename
132
160
 
133
161
  with open(config_path) as f: # noqa: PTH123
134
162
  data = yaml.safe_load(f)
163
+ data = interpolate_env(data or {})
135
164
 
136
165
  agents = {}
137
166
  for agent_id, agent_data in data.get("agents", {}).items():
@@ -0,0 +1,91 @@
1
+ # ABOUTME: Factory for the dynagent deep-agent engine.
2
+ # ABOUTME: Wraps deepagents' create_deep_agent, mirroring create_base_agent's role.
3
+
4
+ import json
5
+ from collections import defaultdict
6
+ from collections.abc import Sequence
7
+ from typing import Any
8
+
9
+ from deepagents import DeepAgentState, SubAgent, create_deep_agent
10
+ from langgraph.checkpoint.memory import InMemorySaver
11
+ from langgraph.graph.state import CompiledStateGraph
12
+
13
+ from autobots_devtools_shared_lib.common.observability import get_agent_logger
14
+ from autobots_devtools_shared_lib.dynagent.agents.agent_config_utils import get_default_agent
15
+ from autobots_devtools_shared_lib.dynagent.agents.agent_meta import AgentMeta
16
+ from autobots_devtools_shared_lib.dynagent.llm.llm import lm
17
+ from autobots_devtools_shared_lib.dynagent.models.deep_state import DynaDeepAgent
18
+
19
+ logger = get_agent_logger(__name__)
20
+
21
+
22
+ def _resolve_system_prompt(
23
+ meta: AgentMeta, agent_name: str, prompt_values: dict[str, Any] | None
24
+ ) -> str:
25
+ """Build the static system prompt: raw prompt + one-time format_map substitution.
26
+
27
+ Retains dynagent's placeholder templating (e.g. {language} -> java) but resolves
28
+ it once at build time, since the deep engine uses a static system_prompt.
29
+ """
30
+ raw_prompt = meta.prompt_map.get(agent_name, "")
31
+ input_schemas = meta.input_schema_map.get(agent_name, {})
32
+ input_directives = {
33
+ schema_key: json.dumps(schema, indent=2, sort_keys=True)
34
+ for schema_key, schema in input_schemas.items()
35
+ }
36
+ values = {
37
+ "input_schemas": input_directives,
38
+ "output_schema": meta.output_schema_map.get(agent_name, {}) or {},
39
+ **(prompt_values or {}),
40
+ }
41
+ return raw_prompt.format_map(defaultdict(str, values))
42
+
43
+
44
+ def create_base_deepagent(
45
+ checkpointer: Any = None,
46
+ initial_agent_name: str | None = None,
47
+ state_schema: type[DeepAgentState] = DynaDeepAgent,
48
+ prompt_values: dict[str, Any] | None = None,
49
+ subagents: Sequence[SubAgent] | None = None,
50
+ ) -> CompiledStateGraph:
51
+ """Create the dynagent deep-agent (deepagents-backed) engine.
52
+
53
+ Mirrors create_base_agent but delegates the agent loop to deepagents'
54
+ create_deep_agent, which supplies planning, virtual filesystem, sub-agents,
55
+ summarization, and prompt caching. The deep engine deliberately does NOT
56
+ attach inject_agent or our SummarizationMiddleware.
57
+
58
+ Args:
59
+ checkpointer: LangGraph checkpointer. Defaults to InMemorySaver.
60
+ initial_agent_name: Roster agent to run as the main agent. Defaults to
61
+ the config's default agent.
62
+ state_schema: Deep-agent state schema. Defaults to DynaDeepAgent.
63
+ prompt_values: Placeholder substitution values for the system prompt.
64
+ subagents: Optional deepagents subagents (phase-2 roster mapping hook).
65
+
66
+ Returns:
67
+ A compiled deep-agent graph.
68
+ """
69
+ if checkpointer is None:
70
+ checkpointer = InMemorySaver()
71
+
72
+ meta = AgentMeta.instance()
73
+
74
+ if initial_agent_name is None:
75
+ initial_agent_name = get_default_agent()
76
+ agent_name = initial_agent_name or "assistant"
77
+ logger.info(f"create_base_deepagent: main agent = {agent_name}")
78
+
79
+ system_prompt = _resolve_system_prompt(meta, agent_name, prompt_values)
80
+ tools = meta.tool_map.get(agent_name, [])
81
+ model = lm()
82
+
83
+ return create_deep_agent(
84
+ model=model,
85
+ tools=tools,
86
+ system_prompt=system_prompt,
87
+ state_schema=state_schema,
88
+ checkpointer=checkpointer,
89
+ name=agent_name,
90
+ subagents=list(subagents) if subagents else None,
91
+ )
@@ -16,6 +16,7 @@ from autobots_devtools_shared_lib.common.observability.tracing import (
16
16
  flush_tracing,
17
17
  get_langfuse_handler,
18
18
  )
19
+ from autobots_devtools_shared_lib.dynagent.models.deep_state import DynaDeepAgent
19
20
  from autobots_devtools_shared_lib.dynagent.models.state import Dynagent
20
21
 
21
22
  logger = get_logger(__name__)
@@ -205,6 +206,75 @@ def invoke_agent(
205
206
  flush_tracing()
206
207
 
207
208
 
209
+ def invoke_deepagent(
210
+ agent_name: str,
211
+ input_state: dict[str, Any] | None = None,
212
+ checkpointer: Any | None = None,
213
+ config: RunnableConfig | None = None,
214
+ enable_tracing: bool = True,
215
+ trace_metadata: TraceMetadata | None = None,
216
+ state_schema: type[AgentState[ResponseT]] = DynaDeepAgent,
217
+ ) -> dict[str, Any]:
218
+ """Synchronously invoke a deep-agent (deepagents-backed) with observability.
219
+
220
+ Mirrors invoke_agent but builds the graph via create_base_deepagent.
221
+ """
222
+ from autobots_devtools_shared_lib.dynagent.agents.agent_config_utils import get_agent_list
223
+
224
+ valid_agents = get_agent_list()
225
+ if agent_name not in valid_agents:
226
+ raise ValueError(f"Unknown agent: {agent_name}. Valid agents: {', '.join(valid_agents)}")
227
+
228
+ if input_state is None:
229
+ input_state = {}
230
+ if trace_metadata is None:
231
+ trace_metadata = TraceMetadata.create(app_name=f"{agent_name}-invoke-deep")
232
+ if "session_id" in input_state:
233
+ trace_metadata.session_id = input_state["session_id"]
234
+
235
+ if "session_id" not in input_state:
236
+ input_state["session_id"] = trace_metadata.session_id
237
+ if "agent_name" not in input_state:
238
+ input_state["agent_name"] = agent_name
239
+
240
+ try:
241
+ with (
242
+ propagate_attributes(
243
+ user_id=trace_metadata.user_id,
244
+ session_id=trace_metadata.session_id,
245
+ tags=trace_metadata.tags,
246
+ ),
247
+ otel_span(f"{trace_metadata.app_name}-{agent_name}") as span,
248
+ ):
249
+ if enable_tracing:
250
+ config = inject_langfuse_handler_into_config(config, _linked_langfuse_handler(span))
251
+ if span is not None:
252
+ span.set_attribute("langfuse.session.id", str(trace_metadata.session_id))
253
+
254
+ from langgraph.checkpoint.memory import InMemorySaver
255
+
256
+ from autobots_devtools_shared_lib.dynagent.agents.base_deepagent import (
257
+ create_base_deepagent,
258
+ )
259
+
260
+ if checkpointer is None:
261
+ checkpointer = InMemorySaver()
262
+
263
+ agent = create_base_deepagent(
264
+ checkpointer=checkpointer,
265
+ state_schema=state_schema,
266
+ initial_agent_name=agent_name,
267
+ )
268
+
269
+ logger.info(
270
+ f"Invoking deepagent '{agent_name}' (sync) session_id={trace_metadata.session_id}"
271
+ )
272
+ return agent.invoke(input_state, config=config)
273
+ finally:
274
+ if enable_tracing:
275
+ flush_tracing()
276
+
277
+
208
278
  async def ainvoke_agent(
209
279
  agent_name: str,
210
280
  input_state: dict[str, Any] | None = None,
@@ -339,3 +409,72 @@ async def ainvoke_agent(
339
409
  finally:
340
410
  if enable_tracing:
341
411
  flush_tracing()
412
+
413
+
414
+ async def ainvoke_deepagent(
415
+ agent_name: str,
416
+ input_state: dict[str, Any] | None = None,
417
+ checkpointer: Any | None = None,
418
+ config: RunnableConfig | None = None,
419
+ enable_tracing: bool = True,
420
+ trace_metadata: TraceMetadata | None = None,
421
+ state_schema: type[AgentState[ResponseT]] = DynaDeepAgent,
422
+ ) -> dict[str, Any]:
423
+ """Asynchronously invoke a deep-agent (deepagents-backed) with observability.
424
+
425
+ Mirrors ainvoke_agent but builds the graph via create_base_deepagent.
426
+ """
427
+ from autobots_devtools_shared_lib.dynagent.agents.agent_config_utils import get_agent_list
428
+
429
+ valid_agents = get_agent_list()
430
+ if agent_name not in valid_agents:
431
+ raise ValueError(f"Unknown agent: {agent_name}. Valid agents: {', '.join(valid_agents)}")
432
+
433
+ if input_state is None:
434
+ input_state = {}
435
+ if trace_metadata is None:
436
+ trace_metadata = TraceMetadata.create(app_name=f"{agent_name}-ainvoke-deep")
437
+ if "session_id" in input_state:
438
+ trace_metadata.session_id = input_state["session_id"]
439
+
440
+ if "session_id" not in input_state:
441
+ input_state["session_id"] = trace_metadata.session_id
442
+ if "agent_name" not in input_state:
443
+ input_state["agent_name"] = agent_name
444
+
445
+ try:
446
+ with (
447
+ propagate_attributes(
448
+ user_id=trace_metadata.user_id,
449
+ session_id=trace_metadata.session_id,
450
+ tags=trace_metadata.tags,
451
+ ),
452
+ otel_span(f"{trace_metadata.app_name}-{agent_name}") as span,
453
+ ):
454
+ if enable_tracing:
455
+ config = inject_langfuse_handler_into_config(config, _linked_langfuse_handler(span))
456
+ if span is not None:
457
+ span.set_attribute("langfuse.session.id", str(trace_metadata.session_id))
458
+
459
+ from langgraph.checkpoint.memory import InMemorySaver
460
+
461
+ from autobots_devtools_shared_lib.dynagent.agents.base_deepagent import (
462
+ create_base_deepagent,
463
+ )
464
+
465
+ if checkpointer is None:
466
+ checkpointer = InMemorySaver()
467
+
468
+ agent = create_base_deepagent(
469
+ checkpointer=checkpointer,
470
+ state_schema=state_schema,
471
+ initial_agent_name=agent_name,
472
+ )
473
+
474
+ logger.info(
475
+ f"Invoking deepagent '{agent_name}' (async) session_id={trace_metadata.session_id}"
476
+ )
477
+ return await agent.ainvoke(input_state, config=config)
478
+ finally:
479
+ if enable_tracing:
480
+ flush_tracing()
@@ -47,6 +47,12 @@ class DynagentSettings(BaseSettings):
47
47
  default=Path("configs"),
48
48
  description="Base directory for agent configuration files",
49
49
  )
50
+ # Filename of the agent roster config within the config dir (env: AGENTS_CONFIG_FILENAME).
51
+ # Deep-agent domains set this to "deep-agents.yaml".
52
+ agents_config_filename: str = Field(
53
+ default="agents.yaml",
54
+ description="Agent roster config filename within the config dir",
55
+ )
50
56
 
51
57
  # Langfuse observability settings
52
58
  langfuse_public_key: str = Field(default="", description="Langfuse public key")
@@ -0,0 +1,18 @@
1
+ # ABOUTME: State schema for the dynagent deep-agent engine.
2
+ # ABOUTME: Extends deepagents' DeepAgentState with routing/identity keys.
3
+
4
+ from typing import NotRequired
5
+
6
+ from deepagents import DeepAgentState
7
+
8
+
9
+ class DynaDeepAgent(DeepAgentState):
10
+ """Deep-agent state carrying routing keys and optional user identity.
11
+
12
+ Mirrors Dynagent's identity keys, but on the deepagents base so it keeps
13
+ deepagents' messages delta reducer and todo/file state channels.
14
+ """
15
+
16
+ agent_name: NotRequired[str]
17
+ session_id: NotRequired[str]
18
+ user_name: NotRequired[str]