diff --git a/python/packages/core/AGENTS.md b/python/packages/core/AGENTS.md index 1f8d46b23af..84f8d047015 100644 --- a/python/packages/core/AGENTS.md +++ b/python/packages/core/AGENTS.md @@ -129,7 +129,7 @@ agent_framework/ ### Tool Approval Harness (`_harness/_tool_approval.py`) -- **`ToolApprovalMiddleware`** - Experimental opt-in agent middleware that coordinates session-backed approval +- **`ToolApprovalMiddleware`** - Opt-in agent middleware that coordinates session-backed approval rules, heuristic `auto_approval_rules`, queued approval requests, collected approval responses, and streaming/non-streaming approval prompts. Heuristic callbacks receive the underlying `function_call` content. - **`ToolApprovalRule`** / **`ToolApprovalState`** - Serializable state models for standing approvals and queued diff --git a/python/packages/core/agent_framework/_harness/_tool_approval.py b/python/packages/core/agent_framework/_harness/_tool_approval.py index 289a3bccbcf..ce34ac271e0 100644 --- a/python/packages/core/agent_framework/_harness/_tool_approval.py +++ b/python/packages/core/agent_framework/_harness/_tool_approval.py @@ -9,7 +9,6 @@ from collections.abc import AsyncIterable, Awaitable, Callable, Iterable, Mapping, MutableMapping, Sequence from typing import Any, Literal, cast -from .._feature_stage import ExperimentalFeature, experimental from .._middleware import AgentContext, AgentMiddleware from .._serialization import SerializationMixin from .._sessions import AgentSession @@ -83,7 +82,6 @@ def _content_to_state(content: Content) -> dict[str, Any]: return content.to_dict() -@experimental(feature_id=ExperimentalFeature.HARNESS) class ToolApprovalRule(SerializationMixin): """A standing rule for approving future matching tool calls.""" @@ -156,7 +154,6 @@ def to_dict(self, *, exclude: set[str] | None = None, exclude_none: bool = True) return payload -@experimental(feature_id=ExperimentalFeature.HARNESS) class ToolApprovalState(SerializationMixin): """Session-backed state used by :class:`ToolApprovalMiddleware`.""" @@ -342,7 +339,6 @@ def _clone_without_always_approve_metadata(response: Content) -> Content: return cloned -@experimental(feature_id=ExperimentalFeature.HARNESS) class ToolApprovalMiddleware(AgentMiddleware): """Coordinate standing tool approvals and queued approval prompts for an agent.