agent-framework-core 1.23.0__tar.gz → 1.25.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/PKG-INFO +68 -35
  2. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/README.md +39 -5
  3. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/__init__.py +10 -1
  4. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/__init__.pyi +10 -1
  5. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_agent_hooks.py +273 -19
  6. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_agents.py +49 -7
  7. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_clients.py +88 -3
  8. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_compaction.py +557 -3
  9. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_evaluation.py +58 -4
  10. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_feature_stage.py +1 -0
  11. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_background_agents.py +156 -37
  12. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_file_access.py +234 -23
  13. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_loop.py +5 -2
  14. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_memory.py +127 -32
  15. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_todo.py +2 -2
  16. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_tool_approval.py +13 -0
  17. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_in_memory.py +278 -5
  18. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_mcp.py +823 -236
  19. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_middleware.py +49 -12
  20. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_sessions.py +28 -4
  21. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_settings.py +2 -4
  22. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_skills.py +42 -6
  23. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_tools.py +123 -24
  24. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_types.py +182 -68
  25. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_vectors.py +2 -1
  26. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_agent.py +129 -20
  27. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_agent_executor.py +8 -2
  28. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_checkpoint.py +55 -16
  29. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_checkpoint_encoding.py +98 -7
  30. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_edge.py +32 -12
  31. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_edge_runner.py +10 -5
  32. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_executor.py +3 -2
  33. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_function_executor.py +1 -7
  34. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_functional.py +115 -33
  35. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_model_utils.py +1 -7
  36. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_request_info_mixin.py +1 -7
  37. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_typing_utils.py +17 -1
  38. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_viz.py +9 -9
  39. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_workflow.py +2 -1
  40. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_workflow_builder.py +19 -17
  41. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_workflow_context.py +2 -2
  42. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/observability.py +32 -11
  43. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/security.py +538 -163
  44. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/pyproject.toml +37 -31
  45. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/LICENSE +0 -0
  46. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_docstrings.py +0 -0
  47. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_filesystem.py +0 -0
  48. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/__init__.py +0 -0
  49. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_agent.py +0 -0
  50. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_agent.pyi +0 -0
  51. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_file_memory.py +0 -0
  52. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_harness/_mode.py +0 -0
  53. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_serialization.py +0 -0
  54. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_telemetry.py +0 -0
  55. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_vector_filters.py +0 -0
  56. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/__init__.py +0 -0
  57. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_agent_utils.py +0 -0
  58. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_const.py +0 -0
  59. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_conversation_history.py +0 -0
  60. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_events.py +0 -0
  61. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_message_utils.py +0 -0
  62. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_runner.py +0 -0
  63. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_runner_context.py +0 -0
  64. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_state.py +0 -0
  65. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_validation.py +0 -0
  66. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/_workflows/_workflow_executor.py +0 -0
  67. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/a2a/__init__.py +0 -0
  68. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/a2a/__init__.pyi +0 -0
  69. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/ag_ui/__init__.py +0 -0
  70. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/ag_ui/__init__.pyi +0 -0
  71. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/amazon/__init__.py +0 -0
  72. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/amazon/__init__.pyi +0 -0
  73. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/anthropic/__init__.py +0 -0
  74. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/anthropic/__init__.pyi +0 -0
  75. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/azure/__init__.py +0 -0
  76. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/azure/__init__.pyi +0 -0
  77. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/chatkit/__init__.py +0 -0
  78. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/chatkit/__init__.pyi +0 -0
  79. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/declarative/__init__.py +0 -0
  80. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/declarative/__init__.pyi +0 -0
  81. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/devui/__init__.py +0 -0
  82. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/devui/__init__.pyi +0 -0
  83. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/exceptions.py +0 -0
  84. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/foundry/__init__.py +0 -0
  85. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/foundry/__init__.pyi +0 -0
  86. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/gemini/__init__.py +0 -0
  87. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/gemini/__init__.pyi +0 -0
  88. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/github/__init__.py +0 -0
  89. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/github/__init__.pyi +0 -0
  90. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/google/__init__.py +0 -0
  91. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/google/__init__.pyi +0 -0
  92. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/hyperlight/__init__.py +0 -0
  93. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/lab/__init__.py +0 -0
  94. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/mem0/__init__.py +0 -0
  95. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/mem0/__init__.pyi +0 -0
  96. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/microsoft/__init__.py +0 -0
  97. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/microsoft/__init__.pyi +0 -0
  98. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/mistral/__init__.py +0 -0
  99. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/mistral/__init__.pyi +0 -0
  100. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/monty/__init__.py +0 -0
  101. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/monty/__init__.pyi +0 -0
  102. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/ollama/__init__.py +0 -0
  103. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/ollama/__init__.pyi +0 -0
  104. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/openai/__init__.py +0 -0
  105. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/openai/__init__.pyi +0 -0
  106. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/orchestrations/__init__.py +0 -0
  107. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/orchestrations/__init__.pyi +0 -0
  108. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/py.typed +0 -0
  109. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/redis/__init__.py +0 -0
  110. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/redis/__init__.pyi +0 -0
  111. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/tools/__init__.py +0 -0
  112. {agent_framework_core-1.23.0 → agent_framework_core-1.25.0}/agent_framework/tools/__init__.pyi +0 -0
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agent-framework-core
3
- Version: 1.23.0
3
+ Version: 1.25.0
4
4
  Summary: Microsoft Agent Framework for building AI Agents with Python. This is the core package that has all the core abstractions and implementations.
