agenticdome-python-sdk 1.2.2__tar.gz → 1.2.4__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.
- {agenticdome_python_sdk-1.2.2/agenticdome_python_sdk.egg-info → agenticdome_python_sdk-1.2.4}/PKG-INFO +146 -28
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/README.md +125 -12
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4/agenticdome_python_sdk.egg-info}/PKG-INFO +146 -28
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_python_sdk.egg-info/SOURCES.txt +3 -10
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_python_sdk.egg-info/requires.txt +22 -15
- agenticdome_python_sdk-1.2.4/agenticdome_sdk/autogen.py +709 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/examples/attack_demo.py +69 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/pyproject.toml +23 -16
- agenticdome_python_sdk-1.2.4/tests/test_attack_demo.py +49 -0
- agenticdome_python_sdk-1.2.4/tests/test_autogen_integration.py +297 -0
- agenticdome_python_sdk-1.2.2/agenticdome_sdk/scenarios.py +0 -196
- agenticdome_python_sdk-1.2.2/examples/agno_lateral_refund.py +0 -25
- agenticdome_python_sdk-1.2.2/examples/ai_foundry_callback_export.py +0 -16
- agenticdome_python_sdk-1.2.2/examples/crewai_lateral_refund.py +0 -25
- agenticdome_python_sdk-1.2.2/examples/mcp_remote_patch.py +0 -14
- agenticdome_python_sdk-1.2.2/examples/mesh_output_redaction.py +0 -20
- agenticdome_python_sdk-1.2.2/examples/microsoft_metadata_exfil.py +0 -17
- agenticdome_python_sdk-1.2.2/examples/salesforce_hidden_bcc.py +0 -18
- agenticdome_python_sdk-1.2.2/examples/servicenow_delete_logs.py +0 -18
- agenticdome_python_sdk-1.2.2/tests/test_packaging_contract.py +0 -159
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/LICENSE +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/MANIFEST.in +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/__init__.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/_framework_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/agno.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/aws_bedrock.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/claude.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/client.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/crewai.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/google_adk.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/identity.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/langgraph.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/llamaindex.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/mcp_host.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/microsoft_agent_framework.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/microsoft_ai_foundry.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/openai_agents.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/proof.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/pydantic.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/agenticdome_sdk/smolagents.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/examples/crewai_agenticdome_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/setup.cfg +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/setup.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_agno_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_aws_bedrock_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_claude_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_client.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_crewai_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_google_adk_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_identity_context.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_langgraph_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_live_tenant.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_llamaindex_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_mcp_host_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_microsoft_agent_framework_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_microsoft_ai_foundry_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_openai_agents_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_pydanticai_integration.py +0 -0
- {agenticdome_python_sdk-1.2.2 → agenticdome_python_sdk-1.2.4}/tests/test_smolagents_integration.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agenticdome-python-sdk
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.4
|
|
4
4
|
Summary: Official Python SDK for AgenticDome security guardrails, DLP, tool authorization, and multi-agent delegation enforcement.
|
|
5
5
|
Author: AgenticDome
|
|
6
6
|
License: Proprietary
|
|
@@ -27,36 +27,40 @@ License-File: LICENSE
|
|
|
27
27
|
Requires-Dist: requests>=2.31.0
|
|
28
28
|
Requires-Dist: urllib3>=2.0.0
|
|
29
29
|
Provides-Extra: crewai
|
|
30
|
-
Requires-Dist: crewai
|
|
30
|
+
Requires-Dist: crewai<=1.15.6,>=1.15.5; extra == "crewai"
|
|
31
31
|
Provides-Extra: redis
|
|
32
32
|
Requires-Dist: redis>=4.5.0; extra == "redis"
|
|
33
33
|
Provides-Extra: pop
|
|
34
34
|
Requires-Dist: cryptography>=42.0.0; extra == "pop"
|
|
35
35
|
Provides-Extra: pydanticai
|
|
36
|
-
Requires-Dist: pydantic-ai
|
|
36
|
+
Requires-Dist: pydantic-ai<=2.18.0,>=2.16.0; extra == "pydanticai"
|
|
37
37
|
Requires-Dist: anyio>=4.0.0; extra == "pydanticai"
|
|
38
38
|
Provides-Extra: pydantic
|
|
39
|
-
Requires-Dist: pydantic-ai
|
|
39
|
+
Requires-Dist: pydantic-ai<=2.18.0,>=2.16.0; extra == "pydantic"
|
|
40
40
|
Requires-Dist: anyio>=4.0.0; extra == "pydantic"
|
|
41
41
|
Provides-Extra: langgraph
|
|
42
42
|
Requires-Dist: langgraph==1.2.9; extra == "langgraph"
|
|
43
|
-
Requires-Dist: langchain-core
|
|
43
|
+
Requires-Dist: langchain-core<=1.5.1,>=1.5.0; extra == "langgraph"
|
|
44
44
|
Requires-Dist: langchain-openai==1.3.5; extra == "langgraph"
|
|
45
45
|
Requires-Dist: anyio>=4.0.0; extra == "langgraph"
|
|
46
46
|
Provides-Extra: microsoft
|
|
47
|
+
Provides-Extra: autogen
|
|
48
|
+
Requires-Dist: autogen-agentchat==0.7.5; extra == "autogen"
|
|
49
|
+
Provides-Extra: microsoft-autogen
|
|
50
|
+
Requires-Dist: autogen-agentchat==0.7.5; extra == "microsoft-autogen"
|
|
47
51
|
Provides-Extra: foundry
|
|
48
52
|
Requires-Dist: azure-ai-projects==2.3.0; extra == "foundry"
|
|
49
53
|
Requires-Dist: azure-identity==1.25.3; extra == "foundry"
|
|
50
54
|
Provides-Extra: agno
|
|
51
|
-
Requires-Dist: agno
|
|
55
|
+
Requires-Dist: agno<=2.8.3,>=2.8.0; extra == "agno"
|
|
52
56
|
Provides-Extra: openai-agents
|
|
53
57
|
Requires-Dist: openai-agents==0.18.3; extra == "openai-agents"
|
|
54
58
|
Provides-Extra: mcp
|
|
55
59
|
Requires-Dist: mcp<=1.28.1,>=1.26.0; extra == "mcp"
|
|
56
60
|
Provides-Extra: bedrock
|
|
57
|
-
Requires-Dist: boto3
|
|
61
|
+
Requires-Dist: boto3<=1.43.56,>=1.43.54; extra == "bedrock"
|
|
58
62
|
Provides-Extra: aws-bedrock
|
|
59
|
-
Requires-Dist: boto3
|
|
63
|
+
Requires-Dist: boto3<=1.43.56,>=1.43.54; extra == "aws-bedrock"
|
|
60
64
|
Provides-Extra: llamaindex
|
|
61
65
|
Requires-Dist: llama-index==0.14.23; extra == "llamaindex"
|
|
62
66
|
Provides-Extra: llama-index
|
|
@@ -66,29 +70,30 @@ Requires-Dist: google-adk==2.5.0; extra == "google-adk"
|
|
|
66
70
|
Provides-Extra: adk
|
|
67
71
|
Requires-Dist: google-adk==2.5.0; extra == "adk"
|
|
68
72
|
Provides-Extra: claude
|
|
69
|
-
Requires-Dist: claude-agent-sdk
|
|
73
|
+
Requires-Dist: claude-agent-sdk<=0.2.128,>=0.2.126; extra == "claude"
|
|
70
74
|
Provides-Extra: claude-agent-sdk
|
|
71
|
-
Requires-Dist: claude-agent-sdk
|
|
75
|
+
Requires-Dist: claude-agent-sdk<=0.2.128,>=0.2.126; extra == "claude-agent-sdk"
|
|
72
76
|
Provides-Extra: smolagents
|
|
73
77
|
Requires-Dist: smolagents==1.26.0; extra == "smolagents"
|
|
74
78
|
Provides-Extra: all
|
|
75
|
-
Requires-Dist: crewai
|
|
79
|
+
Requires-Dist: crewai<=1.15.6,>=1.15.5; extra == "all"
|
|
76
80
|
Requires-Dist: redis>=4.5.0; extra == "all"
|
|
77
81
|
Requires-Dist: cryptography>=42.0.0; extra == "all"
|
|
78
|
-
Requires-Dist: pydantic-ai
|
|
82
|
+
Requires-Dist: pydantic-ai<=2.18.0,>=2.16.0; extra == "all"
|
|
79
83
|
Requires-Dist: anyio>=4.0.0; extra == "all"
|
|
80
84
|
Requires-Dist: langgraph==1.2.9; extra == "all"
|
|
81
|
-
Requires-Dist: langchain-core
|
|
85
|
+
Requires-Dist: langchain-core<=1.5.1,>=1.5.0; extra == "all"
|
|
82
86
|
Requires-Dist: langchain-openai==1.3.5; extra == "all"
|
|
83
|
-
Requires-Dist:
|
|
87
|
+
Requires-Dist: autogen-agentchat==0.7.5; extra == "all"
|
|
88
|
+
Requires-Dist: agno<=2.8.3,>=2.8.0; extra == "all"
|
|
84
89
|
Requires-Dist: azure-ai-projects==2.3.0; extra == "all"
|
|
85
90
|
Requires-Dist: azure-identity==1.25.3; extra == "all"
|
|
86
91
|
Requires-Dist: openai-agents==0.18.3; extra == "all"
|
|
87
92
|
Requires-Dist: mcp<=1.28.1,>=1.26.0; extra == "all"
|
|
88
|
-
Requires-Dist: boto3
|
|
93
|
+
Requires-Dist: boto3<=1.43.56,>=1.43.54; extra == "all"
|
|
89
94
|
Requires-Dist: llama-index==0.14.23; extra == "all"
|
|
90
95
|
Requires-Dist: google-adk==2.5.0; extra == "all"
|
|
91
|
-
Requires-Dist: claude-agent-sdk
|
|
96
|
+
Requires-Dist: claude-agent-sdk<=0.2.128,>=0.2.126; extra == "all"
|
|
92
97
|
Requires-Dist: smolagents==1.26.0; extra == "all"
|
|
93
98
|
Provides-Extra: dev
|
|
94
99
|
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
@@ -109,7 +114,7 @@ Dynamic: license-file
|
|
|
109
114
|
|
|
110
115
|
`agenticdome-python-sdk` is the official Python SDK and middleware package for [AgenticDome](https://agenticdome.io). It enforces deterministic security controls at every boundary your agents cross — prompt ingress, tool execution, agent-to-agent handoffs, and output egress — backed by the AgenticDome central policy plane.
|
|
111
116
|
|
|
112
|
-
**One security pattern,
|
|
117
|
+
**One security pattern, fifteen runtimes:** CrewAI · PydanticAI · LangGraph/LangChain · Microsoft Agent Framework · Microsoft AutoGen · Microsoft AI Foundry · OpenAI Agents SDK · Claude Agent SDK · Hugging Face smolagents · Agno · Google ADK · LlamaIndex · AWS Bedrock · MCP hosts/gateways · custom Python.
|
|
113
118
|
|
|
114
119
|
```python
|
|
115
120
|
# The 30-second version: block a prompt-injected refund before it executes.
|
|
@@ -131,7 +136,7 @@ result = crew.kickoff() # hostile prompts, unsafe tools, and rogue
|
|
|
131
136
|
5. [Configuration](#configuration)
|
|
132
137
|
6. [Choosing Your Integration Point](#choosing-your-integration-point)
|
|
133
138
|
7. [Framework Integrations](#framework-integrations)
|
|
134
|
-
- [CrewAI](#crewai) · [PydanticAI](#pydanticai) · [LangGraph](#langgraph) · [Microsoft Agent Framework](#microsoft-agent-framework) · [Microsoft AI Foundry](#microsoft-ai-foundry) · [OpenAI Agents SDK](#openai-agents-sdk) · [Agno](#agno) · [Google ADK](#google-adk) · [LlamaIndex](#llamaindex) · [AWS Bedrock](#aws-bedrock) · [MCP Host / Gateway](#mcp-host--gateway)
|
|
139
|
+
- [CrewAI](#crewai) · [PydanticAI](#pydanticai) · [LangGraph](#langgraph) · [Microsoft Agent Framework](#microsoft-agent-framework) · [Microsoft AutoGen](#microsoft-autogen) · [Microsoft AI Foundry](#microsoft-ai-foundry) · [OpenAI Agents SDK](#openai-agents-sdk) · [Agno](#agno) · [Google ADK](#google-adk) · [LlamaIndex](#llamaindex) · [AWS Bedrock](#aws-bedrock) · [MCP Host / Gateway](#mcp-host--gateway)
|
|
135
140
|
8. [Core SDK Client (Custom Runtimes)](#core-sdk-client-custom-runtimes)
|
|
136
141
|
9. [Production Deployment](#production-deployment)
|
|
137
142
|
10. [Package Build and Verification](#package-build-and-verification)
|
|
@@ -276,6 +281,8 @@ result = crew.kickoff()
|
|
|
276
281
|
|
|
277
282
|
```bash
|
|
278
283
|
python examples/attack_demo.py --framework crewai --scenario refund_hijack
|
|
284
|
+
python examples/attack_demo.py --framework claude --scenario metadata_exfil
|
|
285
|
+
python examples/attack_demo.py --framework smolagents --scenario generated_code_exfil
|
|
279
286
|
```
|
|
280
287
|
|
|
281
288
|
---
|
|
@@ -294,6 +301,7 @@ pip install agenticdome-python-sdk
|
|
|
294
301
|
| PydanticAI | `pip install "agenticdome-python-sdk[pydanticai]"` |
|
|
295
302
|
| LangGraph / LangChain | `pip install "agenticdome-python-sdk[langgraph]"` |
|
|
296
303
|
| Microsoft Agent Framework | `pip install "agenticdome-python-sdk[microsoft]"` |
|
|
304
|
+
| Microsoft AutoGen AgentChat / Core (Python 3.10+) | `pip install "agenticdome-python-sdk[autogen]"` |
|
|
297
305
|
| Microsoft AI Foundry | `pip install "agenticdome-python-sdk[foundry]"` |
|
|
298
306
|
| OpenAI Agents SDK | `pip install "agenticdome-python-sdk[openai-agents]"` |
|
|
299
307
|
| Anthropic Claude Agent SDK | `pip install "agenticdome-python-sdk[claude]"` |
|
|
@@ -309,6 +317,12 @@ pip install agenticdome-python-sdk
|
|
|
309
317
|
|
|
310
318
|
Some adapters are dependency-light at import time: Google ADK, LlamaIndex, Bedrock, MCP, and Microsoft helpers can wrap local boundaries without forcing one exact runtime stack. Install the framework packages your application actually uses.
|
|
311
319
|
|
|
320
|
+
### Framework-version compatibility
|
|
321
|
+
|
|
322
|
+
AgenticDome supports framework versions only inside the range certified by the SDK Harness. When an upstream framework release appears, **Upgrade & Certify** keeps the existing certified version as the compatibility floor, tests the new release as the ceiling, and publishes an inclusive dependency range such as `framework>=floor,<=ceiling` only when both endpoints pass the adapter and firewall release gates. Multi-package integrations such as LangGraph/LangChain are also retested at their complete certified floor set.
|
|
323
|
+
|
|
324
|
+
This means upgrading support for the latest framework does not silently drop customers on the previously certified version. Versions below the displayed certified floor are not claimed as supported until they are tested. Customers managing framework dependencies themselves may install the core SDK without an extra, but their framework version must still be inside the certified range for a production support claim.
|
|
325
|
+
|
|
312
326
|
---
|
|
313
327
|
|
|
314
328
|
## Configuration
|
|
@@ -406,7 +420,7 @@ export AGENTICDOME_PRODUCTION_MODE="false" # production hardening (st
|
|
|
406
420
|
<details>
|
|
407
421
|
<summary><strong>Full configuration reference — per-adapter variables</strong></summary>
|
|
408
422
|
|
|
409
|
-
Every framework adapter exposes the same family of local hardening controls, prefixed per adapter: `AGENTICDOME_CREWAI_*`, `AGENTICDOME_PYDANTICAI_*`, `AGENTICDOME_LANGGRAPH_*`, `AGENTICDOME_MSAF_*` (Microsoft Agent Framework), `AGENTICDOME_FOUNDRY_*`, `AGENTICDOME_OPENAI_AGENTS_*`, `AGENTICDOME_CLAUDE_*`, `AGENTICDOME_SMOLAGENTS_*`, `AGENTICDOME_AGNO_*`, `AGENTICDOME_BEDROCK_*`, `AGENTICDOME_GOOGLE_ADK_*`, and `AGENTICDOME_MCP_*`.
|
|
423
|
+
Every framework adapter exposes the same family of local hardening controls, prefixed per adapter: `AGENTICDOME_CREWAI_*`, `AGENTICDOME_PYDANTICAI_*`, `AGENTICDOME_LANGGRAPH_*`, `AGENTICDOME_MSAF_*` (Microsoft Agent Framework), `AGENTICDOME_AUTOGEN_*`, `AGENTICDOME_FOUNDRY_*`, `AGENTICDOME_OPENAI_AGENTS_*`, `AGENTICDOME_CLAUDE_*`, `AGENTICDOME_SMOLAGENTS_*`, `AGENTICDOME_AGNO_*`, `AGENTICDOME_BEDROCK_*`, `AGENTICDOME_GOOGLE_ADK_*`, and `AGENTICDOME_MCP_*`.
|
|
410
424
|
|
|
411
425
|
**Common per-adapter pattern** (substitute the prefix for your adapter):
|
|
412
426
|
|
|
@@ -484,6 +498,7 @@ One table, one decision. Find your runtime, apply the required code action, and
|
|
|
484
498
|
| [PydanticAI](#pydanticai) | `agenticdome_sdk.pydantic` | Module where each `Agent(...)` and tool is constructed | `CyberSecFirewall(...)` + `create_hooks()`, `install_native_hooks(agent)`, or `attach_to_agent(agent)` | `@firewall.secure_tool(...)` with optional `tool_schema` validation |
|
|
485
499
|
| [LangGraph](#langgraph) | `agenticdome_sdk.langgraph` | Module where `StateGraph` or LangChain `create_agent()` is assembled | Add `input_node()` / `transition_node()` / `graph_transition_node()` / `output_node()`, or `as_langchain_middleware()` | `wrap_agent_node()`, `wrap_tool_node()`, `security_route()` for blocked edges |
|
|
486
500
|
| [Microsoft Agent Framework](#microsoft-agent-framework) | `agenticdome_sdk.microsoft_agent_framework` | Module where agents, workflows, tools, or middleware are declared | `create_middleware()`, `install_on_agent()`, or `run_agent_securely()` | `@firewall.secure_tool`, `wrap_tool_handler`, `secure_delegated_tool`, `wrap_delegated_tool_handler` |
|
|
501
|
+
| [Microsoft AutoGen](#microsoft-autogen) | `agenticdome_sdk.autogen` | AgentChat teams/Core runtimes; legacy 0.2 ConversableAgent loops | `wrap_team()`, `create_intervention_handler()`, `create_termination_condition()`, `attach_agentchat_agent()`, or `attach_conversable_agent()` | Core `FunctionCall` authorization plus inherited `wrap_tool_handler()` / `secure_tool()` |
|
|
487
502
|
| [Microsoft AI Foundry](#microsoft-ai-foundry) | `agenticdome_sdk.microsoft_ai_foundry` | Module handling Foundry runs, function calls, or client construction | `create_middleware()`, `install_on_client()`, or `run_secure()` | `wrap_tool_executor()`, `@firewall.secure_tool(...)`, `before_tool_call()`, delegation verifiers |
|
|
488
503
|
| [OpenAI Agents SDK](#openai-agents-sdk) | `agenticdome_sdk.openai_agents` | Module where `Agent`, `Runner.run(...)`, `@function_tool`, guardrails, or handoffs are declared | `run_agent_securely()`, `run_agent_stream_securely()`, `create_input_guardrail()`, `create_output_guardrail()` | `wrap_tool_handler()`, `wrap_delegated_tool_handler()`, `@firewall.secure_tool(...)`, handoff verifiers |
|
|
489
504
|
| [Claude Agent SDK](#claude-agent-sdk) | `agenticdome_sdk.claude` | Module constructing `ClaudeAgentOptions`, `ClaudeSDKClient`, SDK MCP tools, or `query()` | `install_on_options()` plus `run_client_securely()`, or `secure_query()` | Native `PreToolUse`/`PostToolUse` hooks, `wrap_tool_handler()`, and `secure_sdk_tool()` |
|
|
@@ -1013,6 +1028,108 @@ from agenticdome_sdk.microsoft_agent_framework import (
|
|
|
1013
1028
|
|
|
1014
1029
|
---
|
|
1015
1030
|
|
|
1031
|
+
### Microsoft AutoGen
|
|
1032
|
+
|
|
1033
|
+
AutoGen is Microsoft's open-source conversational multi-agent framework and is now community-managed in maintenance mode; Microsoft Agent Framework is the recommended successor for new systems. AgenticDome supports current AutoGen AgentChat/Core applications and existing legacy `ConversableAgent` deployments so teams can migrate without losing runtime enforcement.
|
|
1034
|
+
|
|
1035
|
+
```bash
|
|
1036
|
+
# AutoGen AgentChat requires Python 3.10+.
|
|
1037
|
+
pip install "agenticdome-python-sdk[autogen]"
|
|
1038
|
+
```
|
|
1039
|
+
|
|
1040
|
+
**Protect a current AgentChat team** — the wrapper screens the initial task, every streamed team event, and final messages while retaining the underlying Team API:
|
|
1041
|
+
|
|
1042
|
+
```python
|
|
1043
|
+
from autogen_agentchat.teams import RoundRobinGroupChat
|
|
1044
|
+
from agenticdome_sdk.autogen import AgenticDomeAutoGenFirewall
|
|
1045
|
+
|
|
1046
|
+
firewall = AgenticDomeAutoGenFirewall()
|
|
1047
|
+
team = RoundRobinGroupChat([planner, researcher, payments_specialist], max_turns=12)
|
|
1048
|
+
secure_team = firewall.wrap_team(
|
|
1049
|
+
team,
|
|
1050
|
+
session_id="sess_prod_01J4X",
|
|
1051
|
+
agent_id="customer_operations_team",
|
|
1052
|
+
policy_context={"request_purpose": "customer_support"},
|
|
1053
|
+
)
|
|
1054
|
+
|
|
1055
|
+
result = await secure_team.run(task=user_prompt)
|
|
1056
|
+
```
|
|
1057
|
+
|
|
1058
|
+
**Authorize AutoGen Core tool traffic at the runtime boundary** — current AutoGen sends `FunctionCall` messages to tool agents, so the intervention handler is a stronger boundary than patching an individual assistant:
|
|
1059
|
+
|
|
1060
|
+
```python
|
|
1061
|
+
from autogen_core import SingleThreadedAgentRuntime
|
|
1062
|
+
|
|
1063
|
+
handler = firewall.create_intervention_handler(
|
|
1064
|
+
session_id="sess_prod_01J4X",
|
|
1065
|
+
agent_id="autogen_planner",
|
|
1066
|
+
)
|
|
1067
|
+
runtime = SingleThreadedAgentRuntime(intervention_handlers=[handler])
|
|
1068
|
+
```
|
|
1069
|
+
|
|
1070
|
+
**Freeze a group chat on behavioral drift** — compose the AgenticDome condition with AutoGen's normal termination conditions:
|
|
1071
|
+
|
|
1072
|
+
```python
|
|
1073
|
+
agenticdome_stop = firewall.create_termination_condition(
|
|
1074
|
+
session_id="sess_prod_01J4X",
|
|
1075
|
+
agent_id="customer_operations_team",
|
|
1076
|
+
)
|
|
1077
|
+
team = RoundRobinGroupChat(
|
|
1078
|
+
[planner, researcher, payments_specialist],
|
|
1079
|
+
termination_condition=agenticdome_stop | normal_stop,
|
|
1080
|
+
max_turns=12,
|
|
1081
|
+
)
|
|
1082
|
+
```
|
|
1083
|
+
|
|
1084
|
+
Family 2 policy receives a bounded rolling conversation window digest, participant lineage, semantic-deviation evaluation request, and tool-call frequency. A blocked cross-agent message or excessive tool rate freezes the local session, reports a trust incident, and advances revocation state for the emitting agent before an external action can run.
|
|
1085
|
+
|
|
1086
|
+
**Existing AutoGen 0.2 deployments** — attach to the legacy `ConversableAgent.send()`, `receive()`, `a_send()`, and `a_receive()` lifecycles:
|
|
1087
|
+
|
|
1088
|
+
Keep the customer's already-certified legacy AutoGen dependency in place and install the dependency-light base SDK (do not use the `[autogen]` extra, because that extra deliberately installs the current AgentChat release):
|
|
1089
|
+
|
|
1090
|
+
```bash
|
|
1091
|
+
pip install agenticdome-python-sdk
|
|
1092
|
+
```
|
|
1093
|
+
|
|
1094
|
+
```python
|
|
1095
|
+
assistant = firewall.attach_conversable_agent(
|
|
1096
|
+
assistant,
|
|
1097
|
+
session_id="sess_prod_01J4X",
|
|
1098
|
+
agent_id="legacy_autogen_assistant",
|
|
1099
|
+
)
|
|
1100
|
+
user_proxy = firewall.attach_conversable_agent(
|
|
1101
|
+
user_proxy,
|
|
1102
|
+
session_id="sess_prod_01J4X",
|
|
1103
|
+
agent_id="legacy_autogen_user_proxy",
|
|
1104
|
+
)
|
|
1105
|
+
```
|
|
1106
|
+
|
|
1107
|
+
Wrap side-effecting local tools as well; conversation screening does not replace authorization at the execution boundary:
|
|
1108
|
+
|
|
1109
|
+
```python
|
|
1110
|
+
secure_refund = firewall.wrap_tool_handler(
|
|
1111
|
+
tool_name="payments.refund.create",
|
|
1112
|
+
tool_platform="payments",
|
|
1113
|
+
handler=raw_refund,
|
|
1114
|
+
session_id="sess_prod_01J4X",
|
|
1115
|
+
agent_id="payments_specialist",
|
|
1116
|
+
)
|
|
1117
|
+
```
|
|
1118
|
+
|
|
1119
|
+
```bash
|
|
1120
|
+
export AGENTICDOME_PLATFORM="autogen"
|
|
1121
|
+
export AGENTICDOME_PRODUCTION_MODE="true"
|
|
1122
|
+
export AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD="true"
|
|
1123
|
+
export AGENTICDOME_AUTOGEN_CONVERSATION_WINDOW="12"
|
|
1124
|
+
export AGENTICDOME_AUTOGEN_MAX_TOOL_CALLS_PER_WINDOW="8"
|
|
1125
|
+
export AGENTICDOME_AUTOGEN_FREEZE_ON_BLOCK="true"
|
|
1126
|
+
export AGENTICDOME_AUTOGEN_REVOKE_ON_FREEZE="true"
|
|
1127
|
+
```
|
|
1128
|
+
|
|
1129
|
+
Official references: [AutoGen project status and migration guidance](https://github.com/microsoft/autogen) · [AgentChat teams](https://microsoft.github.io/autogen/stable/reference/python/autogen_agentchat.teams.html) · [Core intervention handlers](https://microsoft.github.io/autogen/dev/user-guide/core-user-guide/cookbook/tool-use-with-intervention.html) · [Legacy 0.2 conversational agents](https://microsoft.github.io/autogen/0.2/docs/Use-Cases/agent_chat/)
|
|
1130
|
+
|
|
1131
|
+
---
|
|
1132
|
+
|
|
1016
1133
|
### Microsoft AI Foundry
|
|
1017
1134
|
|
|
1018
1135
|
For services that call Foundry agents, handle function-call requests from Foundry, execute local function tools, or use `FoundryChatClient` with local tools.
|
|
@@ -2366,7 +2483,7 @@ source .venv/bin/activate
|
|
|
2366
2483
|
|
|
2367
2484
|
python -m pip install --upgrade pip setuptools wheel
|
|
2368
2485
|
python -m pip install -e ".[dev]"
|
|
2369
|
-
python -m pip install -e ".[crewai,pydanticai,langgraph,microsoft,foundry,agno,openai-agents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2486
|
+
python -m pip install -e ".[crewai,pydanticai,langgraph,microsoft,autogen,foundry,agno,openai-agents,claude,smolagents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2370
2487
|
|
|
2371
2488
|
python -m pytest -q
|
|
2372
2489
|
rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
|
|
@@ -2374,7 +2491,7 @@ python -m build
|
|
|
2374
2491
|
python -m twine check dist/*
|
|
2375
2492
|
```
|
|
2376
2493
|
|
|
2377
|
-
`python -m pytest -q` runs the core SDK tests
|
|
2494
|
+
`python -m pytest -q` runs the core SDK tests and every dependency-light framework adapter test in one pass — the normal offline full-suite command. Adapter tests use fake framework/client boundaries where possible, so CI verifies authorization, delegation-token handling, sanitized tool arguments, output DLP, streaming sanitization, rate limits, and fail-open/fail-closed behavior without live third-party services. Private release automation separately validates package metadata and rejects internal-only files from both wheel and source-distribution artifacts.
|
|
2378
2495
|
|
|
2379
2496
|
### Framework Test Matrix
|
|
2380
2497
|
|
|
@@ -2388,11 +2505,12 @@ python -m pytest -q tests/test_langgraph_integration.py
|
|
|
2388
2505
|
| Runtime / integration | Test command | Coverage focus |
|
|
2389
2506
|
| :--- | :--- | :--- |
|
|
2390
2507
|
| Core SDK client | `python -m pytest -q tests/test_client.py` | Request validation, headers, guardrail calls, A2A/MCP JSON-RPC calls, Mesh DLP, HTTP errors, JSON handling |
|
|
2391
|
-
|
|
|
2508
|
+
| Attack demos | `python -m pytest -q tests/test_attack_demo.py` | Offline vulnerable-vs-protected CLI coverage, including AutoGen, Claude Agent SDK, and Hugging Face smolagents |
|
|
2392
2509
|
| CrewAI | `python -m pytest -q tests/test_crewai_integration.py` | Prompt/tool hooks, handoff token injection, specialist verification, output redaction, schema checks, rate limits, retries, streaming DLP |
|
|
2393
2510
|
| PydanticAI | `python -m pytest -q tests/test_pydanticai_integration.py` | Agent hooks, secure tools, sanitized arguments, token-store fallback, production session enforcement, rate limits, retries, streaming output |
|
|
2394
2511
|
| LangGraph / LangChain | `python -m pytest -q tests/test_langgraph_integration.py` | Graph input, transition, tool, retrieval, middleware, security routing, token consumption, output DLP, streaming events |
|
|
2395
2512
|
| Microsoft Agent Framework | `python -m pytest -q tests/test_microsoft_agent_framework_integration.py` | Tool/run boundaries, delegated tool verification, middleware install helpers, identity context, Copilot enforcement hooks, streaming output |
|
|
2513
|
+
| Microsoft AutoGen | `python -m pytest -q tests/test_autogen_integration.py` | Current AgentChat team/Core interception, legacy send/receive hooks, rolling Family 2 context, session freeze, trust incident and revocation escalation |
|
|
2396
2514
|
| Microsoft AI Foundry | `python -m pytest -q tests/test_microsoft_ai_foundry_integration.py` | Prompt threat contracts, local tool executors, run boundaries, bearer/API-key configuration, delegated execution, circuit breaker, stream DLP |
|
|
2397
2515
|
| OpenAI Agents SDK | `python -m pytest -q tests/test_openai_agents_integration.py` | Runner wrappers, guardrail helpers, function-tool wrappers, handoff/delegated tools, HMAC token storage, schema checks, retries, streaming output |
|
|
2398
2516
|
| Claude Agent SDK | `python -m pytest -q tests/test_claude_integration.py` | Native prompt/tool hooks, tool-output replacement, secure query responses, decision-token binding and one-time consumption |
|
|
@@ -2405,36 +2523,36 @@ python -m pytest -q tests/test_langgraph_integration.py
|
|
|
2405
2523
|
|
|
2406
2524
|
### Release gates
|
|
2407
2525
|
|
|
2408
|
-
**Metadata and artifact validation
|
|
2526
|
+
**Metadata and artifact validation:**
|
|
2409
2527
|
|
|
2410
2528
|
```bash
|
|
2411
|
-
python -m pytest -q tests/test_packaging_contract.py
|
|
2412
2529
|
rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
|
|
2413
2530
|
python -m build
|
|
2414
2531
|
python -m twine check dist/*
|
|
2415
2532
|
```
|
|
2416
2533
|
|
|
2534
|
+
The private release pipeline performs additional package-contract and forbidden-file checks before upload.
|
|
2535
|
+
|
|
2417
2536
|
**Full offline release gate** across all supported Python integrations:
|
|
2418
2537
|
|
|
2419
2538
|
```bash
|
|
2420
|
-
python -m pip install -e ".[dev,crewai,pydanticai,langgraph,microsoft,foundry,agno,openai-agents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2539
|
+
python -m pip install -e ".[dev,crewai,pydanticai,langgraph,microsoft,autogen,foundry,agno,openai-agents,claude,smolagents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2421
2540
|
python -m pytest -q
|
|
2422
2541
|
rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
|
|
2423
2542
|
python -m build
|
|
2424
2543
|
python -m twine check dist/*
|
|
2425
2544
|
```
|
|
2426
2545
|
|
|
2427
|
-
**Focused verification** —
|
|
2546
|
+
**Focused verification** — optional live tenant smoke tests:
|
|
2428
2547
|
|
|
2429
2548
|
```bash
|
|
2430
|
-
python -m pytest -q tests/
|
|
2549
|
+
python -m pytest -q tests/test_live_tenant.py
|
|
2431
2550
|
```
|
|
2432
2551
|
|
|
2433
2552
|
| Part | Meaning |
|
|
2434
2553
|
| :--- | :--- |
|
|
2435
2554
|
| `python -m pytest` | Runs `pytest` using the current Python environment |
|
|
2436
2555
|
| `-q` | Quiet mode — compact results instead of verbose test names |
|
|
2437
|
-
| `tests/test_packaging_contract.py` | Packaging and release-quality checks: `pyproject.toml` metadata, minimal `setup.py` shim, public imports, `.gitignore`, `MANIFEST.in`, README verification coverage |
|
|
2438
2556
|
| `tests/test_live_tenant.py` | Live AgenticDome tenant smoke tests — skipped by default, only runs when explicitly enabled |
|
|
2439
2557
|
|
|
2440
2558
|
**Live tenant release gate** — against a real AgenticDome tenant:
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
`agenticdome-python-sdk` is the official Python SDK and middleware package for [AgenticDome](https://agenticdome.io). It enforces deterministic security controls at every boundary your agents cross — prompt ingress, tool execution, agent-to-agent handoffs, and output egress — backed by the AgenticDome central policy plane.
|
|
10
10
|
|
|
11
|
-
**One security pattern,
|
|
11
|
+
**One security pattern, fifteen runtimes:** CrewAI · PydanticAI · LangGraph/LangChain · Microsoft Agent Framework · Microsoft AutoGen · Microsoft AI Foundry · OpenAI Agents SDK · Claude Agent SDK · Hugging Face smolagents · Agno · Google ADK · LlamaIndex · AWS Bedrock · MCP hosts/gateways · custom Python.
|
|
12
12
|
|
|
13
13
|
```python
|
|
14
14
|
# The 30-second version: block a prompt-injected refund before it executes.
|
|
@@ -30,7 +30,7 @@ result = crew.kickoff() # hostile prompts, unsafe tools, and rogue
|
|
|
30
30
|
5. [Configuration](#configuration)
|
|
31
31
|
6. [Choosing Your Integration Point](#choosing-your-integration-point)
|
|
32
32
|
7. [Framework Integrations](#framework-integrations)
|
|
33
|
-
- [CrewAI](#crewai) · [PydanticAI](#pydanticai) · [LangGraph](#langgraph) · [Microsoft Agent Framework](#microsoft-agent-framework) · [Microsoft AI Foundry](#microsoft-ai-foundry) · [OpenAI Agents SDK](#openai-agents-sdk) · [Agno](#agno) · [Google ADK](#google-adk) · [LlamaIndex](#llamaindex) · [AWS Bedrock](#aws-bedrock) · [MCP Host / Gateway](#mcp-host--gateway)
|
|
33
|
+
- [CrewAI](#crewai) · [PydanticAI](#pydanticai) · [LangGraph](#langgraph) · [Microsoft Agent Framework](#microsoft-agent-framework) · [Microsoft AutoGen](#microsoft-autogen) · [Microsoft AI Foundry](#microsoft-ai-foundry) · [OpenAI Agents SDK](#openai-agents-sdk) · [Agno](#agno) · [Google ADK](#google-adk) · [LlamaIndex](#llamaindex) · [AWS Bedrock](#aws-bedrock) · [MCP Host / Gateway](#mcp-host--gateway)
|
|
34
34
|
8. [Core SDK Client (Custom Runtimes)](#core-sdk-client-custom-runtimes)
|
|
35
35
|
9. [Production Deployment](#production-deployment)
|
|
36
36
|
10. [Package Build and Verification](#package-build-and-verification)
|
|
@@ -175,6 +175,8 @@ result = crew.kickoff()
|
|
|
175
175
|
|
|
176
176
|
```bash
|
|
177
177
|
python examples/attack_demo.py --framework crewai --scenario refund_hijack
|
|
178
|
+
python examples/attack_demo.py --framework claude --scenario metadata_exfil
|
|
179
|
+
python examples/attack_demo.py --framework smolagents --scenario generated_code_exfil
|
|
178
180
|
```
|
|
179
181
|
|
|
180
182
|
---
|
|
@@ -193,6 +195,7 @@ pip install agenticdome-python-sdk
|
|
|
193
195
|
| PydanticAI | `pip install "agenticdome-python-sdk[pydanticai]"` |
|
|
194
196
|
| LangGraph / LangChain | `pip install "agenticdome-python-sdk[langgraph]"` |
|
|
195
197
|
| Microsoft Agent Framework | `pip install "agenticdome-python-sdk[microsoft]"` |
|
|
198
|
+
| Microsoft AutoGen AgentChat / Core (Python 3.10+) | `pip install "agenticdome-python-sdk[autogen]"` |
|
|
196
199
|
| Microsoft AI Foundry | `pip install "agenticdome-python-sdk[foundry]"` |
|
|
197
200
|
| OpenAI Agents SDK | `pip install "agenticdome-python-sdk[openai-agents]"` |
|
|
198
201
|
| Anthropic Claude Agent SDK | `pip install "agenticdome-python-sdk[claude]"` |
|
|
@@ -208,6 +211,12 @@ pip install agenticdome-python-sdk
|
|
|
208
211
|
|
|
209
212
|
Some adapters are dependency-light at import time: Google ADK, LlamaIndex, Bedrock, MCP, and Microsoft helpers can wrap local boundaries without forcing one exact runtime stack. Install the framework packages your application actually uses.
|
|
210
213
|
|
|
214
|
+
### Framework-version compatibility
|
|
215
|
+
|
|
216
|
+
AgenticDome supports framework versions only inside the range certified by the SDK Harness. When an upstream framework release appears, **Upgrade & Certify** keeps the existing certified version as the compatibility floor, tests the new release as the ceiling, and publishes an inclusive dependency range such as `framework>=floor,<=ceiling` only when both endpoints pass the adapter and firewall release gates. Multi-package integrations such as LangGraph/LangChain are also retested at their complete certified floor set.
|
|
217
|
+
|
|
218
|
+
This means upgrading support for the latest framework does not silently drop customers on the previously certified version. Versions below the displayed certified floor are not claimed as supported until they are tested. Customers managing framework dependencies themselves may install the core SDK without an extra, but their framework version must still be inside the certified range for a production support claim.
|
|
219
|
+
|
|
211
220
|
---
|
|
212
221
|
|
|
213
222
|
## Configuration
|
|
@@ -305,7 +314,7 @@ export AGENTICDOME_PRODUCTION_MODE="false" # production hardening (st
|
|
|
305
314
|
<details>
|
|
306
315
|
<summary><strong>Full configuration reference — per-adapter variables</strong></summary>
|
|
307
316
|
|
|
308
|
-
Every framework adapter exposes the same family of local hardening controls, prefixed per adapter: `AGENTICDOME_CREWAI_*`, `AGENTICDOME_PYDANTICAI_*`, `AGENTICDOME_LANGGRAPH_*`, `AGENTICDOME_MSAF_*` (Microsoft Agent Framework), `AGENTICDOME_FOUNDRY_*`, `AGENTICDOME_OPENAI_AGENTS_*`, `AGENTICDOME_CLAUDE_*`, `AGENTICDOME_SMOLAGENTS_*`, `AGENTICDOME_AGNO_*`, `AGENTICDOME_BEDROCK_*`, `AGENTICDOME_GOOGLE_ADK_*`, and `AGENTICDOME_MCP_*`.
|
|
317
|
+
Every framework adapter exposes the same family of local hardening controls, prefixed per adapter: `AGENTICDOME_CREWAI_*`, `AGENTICDOME_PYDANTICAI_*`, `AGENTICDOME_LANGGRAPH_*`, `AGENTICDOME_MSAF_*` (Microsoft Agent Framework), `AGENTICDOME_AUTOGEN_*`, `AGENTICDOME_FOUNDRY_*`, `AGENTICDOME_OPENAI_AGENTS_*`, `AGENTICDOME_CLAUDE_*`, `AGENTICDOME_SMOLAGENTS_*`, `AGENTICDOME_AGNO_*`, `AGENTICDOME_BEDROCK_*`, `AGENTICDOME_GOOGLE_ADK_*`, and `AGENTICDOME_MCP_*`.
|
|
309
318
|
|
|
310
319
|
**Common per-adapter pattern** (substitute the prefix for your adapter):
|
|
311
320
|
|
|
@@ -383,6 +392,7 @@ One table, one decision. Find your runtime, apply the required code action, and
|
|
|
383
392
|
| [PydanticAI](#pydanticai) | `agenticdome_sdk.pydantic` | Module where each `Agent(...)` and tool is constructed | `CyberSecFirewall(...)` + `create_hooks()`, `install_native_hooks(agent)`, or `attach_to_agent(agent)` | `@firewall.secure_tool(...)` with optional `tool_schema` validation |
|
|
384
393
|
| [LangGraph](#langgraph) | `agenticdome_sdk.langgraph` | Module where `StateGraph` or LangChain `create_agent()` is assembled | Add `input_node()` / `transition_node()` / `graph_transition_node()` / `output_node()`, or `as_langchain_middleware()` | `wrap_agent_node()`, `wrap_tool_node()`, `security_route()` for blocked edges |
|
|
385
394
|
| [Microsoft Agent Framework](#microsoft-agent-framework) | `agenticdome_sdk.microsoft_agent_framework` | Module where agents, workflows, tools, or middleware are declared | `create_middleware()`, `install_on_agent()`, or `run_agent_securely()` | `@firewall.secure_tool`, `wrap_tool_handler`, `secure_delegated_tool`, `wrap_delegated_tool_handler` |
|
|
395
|
+
| [Microsoft AutoGen](#microsoft-autogen) | `agenticdome_sdk.autogen` | AgentChat teams/Core runtimes; legacy 0.2 ConversableAgent loops | `wrap_team()`, `create_intervention_handler()`, `create_termination_condition()`, `attach_agentchat_agent()`, or `attach_conversable_agent()` | Core `FunctionCall` authorization plus inherited `wrap_tool_handler()` / `secure_tool()` |
|
|
386
396
|
| [Microsoft AI Foundry](#microsoft-ai-foundry) | `agenticdome_sdk.microsoft_ai_foundry` | Module handling Foundry runs, function calls, or client construction | `create_middleware()`, `install_on_client()`, or `run_secure()` | `wrap_tool_executor()`, `@firewall.secure_tool(...)`, `before_tool_call()`, delegation verifiers |
|
|
387
397
|
| [OpenAI Agents SDK](#openai-agents-sdk) | `agenticdome_sdk.openai_agents` | Module where `Agent`, `Runner.run(...)`, `@function_tool`, guardrails, or handoffs are declared | `run_agent_securely()`, `run_agent_stream_securely()`, `create_input_guardrail()`, `create_output_guardrail()` | `wrap_tool_handler()`, `wrap_delegated_tool_handler()`, `@firewall.secure_tool(...)`, handoff verifiers |
|
|
388
398
|
| [Claude Agent SDK](#claude-agent-sdk) | `agenticdome_sdk.claude` | Module constructing `ClaudeAgentOptions`, `ClaudeSDKClient`, SDK MCP tools, or `query()` | `install_on_options()` plus `run_client_securely()`, or `secure_query()` | Native `PreToolUse`/`PostToolUse` hooks, `wrap_tool_handler()`, and `secure_sdk_tool()` |
|
|
@@ -912,6 +922,108 @@ from agenticdome_sdk.microsoft_agent_framework import (
|
|
|
912
922
|
|
|
913
923
|
---
|
|
914
924
|
|
|
925
|
+
### Microsoft AutoGen
|
|
926
|
+
|
|
927
|
+
AutoGen is Microsoft's open-source conversational multi-agent framework and is now community-managed in maintenance mode; Microsoft Agent Framework is the recommended successor for new systems. AgenticDome supports current AutoGen AgentChat/Core applications and existing legacy `ConversableAgent` deployments so teams can migrate without losing runtime enforcement.
|
|
928
|
+
|
|
929
|
+
```bash
|
|
930
|
+
# AutoGen AgentChat requires Python 3.10+.
|
|
931
|
+
pip install "agenticdome-python-sdk[autogen]"
|
|
932
|
+
```
|
|
933
|
+
|
|
934
|
+
**Protect a current AgentChat team** — the wrapper screens the initial task, every streamed team event, and final messages while retaining the underlying Team API:
|
|
935
|
+
|
|
936
|
+
```python
|
|
937
|
+
from autogen_agentchat.teams import RoundRobinGroupChat
|
|
938
|
+
from agenticdome_sdk.autogen import AgenticDomeAutoGenFirewall
|
|
939
|
+
|
|
940
|
+
firewall = AgenticDomeAutoGenFirewall()
|
|
941
|
+
team = RoundRobinGroupChat([planner, researcher, payments_specialist], max_turns=12)
|
|
942
|
+
secure_team = firewall.wrap_team(
|
|
943
|
+
team,
|
|
944
|
+
session_id="sess_prod_01J4X",
|
|
945
|
+
agent_id="customer_operations_team",
|
|
946
|
+
policy_context={"request_purpose": "customer_support"},
|
|
947
|
+
)
|
|
948
|
+
|
|
949
|
+
result = await secure_team.run(task=user_prompt)
|
|
950
|
+
```
|
|
951
|
+
|
|
952
|
+
**Authorize AutoGen Core tool traffic at the runtime boundary** — current AutoGen sends `FunctionCall` messages to tool agents, so the intervention handler is a stronger boundary than patching an individual assistant:
|
|
953
|
+
|
|
954
|
+
```python
|
|
955
|
+
from autogen_core import SingleThreadedAgentRuntime
|
|
956
|
+
|
|
957
|
+
handler = firewall.create_intervention_handler(
|
|
958
|
+
session_id="sess_prod_01J4X",
|
|
959
|
+
agent_id="autogen_planner",
|
|
960
|
+
)
|
|
961
|
+
runtime = SingleThreadedAgentRuntime(intervention_handlers=[handler])
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
**Freeze a group chat on behavioral drift** — compose the AgenticDome condition with AutoGen's normal termination conditions:
|
|
965
|
+
|
|
966
|
+
```python
|
|
967
|
+
agenticdome_stop = firewall.create_termination_condition(
|
|
968
|
+
session_id="sess_prod_01J4X",
|
|
969
|
+
agent_id="customer_operations_team",
|
|
970
|
+
)
|
|
971
|
+
team = RoundRobinGroupChat(
|
|
972
|
+
[planner, researcher, payments_specialist],
|
|
973
|
+
termination_condition=agenticdome_stop | normal_stop,
|
|
974
|
+
max_turns=12,
|
|
975
|
+
)
|
|
976
|
+
```
|
|
977
|
+
|
|
978
|
+
Family 2 policy receives a bounded rolling conversation window digest, participant lineage, semantic-deviation evaluation request, and tool-call frequency. A blocked cross-agent message or excessive tool rate freezes the local session, reports a trust incident, and advances revocation state for the emitting agent before an external action can run.
|
|
979
|
+
|
|
980
|
+
**Existing AutoGen 0.2 deployments** — attach to the legacy `ConversableAgent.send()`, `receive()`, `a_send()`, and `a_receive()` lifecycles:
|
|
981
|
+
|
|
982
|
+
Keep the customer's already-certified legacy AutoGen dependency in place and install the dependency-light base SDK (do not use the `[autogen]` extra, because that extra deliberately installs the current AgentChat release):
|
|
983
|
+
|
|
984
|
+
```bash
|
|
985
|
+
pip install agenticdome-python-sdk
|
|
986
|
+
```
|
|
987
|
+
|
|
988
|
+
```python
|
|
989
|
+
assistant = firewall.attach_conversable_agent(
|
|
990
|
+
assistant,
|
|
991
|
+
session_id="sess_prod_01J4X",
|
|
992
|
+
agent_id="legacy_autogen_assistant",
|
|
993
|
+
)
|
|
994
|
+
user_proxy = firewall.attach_conversable_agent(
|
|
995
|
+
user_proxy,
|
|
996
|
+
session_id="sess_prod_01J4X",
|
|
997
|
+
agent_id="legacy_autogen_user_proxy",
|
|
998
|
+
)
|
|
999
|
+
```
|
|
1000
|
+
|
|
1001
|
+
Wrap side-effecting local tools as well; conversation screening does not replace authorization at the execution boundary:
|
|
1002
|
+
|
|
1003
|
+
```python
|
|
1004
|
+
secure_refund = firewall.wrap_tool_handler(
|
|
1005
|
+
tool_name="payments.refund.create",
|
|
1006
|
+
tool_platform="payments",
|
|
1007
|
+
handler=raw_refund,
|
|
1008
|
+
session_id="sess_prod_01J4X",
|
|
1009
|
+
agent_id="payments_specialist",
|
|
1010
|
+
)
|
|
1011
|
+
```
|
|
1012
|
+
|
|
1013
|
+
```bash
|
|
1014
|
+
export AGENTICDOME_PLATFORM="autogen"
|
|
1015
|
+
export AGENTICDOME_PRODUCTION_MODE="true"
|
|
1016
|
+
export AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD="true"
|
|
1017
|
+
export AGENTICDOME_AUTOGEN_CONVERSATION_WINDOW="12"
|
|
1018
|
+
export AGENTICDOME_AUTOGEN_MAX_TOOL_CALLS_PER_WINDOW="8"
|
|
1019
|
+
export AGENTICDOME_AUTOGEN_FREEZE_ON_BLOCK="true"
|
|
1020
|
+
export AGENTICDOME_AUTOGEN_REVOKE_ON_FREEZE="true"
|
|
1021
|
+
```
|
|
1022
|
+
|
|
1023
|
+
Official references: [AutoGen project status and migration guidance](https://github.com/microsoft/autogen) · [AgentChat teams](https://microsoft.github.io/autogen/stable/reference/python/autogen_agentchat.teams.html) · [Core intervention handlers](https://microsoft.github.io/autogen/dev/user-guide/core-user-guide/cookbook/tool-use-with-intervention.html) · [Legacy 0.2 conversational agents](https://microsoft.github.io/autogen/0.2/docs/Use-Cases/agent_chat/)
|
|
1024
|
+
|
|
1025
|
+
---
|
|
1026
|
+
|
|
915
1027
|
### Microsoft AI Foundry
|
|
916
1028
|
|
|
917
1029
|
For services that call Foundry agents, handle function-call requests from Foundry, execute local function tools, or use `FoundryChatClient` with local tools.
|
|
@@ -2265,7 +2377,7 @@ source .venv/bin/activate
|
|
|
2265
2377
|
|
|
2266
2378
|
python -m pip install --upgrade pip setuptools wheel
|
|
2267
2379
|
python -m pip install -e ".[dev]"
|
|
2268
|
-
python -m pip install -e ".[crewai,pydanticai,langgraph,microsoft,foundry,agno,openai-agents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2380
|
+
python -m pip install -e ".[crewai,pydanticai,langgraph,microsoft,autogen,foundry,agno,openai-agents,claude,smolagents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2269
2381
|
|
|
2270
2382
|
python -m pytest -q
|
|
2271
2383
|
rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
|
|
@@ -2273,7 +2385,7 @@ python -m build
|
|
|
2273
2385
|
python -m twine check dist/*
|
|
2274
2386
|
```
|
|
2275
2387
|
|
|
2276
|
-
`python -m pytest -q` runs the core SDK tests
|
|
2388
|
+
`python -m pytest -q` runs the core SDK tests and every dependency-light framework adapter test in one pass — the normal offline full-suite command. Adapter tests use fake framework/client boundaries where possible, so CI verifies authorization, delegation-token handling, sanitized tool arguments, output DLP, streaming sanitization, rate limits, and fail-open/fail-closed behavior without live third-party services. Private release automation separately validates package metadata and rejects internal-only files from both wheel and source-distribution artifacts.
|
|
2277
2389
|
|
|
2278
2390
|
### Framework Test Matrix
|
|
2279
2391
|
|
|
@@ -2287,11 +2399,12 @@ python -m pytest -q tests/test_langgraph_integration.py
|
|
|
2287
2399
|
| Runtime / integration | Test command | Coverage focus |
|
|
2288
2400
|
| :--- | :--- | :--- |
|
|
2289
2401
|
| Core SDK client | `python -m pytest -q tests/test_client.py` | Request validation, headers, guardrail calls, A2A/MCP JSON-RPC calls, Mesh DLP, HTTP errors, JSON handling |
|
|
2290
|
-
|
|
|
2402
|
+
| Attack demos | `python -m pytest -q tests/test_attack_demo.py` | Offline vulnerable-vs-protected CLI coverage, including AutoGen, Claude Agent SDK, and Hugging Face smolagents |
|
|
2291
2403
|
| CrewAI | `python -m pytest -q tests/test_crewai_integration.py` | Prompt/tool hooks, handoff token injection, specialist verification, output redaction, schema checks, rate limits, retries, streaming DLP |
|
|
2292
2404
|
| PydanticAI | `python -m pytest -q tests/test_pydanticai_integration.py` | Agent hooks, secure tools, sanitized arguments, token-store fallback, production session enforcement, rate limits, retries, streaming output |
|
|
2293
2405
|
| LangGraph / LangChain | `python -m pytest -q tests/test_langgraph_integration.py` | Graph input, transition, tool, retrieval, middleware, security routing, token consumption, output DLP, streaming events |
|
|
2294
2406
|
| Microsoft Agent Framework | `python -m pytest -q tests/test_microsoft_agent_framework_integration.py` | Tool/run boundaries, delegated tool verification, middleware install helpers, identity context, Copilot enforcement hooks, streaming output |
|
|
2407
|
+
| Microsoft AutoGen | `python -m pytest -q tests/test_autogen_integration.py` | Current AgentChat team/Core interception, legacy send/receive hooks, rolling Family 2 context, session freeze, trust incident and revocation escalation |
|
|
2295
2408
|
| Microsoft AI Foundry | `python -m pytest -q tests/test_microsoft_ai_foundry_integration.py` | Prompt threat contracts, local tool executors, run boundaries, bearer/API-key configuration, delegated execution, circuit breaker, stream DLP |
|
|
2296
2409
|
| OpenAI Agents SDK | `python -m pytest -q tests/test_openai_agents_integration.py` | Runner wrappers, guardrail helpers, function-tool wrappers, handoff/delegated tools, HMAC token storage, schema checks, retries, streaming output |
|
|
2297
2410
|
| Claude Agent SDK | `python -m pytest -q tests/test_claude_integration.py` | Native prompt/tool hooks, tool-output replacement, secure query responses, decision-token binding and one-time consumption |
|
|
@@ -2304,36 +2417,36 @@ python -m pytest -q tests/test_langgraph_integration.py
|
|
|
2304
2417
|
|
|
2305
2418
|
### Release gates
|
|
2306
2419
|
|
|
2307
|
-
**Metadata and artifact validation
|
|
2420
|
+
**Metadata and artifact validation:**
|
|
2308
2421
|
|
|
2309
2422
|
```bash
|
|
2310
|
-
python -m pytest -q tests/test_packaging_contract.py
|
|
2311
2423
|
rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
|
|
2312
2424
|
python -m build
|
|
2313
2425
|
python -m twine check dist/*
|
|
2314
2426
|
```
|
|
2315
2427
|
|
|
2428
|
+
The private release pipeline performs additional package-contract and forbidden-file checks before upload.
|
|
2429
|
+
|
|
2316
2430
|
**Full offline release gate** across all supported Python integrations:
|
|
2317
2431
|
|
|
2318
2432
|
```bash
|
|
2319
|
-
python -m pip install -e ".[dev,crewai,pydanticai,langgraph,microsoft,foundry,agno,openai-agents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2433
|
+
python -m pip install -e ".[dev,crewai,pydanticai,langgraph,microsoft,autogen,foundry,agno,openai-agents,claude,smolagents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2320
2434
|
python -m pytest -q
|
|
2321
2435
|
rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
|
|
2322
2436
|
python -m build
|
|
2323
2437
|
python -m twine check dist/*
|
|
2324
2438
|
```
|
|
2325
2439
|
|
|
2326
|
-
**Focused verification** —
|
|
2440
|
+
**Focused verification** — optional live tenant smoke tests:
|
|
2327
2441
|
|
|
2328
2442
|
```bash
|
|
2329
|
-
python -m pytest -q tests/
|
|
2443
|
+
python -m pytest -q tests/test_live_tenant.py
|
|
2330
2444
|
```
|
|
2331
2445
|
|
|
2332
2446
|
| Part | Meaning |
|
|
2333
2447
|
| :--- | :--- |
|
|
2334
2448
|
| `python -m pytest` | Runs `pytest` using the current Python environment |
|
|
2335
2449
|
| `-q` | Quiet mode — compact results instead of verbose test names |
|
|
2336
|
-
| `tests/test_packaging_contract.py` | Packaging and release-quality checks: `pyproject.toml` metadata, minimal `setup.py` shim, public imports, `.gitignore`, `MANIFEST.in`, README verification coverage |
|
|
2337
2450
|
| `tests/test_live_tenant.py` | Live AgenticDome tenant smoke tests — skipped by default, only runs when explicitly enabled |
|
|
2338
2451
|
|
|
2339
2452
|
**Live tenant release gate** — against a real AgenticDome tenant:
|