agent-framework-orchestrations 1.4.0__tar.gz → 1.4.2__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 (18) hide show
  1. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/PKG-INFO +2 -3
  2. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_base_group_chat_orchestrator.py +1 -2
  3. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_concurrent.py +1 -2
  4. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_group_chat.py +1 -2
  5. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_handoff.py +3 -3
  6. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_magentic.py +6 -3
  7. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/pyproject.toml +3 -4
  8. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/LICENSE +0 -0
  9. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/README.md +0 -0
  10. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/__init__.py +0 -0
  11. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_feature_usage.py +0 -0
  12. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_orchestration_request_info.py +0 -0
  13. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_orchestration_state.py +0 -0
  14. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_orchestrator_helpers.py +0 -0
  15. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_participant_output_config.py +0 -0
  16. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_sequential.py +0 -0
  17. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/_workflow_builder.py +0 -0
  18. {agent_framework_orchestrations-1.4.0 → agent_framework_orchestrations-1.4.2}/agent_framework_orchestrations/py.typed +0 -0
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agent-framework-orchestrations
3
- Version: 1.4.0
3
+ Version: 1.4.2
4
4
  Summary: Orchestration patterns for Microsoft Agent Framework. Includes SequentialBuilder, ConcurrentBuilder, HandoffBuilder, GroupChatBuilder, and MagenticBuilder.
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
@@ -10,14 +10,13 @@ from abc import ABC
10
10
  from collections import OrderedDict
11
11
  from collections.abc import Awaitable, Callable, Sequence
12
12
  from dataclasses import dataclass
13
- from typing import Any, ClassVar, TypeAlias
13
+ from typing import Any, ClassVar, Never, TypeAlias
14
14
 
15
15
  from agent_framework._types import AgentResponse, AgentResponseUpdate, Message
16
16
  from agent_framework._workflows._agent_executor import AgentExecutor, AgentExecutorRequest, AgentExecutorResponse
17
17
  from agent_framework._workflows._events import WorkflowEvent
18
18
  from agent_framework._workflows._executor import Executor, handler
19
19
  from agent_framework._workflows._workflow_context import WorkflowContext
20
- from typing_extensions import Never
21
20
 
22
21
  from ._orchestration_request_info import AgentApprovalExecutor
23
22
 
@@ -4,7 +4,7 @@ import asyncio
4
4
  import inspect
5
5
  import logging
6
6
  from collections.abc import Callable, Sequence
7
- from typing import Any, Literal, cast
7
+ from typing import Any, Literal, Never, cast
8
8
 
9
9
  from agent_framework import AgentResponse, Message, SupportsAgentRun
10
10
  from agent_framework._telemetry import mark_feature_used
@@ -15,7 +15,6 @@ from agent_framework._workflows._executor import Executor, handler
15
15
  from agent_framework._workflows._message_utils import normalize_messages_input
16
16
  from agent_framework._workflows._workflow import Workflow
17
17
  from agent_framework._workflows._workflow_context import WorkflowContext
18
- from typing_extensions import Never
19
18
 
20
19
  from ._feature_usage import FeatureIndex
21
20
  from ._orchestration_request_info import AgentApprovalExecutor, validate_request_info_filter
@@ -27,7 +27,7 @@ import sys
27
27
  from collections import OrderedDict
28
28
  from collections.abc import Awaitable, Callable, Sequence
29
29
  from dataclasses import dataclass
30
- from typing import Any, ClassVar, Literal, cast
30
+ from typing import Any, ClassVar, Literal, Never, cast
31
31
 
32
32
  from agent_framework import Agent, AgentResponse, AgentResponseUpdate, AgentSession, Message, SupportsAgentRun
33
33
  from agent_framework._telemetry import mark_feature_used
@@ -39,7 +39,6 @@ from agent_framework._workflows._executor import Executor
39
39
  from agent_framework._workflows._workflow import Workflow
40
40
  from agent_framework._workflows._workflow_context import WorkflowContext
41
41
  from pydantic import BaseModel, Field
42
- from typing_extensions import Never
43
42
 