5
5
  Author-email: Microsoft <af-support@microsoft.com>
6
- Requires-Python: >=3.10
6
+ Requires-Python: >=3.11
7
7
  Description-Content-Type: text/markdown
8
8
  Classifier: License :: OSI Approved :: MIT License
9
9
  Classifier: Development Status :: 5 - Production/Stable
10
10
  Classifier: Intended Audience :: Developers
11
11
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.10
13
12
  Classifier: Programming Language :: Python :: 3.11
14
13
  Classifier: Programming Language :: Python :: 3.12
15
14
  Classifier: Programming Language :: Python :: 3.13
@@ -26,35 +25,35 @@ Requires-Dist: pyyaml>=6.0,<7.0
26
25
  Requires-Dist: regex>=2024.11.6
27
26
  Requires-Dist: mcp>=2.2.0,<3 ; extra == "all"
28
27
  Requires-Dist: tenacity>=9.1.4,<9.2.0 ; extra == "all"
29
- Requires-Dist: agent-framework-a2a>=1.0.0b261022,<2 ; extra == "all"
30
- Requires-Dist: agent-framework-ag-ui>=1.7.0,<2 ; extra == "all"
31
- Requires-Dist: agent-framework-anthropic>=1.0.0b261022,<2 ; extra == "all"
32
- Requires-Dist: agent-framework-azure-ai-search>=1.0.0b261015,<2 ; extra == "all"
33
- Requires-Dist: agent-framework-azure-contentunderstanding>=1.0.0b261015,<2 ; extra == "all"
34
- Requires-Dist: agent-framework-azure-cosmos>=1.0.0b261015,<2 ; extra == "all"
28
+ Requires-Dist: agent-framework-a2a>=1.0.0b261106,<2 ; extra == "all"
29
+ Requires-Dist: agent-framework-ag-ui>=1.8.0,<2 ; extra == "all"
30
+ Requires-Dist: agent-framework-anthropic>=1.0.0b261106,<2 ; extra == "all"
31
+ Requires-Dist: agent-framework-azure-ai-search>=1.0.0b261106,<2 ; extra == "all"
32
+ Requires-Dist: agent-framework-azure-contentunderstanding>=1.0.0b261106,<2 ; extra == "all"
33
+ Requires-Dist: agent-framework-azure-cosmos>=1.0.0b261106,<2 ; extra == "all"
35
34
  Requires-Dist: agent-framework-azurefunctions>=1.0.0b260922,<2 ; extra == "all"
36
- Requires-Dist: agent-framework-bedrock>=1.0.0b261022,<2 ; extra == "all"
37
- Requires-Dist: agent-framework-chatkit>=1.0.0b261015,<2 ; extra == "all"
38
- Requires-Dist: agent-framework-claude>=1.0.0b261015,<2 ; extra == "all"
39
- Requires-Dist: agent-framework-copilotstudio>=1.0.0b261015,<2 ; extra == "all"
40
- Requires-Dist: agent-framework-declarative>=1.4.0,<2 ; extra == "all"
41
- Requires-Dist: agent-framework-devui>=1.0.0b261022,<2 ; extra == "all"
35
+ Requires-Dist: agent-framework-bedrock>=1.0.0b261106,<2 ; extra == "all"
36
+ Requires-Dist: agent-framework-chatkit>=1.0.0b261106,<2 ; extra == "all"
37
+ Requires-Dist: agent-framework-claude>=1.0.0b261106,<2 ; extra == "all"
38
+ Requires-Dist: agent-framework-copilotstudio>=1.0.0b261106,<2 ; extra == "all"
39
+ Requires-Dist: agent-framework-declarative>=1.5.0,<2 ; extra == "all"
40
+ Requires-Dist: agent-framework-devui>=1.0.0b261106,<2 ; extra == "all"
42
41
  Requires-Dist: agent-framework-durabletask>=1.0.0b260922,<2 ; extra == "all"