44
43
  from ._base_group_chat_orchestrator import (
45
44
  BaseGroupChatOrchestrator,
@@ -657,15 +657,15 @@ class HandoffBuilder:
657
657
  tool injection, and middleware — capabilities only available on ``Agent``.
658
658
 
659
659
  Outputs:
660
- Each agent's response surfaces as a workflow `output` event as it speaks; there is no
660
+ By default, each agent's response surfaces as a workflow `output` event as it speaks; there is no
661
661
  synthetic terminal event. Consumers iterating events see per-agent ``AgentResponse`` (or
662
662
  ``AgentResponseUpdate`` while streaming) in conversation order. The workflow returns to
663
663
  idle once the termination condition is met (or the user terminates an interactive run).
664
664
 
665
665
  Note:
666
666
  1. Agents in handoff workflows must be ``Agent`` instances and support local tool calls.
667
- 2. Because each agent's response is itself Workflow Output, handoff has no separate
668
- "intermediate outputs" channel — every per-agent response is the primary output.
667
+ 2. Use ``output_from`` and ``intermediate_output_from`` to select participants for Workflow Output
668
+ and Intermediate Output. Unselected participant outputs are hidden.
669
669
  """
670
670
 
671
671
  def __init__(
@@ -10,7 +10,7 @@ from collections.abc import Callable, Sequence
10
10
  from dataclasses import dataclass, field
11
11
  from enum import Enum
12
12
  from functools import partial
13
- from typing import Any, ClassVar, Literal, TypeVar, cast
13
+ from typing import Any, ClassVar, Literal, Never, TypeVar, cast
14
14
 
15
15
  from agent_framework import (
16
16
  AgentResponse,
@@ -27,7 +27,7 @@ from agent_framework._workflows._model_utils import DictConvertible, encode_valu
27
27
  from agent_framework._workflows._request_info_mixin import response_handler
28
28
  from agent_framework._workflows._workflow import Workflow
29
29
  from agent_framework._workflows._workflow_context import WorkflowContext
30
- from typing_extensions import Never, Sentinel
30
+ from typing_extensions import Sentinel
31
31
 
32
32
  from ._base_group_chat_orchestrator import (
33
33
  BaseGroupChatOrchestrator,
@@ -942,7 +942,10 @@ class MagenticOrchestrator(BaseGroupChatOrchestrator):
942
942
 
943
943
  # Termination related state
944
944
  self._terminated: bool = False
945
- self._max_rounds = manager.max_round_count
945
+ # The base group chat contract coerces a max round count below 1 up to 1; this
946
+ # value is assigned after super().__init__, so apply the same rule here instead
947
+ # of ending the workflow before any round can run.
948
+ self._max_rounds = max(1, manager.max_round_count) if manager.max_round_count is not None else None
946
949
 
947
950
  @override
948
951
  async def _handle_messages(
@@ -3,8 +3,8 @@ name = "agent-framework-orchestrations"
3
3
  description = "Orchestration patterns for Microsoft Agent Framework. Includes SequentialBuilder, ConcurrentBuilder, HandoffBuilder, GroupChatBuilder, and MagenticBuilder."
4
4
  authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}]
5
5
  readme = "README.md"
6
- requires-python = ">=3.10"
7
- version = "1.4.0"
6
+ requires-python = ">=3.11"
7
+ version = "1.4.2"
8
8
  license-files = ["LICENSE"]
9
9
  urls.homepage = "https://aka.ms/agent-framework"
10
10
  urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
@@ -15,7 +15,6 @@ classifiers = [
15
15
  "Development Status :: 5 - Production/Stable",
16
16
  "Intended Audience :: Developers",
17
17
  "Programming Language :: Python :: 3",
18
- "Programming Language :: Python :: 3.10",
19
18
  "Programming Language :: Python :: 3.11",
20
19
  "Programming Language :: Python :: 3.12",
21
20
  "Programming Language :: Python :: 3.13",
@@ -65,7 +64,7 @@ exclude = ['tests']
65
64
  [tool.mypy]
66
65
  plugins = ['pydantic.mypy']
67
66
  strict = true
68
- python_version = "3.10"
67
+ python_version = "3.11"
69
68
  ignore_missing_imports = true
70
69
  disallow_untyped_defs = true
71
70
  no_implicit_optional = true