43
- Requires-Dist: agent-framework-foundry>=1.15.0,<2 ; extra == "all"
44
- Requires-Dist: agent-framework-foundry-hosting>=1.0.0b261022,<2 ; extra == "all"
45
- Requires-Dist: agent-framework-foundry-local>=1.0.0b261015,<2 ; extra == "all"
46
- Requires-Dist: agent-framework-gemini>=1.0.0b261022,<2 ; extra == "all"
47
- Requires-Dist: agent-framework-github-copilot>=2.1.0,<3 ; extra == "all" and ( python_version >= '3.11')
48
- Requires-Dist: agent-framework-hyperlight>=1.0.0b261022,<2 ; extra == "all" and ( (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64'))
49
- Requires-Dist: agent-framework-mem0>=1.0.0b261015,<2 ; extra == "all"
50
- Requires-Dist: agent-framework-mistral>=1.0.0b261015,<2 ; extra == "all"
51
- Requires-Dist: agent-framework-monty>=1.0.0b261015,<2 ; extra == "all"
52
- Requires-Dist: agent-framework-ollama>=1.0.0b261022,<2 ; extra == "all"
53
- Requires-Dist: agent-framework-openai>=1.17.0,<2 ; extra == "all"
54
- Requires-Dist: agent-framework-orchestrations>=1.4.0,<2 ; extra == "all"
55
- Requires-Dist: agent-framework-purview>=1.0.0b261015,<2 ; extra == "all"
56
- Requires-Dist: agent-framework-redis>=1.0.0b261022,<2 ; extra == "all" and ( python_version < '3.15')
57
- Requires-Dist: agent-framework-tools>=1.0.0b261022,<2 ; extra == "all"
42
+ Requires-Dist: agent-framework-foundry>=1.16.1,<2 ; extra == "all"
43
+ Requires-Dist: agent-framework-foundry-hosting>=1.0.0b261106,<2 ; extra == "all"
44
+ Requires-Dist: agent-framework-foundry-local>=1.0.0b261106,<2 ; extra == "all" and ( python_version >= '3.11' and python_version < '3.15' and ((sys_platform == 'darwin' and platform_machine == 'arm64') or (sys_platform == 'linux' and (platform_machine == 'x86_64' or platform_machine == 'aarch64')) or (sys_platform == 'win32' and (platform_machine == 'AMD64' or platform_machine == 'ARM64' or platform_machine == 'x86_64' or platform_machine == 'aarch64'))))
45
+ Requires-Dist: agent-framework-gemini>=1.0.0b261106,<2 ; extra == "all"
46
+ Requires-Dist: agent-framework-github-copilot>=2.1.2,<3 ; extra == "all"
47
+ Requires-Dist: agent-framework-hyperlight>=1.0.0b261106,<2 ; extra == "all" and ( (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64'))
48
+ Requires-Dist: agent-framework-mem0>=1.0.0b261106,<2 ; extra == "all"
49
+ Requires-Dist: agent-framework-mistral>=1.0.0b261106,<2 ; extra == "all"
50
+ Requires-Dist: agent-framework-monty>=1.0.0b261106,<2 ; extra == "all"
51
+ Requires-Dist: agent-framework-ollama>=1.0.0b261106,<2 ; extra == "all"
52
+ Requires-Dist: agent-framework-openai>=1.18.1,<2 ; extra == "all"
53
+ Requires-Dist: agent-framework-orchestrations>=1.4.2,<2 ; extra == "all"
54
+ Requires-Dist: agent-framework-purview>=1.0.0b261106,<2 ; extra == "all"
55
+ Requires-Dist: agent-framework-redis>=1.0.0b261106,<2 ; extra == "all"
56
+ Requires-Dist: agent-framework-tools>=1.0.0b261106,<2 ; extra == "all"
58
57
  Project-URL: homepage, https://aka.ms/agent-framework
59
58
  Project-URL: issues, https://github.com/microsoft/agent-framework/issues
60
59
  Project-URL: release_notes, https://github.com/microsoft/agent-framework/releases?q=tag%3Apython-1&expanded=true
@@ -86,13 +85,11 @@ pip install agent-framework-openai
86
85
 
87
86
  Supported Platforms:
88
87
 
89
- - Python: 3.10–3.15
88
+ - Python: 3.11–3.15
90
89
  - OS: Windows, macOS, Linux
91
90
 
92
- Python 3.10 remains supported and tested for this release, but it is deprecated
93
- because upstream Python 3.10 has reached end of life. New environments should
94
- use Python 3.11 or later. Removing Python 3.10 support will be handled in a
95
- future release rather than by this compatibility update.
91
+ Python 3.11 or later is required. Supported environments are subject to
92
+ [integration-specific limits](../../README.md#python-315-limitations).
96
93
 
97
94
  ## 1. Setup API Keys
98
95
 
@@ -133,6 +130,14 @@ carry a documented feature-usage token.
133
130
  - `AGENT_FRAMEWORK_USER_AGENT_DISABLED=true` disables the entire Agent Framework
134
131
  User-Agent contribution, including the feature token.
135
132
 
133
+ OpenTelemetry providers configured through `configure_otel_providers()` share a
134
+ resource containing `"microsoft.agent-framework": "True"` (a string) by default. This
135
+ resource attribute applies to logs, traces, and metrics, including other
136
+ instrumentation using those providers. Existing environment and explicit resource
137
+ attribute overrides retain their precedence. If you configure providers yourself,
138
+ use `agent_framework.observability.create_resource()` for each provider or add the
139
+ attribute to your own shared resource.
140
+
136
141
  See the following [getting started samples](https://github.com/microsoft/agent-framework/tree/main/python/samples/01-get-started) for more information.
137
142
 
138
143
  ## 2. Create a Simple Agent
@@ -252,6 +257,34 @@ cookie-bearing clients and MCP tool sessions to one authenticated principal; do
252
257
  share a user-specific cookie jar across users. Rejecting cookies does not partition
253
258
  MCP protocol sessions or other server-side state between principals.
254
259
 
260
+ ### MCP HTTP concurrency and timeouts
261
+
262
+ `MCPStreamableHTTPTool` and `FoundryToolbox` attach a separate header snapshot to each
263
+ outgoing HTTP request. Calls with identical effective static and dynamic headers can
264
+ overlap on one MCP session. A different identity waits for active operations before
265
+ reconnecting and refreshing discovery. Discovery, reset, close, and recovery are
266
+ exclusive against active network attempts on framework-owned MCP connections, with
267
+ or without a header provider. Same-identity Agent run preparation does not drain
268
+ active calls. Direct prompt calls resolve current headers rather than reusing an
269
+ inherited invocation snapshot; generated prompts resolve host runtime kwargs
270
+ separately from model arguments. Calls still share server-side session state;
271
+ applications must order state-dependent operations themselves.
272
+
273
+ Resource reads wait for replacement initialization before requiring the connection.
274
+ Catalog discovery restarts the complete snapshot once after a connection replacement,
275
+ without reusing old pages or cursors. A second replacement fails explicitly.
276
+
277
+ `request_timeout` bounds header admission and session reconciliation together, and
278
+ connection recovery separately from the RPC timeout. These are separate budgets,
279
+ not an end-to-end deadline. `None` disables these budgets. An admission timeout does
280
+ not cancel another caller's active operation. Cleanup may continue after a timeout
281
+ or cancellation so the lifecycle owner can finish releasing resources safely.
282
+ Caller-owned MCP clients retain their own RPC timeout policy and are not recreated.
283
+
284
+ Concurrent failures of the same connection share its replacement. Calling `close()`
285
+ interrupts older recovery so it cannot reopen the connection or retry the failed
286
+ operation after shutdown. A later explicit `connect()` remains supported.
287
+
255
288
  ## 5. Multi-Agent Orchestration
256
289
 
257
290
  Coordinate multiple agents to collaborate on complex tasks using orchestration patterns:
@@ -22,13 +22,11 @@ pip install agent-framework-openai
22
22
 
23
23
  Supported Platforms:
24
24
 
25
- - Python: 3.10–3.15
25
+ - Python: 3.11–3.15
26
26
  - OS: Windows, macOS, Linux
27
27
 
28
- Python 3.10 remains supported and tested for this release, but it is deprecated
29
- because upstream Python 3.10 has reached end of life. New environments should
30
- use Python 3.11 or later. Removing Python 3.10 support will be handled in a
31
- future release rather than by this compatibility update.
28
+ Python 3.11 or later is required. Supported environments are subject to
29
+ [integration-specific limits](../../README.md#python-315-limitations).
32
30
 
33
31
  ## 1. Setup API Keys
34
32
 
@@ -69,6 +67,14 @@ carry a documented feature-usage token.
69
67
  - `AGENT_FRAMEWORK_USER_AGENT_DISABLED=true` disables the entire Agent Framework
70
68
  User-Agent contribution, including the feature token.
71
69
 
70
+ OpenTelemetry providers configured through `configure_otel_providers()` share a
71
+ resource containing `"microsoft.agent-framework": "True"` (a string) by default. This
72
+ resource attribute applies to logs, traces, and metrics, including other
73
+ instrumentation using those providers. Existing environment and explicit resource
74
+ attribute overrides retain their precedence. If you configure providers yourself,
75
+ use `agent_framework.observability.create_resource()` for each provider or add the
76
+ attribute to your own shared resource.
77
+
72
78
  See the following [getting started samples](https://github.com/microsoft/agent-framework/tree/main/python/samples/01-get-started) for more information.
73
79
 
74
80
  ## 2. Create a Simple Agent
@@ -188,6 +194,34 @@ cookie-bearing clients and MCP tool sessions to one authenticated principal; do
188
194
  share a user-specific cookie jar across users. Rejecting cookies does not partition
189
195
  MCP protocol sessions or other server-side state between principals.
190
196
 
197
+ ### MCP HTTP concurrency and timeouts
198
+
199
+ `MCPStreamableHTTPTool` and `FoundryToolbox` attach a separate header snapshot to each
200
+ outgoing HTTP request. Calls with identical effective static and dynamic headers can
201
+ overlap on one MCP session. A different identity waits for active operations before
202
+ reconnecting and refreshing discovery. Discovery, reset, close, and recovery are
203
+ exclusive against active network attempts on framework-owned MCP connections, with
204
+ or without a header provider. Same-identity Agent run preparation does not drain
205
+ active calls. Direct prompt calls resolve current headers rather than reusing an
206
+ inherited invocation snapshot; generated prompts resolve host runtime kwargs
207
+ separately from model arguments. Calls still share server-side session state;
208
+ applications must order state-dependent operations themselves.
209
+
210
+ Resource reads wait for replacement initialization before requiring the connection.
211
+ Catalog discovery restarts the complete snapshot once after a connection replacement,
212
+ without reusing old pages or cursors. A second replacement fails explicitly.
213
+
214
+ `request_timeout` bounds header admission and session reconciliation together, and
215
+ connection recovery separately from the RPC timeout. These are separate budgets,
216
+ not an end-to-end deadline. `None` disables these budgets. An admission timeout does
217
+ not cancel another caller's active operation. Cleanup may continue after a timeout
218
+ or cancellation so the lifecycle owner can finish releasing resources safely.
219
+ Caller-owned MCP clients retain their own RPC timeout policy and are not recreated.
220
+
221
+ Concurrent failures of the same connection share its replacement. Calling `close()`
222
+ interrupts older recovery so it cannot reopen the connection or retry the failed
223
+ operation after shutdown. A later explicit `connect()` remains supported.
224
+
191
225
  ## 5. Multi-Agent Orchestration
192
226
 
193
227
  Coordinate multiple agents to collaborate on complex tasks using orchestration patterns:
@@ -42,7 +42,11 @@ from .exceptions import (
42
42
  )
43
43
 
44
44
  _LAZY_MODULE_EXPORTS: Final[Mapping[str, tuple[str, ...]]] = {
45
- "._agent_hooks": ("create_agent_hooks_middleware", "create_agent_hooks_middleware_from_emitter"),
45
+ "._agent_hooks": (
46
+ "create_agent_hooks_middleware",
47
+ "create_agent_hooks_middleware_from_declaration",
48
+ "create_agent_hooks_middleware_from_emitter",
49
+ ),
46
50
  "._agents": ("Agent", "BaseAgent", "RawAgent", "SupportsAgentRun"),
47
51
  "._clients": (
48
52
  "BaseChatClient",
@@ -69,6 +73,7 @@ _LAZY_MODULE_EXPORTS: Final[Mapping[str, tuple[str, ...]]] = {
69
73
  "SUMMARIZED_BY_SUMMARY_ID_KEY",
70
74
  "SUMMARY_OF_GROUP_IDS_KEY",
71
75
  "SUMMARY_OF_MESSAGE_IDS_KEY",
76
+ "AgentTriggeredCompactionStrategy",
72
77
  "CharacterEstimatorTokenizer",
73
78
  "CompactionProvider",
74
79
  "CompactionStrategy",
@@ -80,6 +85,7 @@ _LAZY_MODULE_EXPORTS: Final[Mapping[str, tuple[str, ...]]] = {
80
85
  "TokenizerProtocol",
81
86
  "ToolResultCompactionStrategy",
82
87
  "TruncationStrategy",
88
+ "UnloadSkillsCompactionStrategy",
83
89
  "annotate_message_groups",
84
90
  "apply_compaction",
85
91
  "included_messages",
@@ -452,6 +458,7 @@ __all__ = [
452
458
  "AgentResponseUpdate",
453
459
  "AgentRunInputs",
454
460
  "AgentSession",
461
+ "AgentTriggeredCompactionStrategy",
455
462
  "AggregatingSkillsSource",
456
463
  "Annotation",
457
464
  "BackgroundAgentsProvider",
@@ -645,6 +652,7 @@ __all__ = [
645
652
  "ToolTypes",
646
653
  "TruncationStrategy",
647
654
  "TypeCompatibilityError",
655
+ "UnloadSkillsCompactionStrategy",
648
656
  "UpdateT",
649
657
  "UsageDetails",
650
658
  "UserInputRequiredException",
@@ -682,6 +690,7 @@ __all__ = [
682
690
  "background_tasks_running_message",
683
691
  "chat_middleware",
684
692
  "create_agent_hooks_middleware",
693
+ "create_agent_hooks_middleware_from_declaration",
685
694
  "create_agent_hooks_middleware_from_emitter",
686
695
  "create_always_approve_tool_response",
687
696
  "create_always_approve_tool_with_arguments_response",
@@ -4,7 +4,11 @@ from typing import Final
4
4
 
5
5
  __version__: Final[str]
6
6
 
7
- from ._agent_hooks import create_agent_hooks_middleware, create_agent_hooks_middleware_from_emitter
7
+ from ._agent_hooks import (
8
+ create_agent_hooks_middleware,
9
+ create_agent_hooks_middleware_from_declaration,
10
+ create_agent_hooks_middleware_from_emitter,
11
+ )
8
12
  from ._agents import Agent, BaseAgent, RawAgent, SupportsAgentRun
9
13
  from ._clients import (
10
14
  BaseChatClient,
@@ -31,6 +35,7 @@ from ._compaction import (
31
35
  SUMMARIZED_BY_SUMMARY_ID_KEY,
32
36
  SUMMARY_OF_GROUP_IDS_KEY,
33
37
  SUMMARY_OF_MESSAGE_IDS_KEY,
38
+ AgentTriggeredCompactionStrategy,
34
39
  CharacterEstimatorTokenizer,
35
40
  CompactionProvider,
36
41
  CompactionStrategy,
@@ -42,6 +47,7 @@ from ._compaction import (
42
47
  TokenizerProtocol,
43
48
  ToolResultCompactionStrategy,
44
49
  TruncationStrategy,
50
+ UnloadSkillsCompactionStrategy,
45
51
  annotate_message_groups,
46
52
  apply_compaction,
47
53
  included_messages,
@@ -407,6 +413,7 @@ __all__ = [
407
413
  "AgentResponseUpdate",
408
414
  "AgentRunInputs",
409
415
  "AgentSession",
416
+ "AgentTriggeredCompactionStrategy",
410
417
  "AggregatingSkillsSource",
411
418
  "Annotation",
412
419
  "BackgroundAgentsProvider",
@@ -600,6 +607,7 @@ __all__ = [
600
607
  "ToolTypes",
601
608
  "TruncationStrategy",
602
609
  "TypeCompatibilityError",
610
+ "UnloadSkillsCompactionStrategy",
603
611
  "UpdateT",
604
612
  "UsageDetails",
605
613
  "UserInputRequiredException",
@@ -637,6 +645,7 @@ __all__ = [
637
645
  "background_tasks_running_message",
638
646
  "chat_middleware",
639
647
  "create_agent_hooks_middleware",
648
+ "create_agent_hooks_middleware_from_declaration",
640
649
  "create_agent_hooks_middleware_from_emitter",
641
650
  "create_always_approve_tool_response",
642
651
  "create_always_approve_tool_with_arguments_response",