agenticdome-python-sdk 1.2.10__tar.gz → 1.2.11__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.10/agenticdome_python_sdk.egg-info → agenticdome_python_sdk-1.2.11}/PKG-INFO +52 -181
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/README.md +51 -180
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11/agenticdome_python_sdk.egg-info}/PKG-INFO +52 -181
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/SOURCES.txt +0 -1
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/pyproject.toml +1 -1
- agenticdome_python_sdk-1.2.10/tests/test_live_tenant.py +0 -113
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/LICENSE +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/MANIFEST.in +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/entry_points.txt +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/requires.txt +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/__init__.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/_framework_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/_mode.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/agno.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/autogen.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/aws_bedrock.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/claude.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/client.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/crewai.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/demo.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/google_adk.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/identity.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/langgraph.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/llamaindex.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/mcp_host.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/microsoft_agent_framework.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/microsoft_ai_foundry.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/openai_agents.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/proof.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/pydantic.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/simulation.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/smolagents.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/PRODUCTION_INTEGRATION.md +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/README.md +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/attack_demo.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/crewai_agenticdome_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/README.md +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/_shared.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/agno.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/autogen.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/aws_bedrock.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/claude_agent_sdk.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/crewai.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/custom_python.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/google_adk.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/langgraph.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/llamaindex.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/mcp.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/microsoft_agent_framework.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/microsoft_ai_foundry.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/openai_agents.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/pydanticai.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/smolagents.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/langgraph_agenticdome_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/local_simulation_gallery.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/setup.cfg +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/setup.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_agno_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_attack_demo.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_autogen_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_aws_bedrock_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_claude_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_client.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_crewai_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_execution_broker.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_google_adk_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_identity_context.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_langgraph_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_llamaindex_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_local_simulation.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_mcp_host_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_microsoft_agent_framework_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_microsoft_ai_foundry_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_openai_agents_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_pydanticai_integration.py +0 -0
- {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/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.11
|
|
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
|
|
@@ -111,6 +111,8 @@ Dynamic: license-file
|
|
|
111
111
|
[](https://pypi.org/project/agenticdome-python-sdk/)
|
|
112
112
|
[](#license)
|
|
113
113
|
|
|
114
|
+
[Source and examples](https://github.com/agenticdome/agenticdome-python-sdk) · [Issue tracker](https://github.com/agenticdome/agenticdome-python-sdk/issues) · [PyPI package](https://pypi.org/project/agenticdome-python-sdk/)
|
|
115
|
+
|
|
114
116
|
> **Production-grade security guardrails, DLP, tool authorization, and cryptographically verified multi-agent delegation for Python autonomous AI runtimes.**
|
|
115
117
|
|
|
116
118
|
`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 — using the tenant's assigned AgenticDome runtime sidecar.
|
|
@@ -188,7 +190,7 @@ result = crew.kickoff() # hostile prompts, unsafe tools, and rogue
|
|
|
188
190
|
- [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) · [Claude Agent SDK](#claude-agent-sdk) · [Hugging Face smolagents](#hugging-face-smolagents) · [Agno](#agno) · [Google ADK](#google-adk) · [LlamaIndex](#llamaindex) · [AWS Bedrock](#aws-bedrock) · [MCP Host / Gateway](#mcp-host--gateway)
|
|
189
191
|
9. [Core SDK Client (Custom Runtimes)](#core-sdk-client-custom-runtimes)
|
|
190
192
|
10. [Production Deployment](#production-deployment)
|
|
191
|
-
11. [
|
|
193
|
+
11. [Source Installation and Verification](#source-installation-and-verification)
|
|
192
194
|
12. [License](#license)
|
|
193
195
|
|
|
194
196
|
---
|
|
@@ -203,7 +205,7 @@ An agent can be hijacked while holding valid tokens, approved tools, and fully a
|
|
|
203
205
|
| **Tool & skill authorization** | Unauthorized or out-of-policy tool calls, evaluated on agent identity, tool name, arguments, session, source metadata, and delegation chain | Before tool execution |
|
|
204
206
|
| **Cryptographic delegation handoffs** | Confused-deputy attacks, lateral privilege escalation, stolen-token replay between agents | At every manager→specialist handoff |
|
|
205
207
|
| **Inline output DLP** | Leakage of PII, emails, phone numbers, API keys, access tokens, cloud credentials, corporate secrets, compliance-sensitive records | Before output is persisted, displayed, or re-enters the agent loop |
|
|
206
|
-
| **Fail-safe runtime behavior** | Silent security bypass when the
|
|
208
|
+
| **Fail-safe runtime behavior** | Silent security bypass when the assigned runtime is unavailable | Configurable fail-closed (production) / fail-open (dev) |
|
|
207
209
|
|
|
208
210
|
**Delegation tokens are the differentiator.** Every authorized handoff issues a decision token that binds the originating human subject (when present), the ordered and nested agent actor chain, source manager and target specialist, exact tool name and arguments, session ID, trace and lineage root/parent IDs, intent digest, policy binding, authorized scopes, trust epochs, tenant context, and the policy decision itself. Execution verification consumes the server-side call budget and checks revocation state — a token authorizes one exact action, once.
|
|
209
211
|
|
|
@@ -238,50 +240,25 @@ client.a2a_verify_decision_token_rpc(
|
|
|
238
240
|
|
|
239
241
|
## How It Works
|
|
240
242
|
|
|
241
|
-
AgenticDome uses a **hybrid split-plane architecture**. Your
|
|
243
|
+
AgenticDome uses a **hybrid split-plane architecture**. Your application executes agents, tools and workflows. The SDK protects the application-controlled boundaries and sends live policy checks to the tenant's assigned runtime sidecar. The management console distributes configuration to that runtime out of band; it is not the per-action SDK endpoint.
|
|
242
244
|
|
|
243
245
|
```text
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
| 2. Tool call |
|
|
261
|
-
v |
|
|
262
|
-
+-----------------------------------+ 4. verdict / token enforcement |
|
|
263
|
-
| AgenticDome Python Shield |-------------------------------------- -+
|
|
264
|
-
+-----------------------------------+ |
|
|
265
|
-
| if delegation detected |
|
|
266
|
-
v |
|
|
267
|
-
+---------------------------------------------+ validate token |
|
|
268
|
-
| Distributed Shared Token Store |--------------------------- --+
|
|
269
|
-
| InMemory lock / Redis multi-worker cache |
|
|
270
|
-
+---------------------------------------------+
|
|
271
|
-
|
|
|
272
|
-
| 3. Execute tool / skill
|
|
273
|
-
v
|
|
274
|
-
+------------------------+
|
|
275
|
-
| Specialized Workforce |
|
|
276
|
-
+------------------------+
|
|
277
|
-
|
|
|
278
|
-
| 5. Output review
|
|
279
|
-
v
|
|
280
|
-
+---------------------------+
|
|
281
|
-
| Egress DLP Firewall |
|
|
282
|
-
| PII / secrets filtering |
|
|
283
|
-
+---------------------------+
|
|
284
|
-
```
|
|
246
|
+
Management console / control plane
|
|
247
|
+
|
|
|
248
|
+
| policy and tenant configuration (out of band)
|
|
249
|
+
v
|
|
250
|
+
Tenant-assigned runtime sidecar <------ live policy checks ------+
|
|
251
|
+
| |
|
|
252
|
+
+---------------- verdict / authorization -------------->|
|
|
253
|
+
|
|
|
254
|
+
Customer application |
|
|
255
|
+
user input -> agent -> tool / MCP -> agent -> output |
|
|
256
|
+
^ ^ ^ |
|
|
257
|
+
+---------+--------------------+------------------+
|
|
258
|
+
AgenticDome SDK protection boundaries
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
The SDK must be attached in application code; setting environment variables alone does not intercept a framework. The assigned sidecar authenticates the tenant and evaluates live requests. Tools still execute in the customer's environment or selected provider unless a separate execution service has been deliberately configured.
|
|
285
262
|
|
|
286
263
|
### Who does what
|
|
287
264
|
|
|
@@ -289,8 +266,9 @@ AgenticDome uses a **hybrid split-plane architecture**. Your local Python runtim
|
|
|
289
266
|
| :--- | :--- | :--- |
|
|
290
267
|
| **Enterprise / organization** | Hosts the local agent runtime. Uses the AgenticDome console to create policies, obtain a Tenant ID, generate API keys, and monitor security events. | Paid subscriber (SaaS license or API volume) |
|
|
291
268
|
| **Agent / tool developer** | Builds tools, skills, agents, and workflow components. Uses the SDK to support secure tool calls, delegation metadata, and DLP-aware outputs. | Free ecosystem partner — no subscription required |
|
|
292
|
-
| **This Python SDK** | Runs inside the
|
|
293
|
-
| **
|
|
269
|
+
| **This Python SDK** | Runs inside the application process. Protects supported framework boundaries, calls the assigned runtime sidecar, and enforces returned policy results. | Runtime security utility |
|
|
270
|
+
| **Assigned runtime sidecar** | Authenticates the tenant and evaluates live guardrail, tool, delegation and output requests using distributed policy. | Runtime enforcement service |
|
|
271
|
+
| **Management console / control plane** | Manages tenant configuration, policy distribution, governance workflows and evidence. It is not the SDK's per-action API URL. | Management plane |
|
|
294
272
|
|
|
295
273
|
---
|
|
296
274
|
|
|
@@ -396,7 +374,7 @@ Some adapters are dependency-light at import time: Google ADK, LlamaIndex, Bedro
|
|
|
396
374
|
|
|
397
375
|
### Framework-version compatibility
|
|
398
376
|
|
|
399
|
-
AgenticDome supports framework versions
|
|
377
|
+
AgenticDome supports framework versions inside the dependency ranges declared by the published package. Check the package metadata and compatibility table before upgrading an integration, especially for multi-package stacks such as LangGraph/LangChain.
|
|
400
378
|
|
|
401
379
|
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.
|
|
402
380
|
|
|
@@ -492,7 +470,7 @@ export AGENTICDOME_PRODUCTION_MODE="false" # production hardening (st
|
|
|
492
470
|
| `AGENTICDOME_HANDOFF_TOKEN_TTL_S` | integer | `900` | Delegation token TTL in seconds. |
|
|
493
471
|
| `AGENTICDOME_REDIS_URL` | string | empty | Optional Redis connection URL for distributed token storage. |
|
|
494
472
|
| `AGENTICDOME_REDIS_KEY_PREFIX` | string | framework-specific | Redis key prefix. |
|
|
495
|
-
| `AGENTICDOME_TOKEN_HMAC_SECRET` | string | empty | Optional
|
|
473
|
+
| `AGENTICDOME_TOKEN_HMAC_SECRET` | string | empty | Optional secret-manager value used by the SDK to protect shared delegation state. Applications should not inspect or construct that state. |
|
|
496
474
|
| `AGENTICDOME_PRODUCTION_MODE` | boolean | `false` | Enables production hardening such as stable session ID enforcement. |
|
|
497
475
|
| `AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD` | boolean | `true` | Requires a stable session/run/trace ID when production mode is enabled. |
|
|
498
476
|
| `AGENTICDOME_CLOUD_PROVIDER` | string | empty | Optional cloud/provider label added to policy context. |
|
|
@@ -599,7 +577,7 @@ For a shorter operator/developer handoff, use the [production integration playbo
|
|
|
599
577
|
| [Google ADK](#google-adk) | `agenticdome_sdk.google_adk` | Module where `LlmAgent(...)` or ADK plugins are declared | `build_callback_kwargs()`, `create_plugin()`, or `install_on_agent(...)` | `wrap_tool_handler()` or `@firewall.secure_tool(...)` |
|
|
600
578
|
| [LlamaIndex](#llamaindex) | `agenticdome_sdk.llamaindex` | Module where tools, query engines, retrievers, callbacks, or agents are assembled | `run_query_securely()`, `wrap_query_engine()`, `wrap_retriever()`, `create_node_postprocessor()`, `create_callback_handler()` | `wrap_tool_function()`, `to_function_tool()`, `@firewall.secure_tool(...)`, handoff verifiers |
|
|
601
579
|
| [AWS Bedrock](#aws-bedrock) | `agenticdome_sdk.aws_bedrock` | Module calling `converse(...)`, `invoke_model(...)`, `invoke_agent(...)`, action-group Lambdas, or retrieval | `converse_securely()`, `converse_stream_securely()`, `invoke_model_securely()`, `invoke_model_with_response_stream_securely()`, `invoke_agent_securely()` | `wrap_tool_handler()`, `@firewall.secure_tool(...)`, `wrap_action_group_lambda()`, delegation verifiers |
|
|
602
|
-
| [MCP host / gateway](#mcp-host--gateway) | `agenticdome_sdk.mcp_host` | The JSON-RPC gateway/proxy function that forwards MCP requests | `preflight_request()` or `forward_with_firewall()` around the forwarder | `authorize_manager_handoff()
|
|
580
|
+
| [MCP host / gateway](#mcp-host--gateway) | `agenticdome_sdk.mcp_host` | The JSON-RPC gateway/proxy function that forwards MCP requests | `preflight_request()` or `forward_with_firewall()` around the forwarder | `authorize_manager_handoff()` and `verify_decision_token_if_present()`; SDK-managed security metadata never reaches the upstream server |
|
|
603
581
|
| [Custom Python](#core-sdk-client-custom-runtimes) | `agenticdome_sdk.client` | Your API handler, gateway, router, or tool executor | `guardrail_validate()` before prompts/tools; `mesh_validate()` before returning output | `a2a_authorize_tool()` and `a2a_verify_decision_token_rpc()` for delegation |
|
|
604
582
|
|
|
605
583
|
In production, wire AgenticDome at **every** local boundary your process controls: prompt ingress, tool execution, delegation handoff, specialist execution, and output egress.
|
|
@@ -670,12 +648,12 @@ def lookup_customer(agent, customer_id: str):
|
|
|
670
648
|
return crm.get_customer(customer_id)
|
|
671
649
|
```
|
|
672
650
|
|
|
673
|
-
**Security flow:** (1) prompts are screened before the LLM is called; (2) tool name, clean arguments, session context, agent identity, and policy metadata are validated before execution; (3) manager→specialist delegation is authorized and can return a decision token; (4) the specialist's token is verified
|
|
651
|
+
**Security flow:** (1) prompts are screened before the LLM is called; (2) tool name, clean arguments, session context, agent identity, and policy metadata are validated before execution; (3) manager→specialist delegation is authorized and can return a decision token; (4) the specialist's token is verified through the assigned runtime and consumed once using the configured SDK state store; (5) output is reviewed and can be redacted, blocked, or preserved as structured output before leaving the runtime.
|
|
674
652
|
|
|
675
653
|
<details>
|
|
676
654
|
<summary>CrewAI capabilities, configuration, and imports</summary>
|
|
677
655
|
|
|
678
|
-
Supports: prompt screening before LLM calls · direct tool authorization · manager-to-specialist handoff authorization with explicit target metadata · specialist-side delegated execution verification
|
|
656
|
+
Supports: prompt screening before LLM calls · direct tool authorization · manager-to-specialist handoff authorization with explicit target metadata · specialist-side delegated execution verification using SDK-managed, one-time shared state · sanitized tool arguments and optional schema validation · output DLP with structured-output preservation and sanitized JSON parsing · streaming sanitization via `sanitize_streaming_response()` · production mode with stable session ID requirements · local size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, and emergency deny lists.
|
|
679
657
|
|
|
680
658
|
```bash
|
|
681
659
|
export AGENTICDOME_PLATFORM="crewai"
|
|
@@ -793,7 +771,7 @@ async for safe_chunk in firewall.sanitize_streaming_response(
|
|
|
793
771
|
<details>
|
|
794
772
|
<summary>PydanticAI capabilities, version notes, and imports</summary>
|
|
795
773
|
|
|
796
|
-
Supports: prompt ingress checks via legacy lifecycle hooks where available · native `Hooks` capability creation through `create_hooks()` for current PydanticAI versions · tool perimeter authorization via `@firewall.secure_tool(...)` · Pydantic/JSON-schema argument validation and sanitized-argument execution ·
|
|
774
|
+
Supports: prompt ingress checks via legacy lifecycle hooks where available · native `Hooks` capability creation through `create_hooks()` for current PydanticAI versions · tool perimeter authorization via `@firewall.secure_tool(...)` · Pydantic/JSON-schema argument validation and sanitized-argument execution · manager/specialist delegation with SDK-managed, integrity-protected shared state · egress output DLP with correct `block_on_sensitive_output` semantics · structured-output preservation (sanitized JSON parsed back to dicts/lists) · stable session ID enforcement in production mode · local rate limits, size limits, retries, circuit breaker, audit logging, OpenTelemetry span events · streaming sanitization · identity-rich policy context from `ctx`, `deps`, or nested identity/principal objects · emergency deny lists.
|
|
797
775
|
|
|
798
776
|
Version notes: PydanticAI lifecycle hook APIs have evolved. Current PydanticAI documents `pydantic_ai.capabilities.Hooks` for lifecycle interception across runs, model requests, tool validation/execution, output processing, and event streams. Prefer `create_hooks()` / `install_native_hooks()` on current runtimes; keep `@firewall.secure_tool(...)` on sensitive tools as a hard enforcement boundary. If legacy lifecycle decorators are available, `attach_to_agent()` attaches prompt ingress and egress DLP hooks; if not, `@firewall.secure_tool(...)` still protects tool execution. `AGENTICDOME_BLOCK_ON_SENSITIVE_OUTPUT=true` means AgenticDome may ask Mesh to block sensitive output; the SDK only blocks when the policy response verdict is `BLOCKED`.
|
|
799
777
|
|
|
@@ -922,7 +900,7 @@ state["AgenticDome"] = {
|
|
|
922
900
|
}
|
|
923
901
|
```
|
|
924
902
|
|
|
925
|
-
Specialist execution is verified when the delegated tool call reaches `authorize_transition()` or a wrapped tool node.
|
|
903
|
+
Specialist execution is verified when the delegated tool call reaches `authorize_transition()` or a wrapped tool node. The SDK carries or recovers integrity-protected delegation state and consumes it once. Applications should use the public handoff/wrapper APIs rather than create, inspect or forward the SDK's internal metadata.
|
|
926
904
|
|
|
927
905
|
**Hardening helpers** — policy-control sensitive graph edges; blocked states set `AgenticDome.route` and `next_agent_id` to `security_block`:
|
|
928
906
|
|
|
@@ -948,7 +926,7 @@ Use `sanitize_retrieval_documents()` before adding retrieved chunks to model con
|
|
|
948
926
|
<details>
|
|
949
927
|
<summary>LangGraph capabilities, interception notes, and imports</summary>
|
|
950
928
|
|
|
951
|
-
Supports: prompt ingress via `screen_input()` / `input_node()` · tool-call authorization via `authorize_transition()` / `transition_node()` · delegation authorization
|
|
929
|
+
Supports: prompt ingress via `screen_input()` / `input_node()` · tool-call authorization via `authorize_transition()` / `transition_node()` · delegation authorization from documented handoff fields · specialist-side verification using SDK-managed one-time state · sanitized tool-argument mutation before local execution · final message and tool-output DLP via `sanitize_output()` / `output_node()` · retrieval and streaming sanitization · graph transition authorization · `security_block` routing · wrappers for existing agent and tool nodes.
|
|
952
930
|
|
|
953
931
|
Interception notes: LangGraph is graph-native — reliable interception means inserting security nodes or wrapping nodes/tool nodes. LangChain's modern `create_agent()` supports a `middleware` parameter documented as the way to intercept model, tool, and agent-loop behavior; `as_langchain_middleware()` targets that style, and the adapter mutates sanitized tool arguments back into the tool request for local execution. For custom `StateGraph` workflows, implement middleware as graph nodes or wrappers at the boundaries you must enforce: before model input, before tool execution, before handoff execution, and before final output. Remote or provider-hosted tools that execute outside your Python process can only be guarded at the local request/response boundary.
|
|
954
932
|
|
|
@@ -1074,7 +1052,7 @@ secure_refund_handler = firewall.wrap_delegated_tool_handler(
|
|
|
1074
1052
|
<details>
|
|
1075
1053
|
<summary>Microsoft Agent Framework capabilities, configuration, notes, and imports</summary>
|
|
1076
1054
|
|
|
1077
|
-
Supports: prompt ingress via `screen_input()`, middleware hooks, or `run_agent_securely()` · function-tool authorization with
|
|
1055
|
+
Supports: prompt ingress via `screen_input()`, middleware hooks, or `run_agent_securely()` · function-tool authorization with sanitized-argument enforcement · manager-to-specialist delegation and specialist verification through public wrapper APIs · stable session ID enforcement for production · Entra/principal identity context propagation · output DLP with structured JSON preservation and optional response-object mutation · streaming sanitization · OpenTelemetry events and structured audit logging · local rate limits, size limits, retries, circuit breaker · optional Copilot / AI Foundry threat helper enforcement · shared multi-worker delegation state · emergency deny lists.
|
|
1078
1056
|
|
|
1079
1057
|
```bash
|
|
1080
1058
|
export AGENTICDOME_PLATFORM="microsoft_agent_framework_v1"
|
|
@@ -1092,7 +1070,7 @@ export AGENTICDOME_MSAF_OTEL_ENABLED="true"
|
|
|
1092
1070
|
# Optional local emergency controls:
|
|
1093
1071
|
# export AGENTICDOME_MSAF_EMERGENCY_BLOCK_TOOLS="payments.refund.create"
|
|
1094
1072
|
# export AGENTICDOME_MSAF_EMERGENCY_BLOCK_AGENTS="legacy_agent"
|
|
1095
|
-
# Optional
|
|
1073
|
+
# Optional integrity secret for SDK-managed shared delegation state:
|
|
1096
1074
|
# export AGENTICDOME_TOKEN_HMAC_SECRET="change-me"
|
|
1097
1075
|
# Optional Copilot / AI Foundry helper enforcement:
|
|
1098
1076
|
# export AGENTICDOME_ENABLE_COPILOT_THREAT_API="true"
|
|
@@ -1353,7 +1331,7 @@ async for safe_chunk in firewall.sanitize_streaming_response(
|
|
|
1353
1331
|
<details>
|
|
1354
1332
|
<summary>Microsoft AI Foundry capabilities, notes, and imports</summary>
|
|
1355
1333
|
|
|
1356
|
-
Supports: prompt/run validation via `validate_prompt_contract()`, `before_run()`, or `run_secure()` · middleware hooks via `create_middleware()` / `install_on_client()` · local function-tool analysis via `analyze_tool_execution()`, `before_tool_call()`, or `wrap_tool_executor()` · `@firewall.secure_tool(...)` for high-risk callables ·
|
|
1334
|
+
Supports: prompt/run validation via `validate_prompt_contract()`, `before_run()`, or `run_secure()` · middleware hooks via `create_middleware()` / `install_on_client()` · local function-tool analysis via `analyze_tool_execution()`, `before_tool_call()`, or `wrap_tool_executor()` · `@firewall.secure_tool(...)` for high-risk callables · lightweight JSON-schema validation and sanitized-argument execution · enterprise identity context propagation for Entra IDs, roles/scopes, Foundry project IDs, and Purview/sensitivity labels · production-mode stable session ID and output-sanitization requirements · output DLP through Mesh · structured-output preservation · local rate limits, size limits, retries, circuit breaker, audit logging, OpenTelemetry span events · streaming sanitization · optional handoff authorization and SDK-managed multi-worker verification · emergency deny lists.
|
|
1357
1335
|
|
|
1358
1336
|
Notes: Foundry function calling asks your application to execute local functions and return tool output — wrap that local execution before output is submitted back to Foundry. Production deployments should pass a stable `session_id`, `run_id`, `trace_id`, `conversation_id`, or `thread_id`; generated fallback IDs are for local development only. Pass Entra identity, roles/scopes, Foundry project IDs, and Purview/sensitivity labels on `ctx` or `policy_context` for identity-aware server-side policy. Hosted tools executing entirely inside a remote provider runtime can only be protected at the local request/response boundary. Threat-contract prompt and tool analysis additionally require `AGENTICDOME_BEARER_TOKEN`.
|
|
1359
1337
|
|
|
@@ -1411,7 +1389,7 @@ input_guardrail = firewall.create_input_guardrail()
|
|
|
1411
1389
|
output_guardrail = firewall.create_output_guardrail()
|
|
1412
1390
|
```
|
|
1413
1391
|
|
|
1414
|
-
**Secure a function tool** — wrap the local implementation before exposing it with `@function_tool`; sanitized arguments replace originals and
|
|
1392
|
+
**Secure a function tool** — wrap the local implementation before exposing it with `@function_tool`; sanitized arguments replace originals and SDK-managed security metadata is never passed to the business handler:
|
|
1415
1393
|
|
|
1416
1394
|
```python
|
|
1417
1395
|
from agents import function_tool
|
|
@@ -1456,7 +1434,7 @@ secure_refund_tool = firewall.wrap_delegated_tool_handler(
|
|
|
1456
1434
|
<details>
|
|
1457
1435
|
<summary>OpenAI Agents SDK capabilities, configuration, notes, and imports</summary>
|
|
1458
1436
|
|
|
1459
|
-
Supports: prompt ingress via `screen_input()`, `run_agent_securely()`, `run_agent_stream_securely()`, or `create_input_guardrail()` · function-tool authorization via `wrap_tool_handler()` / `@firewall.secure_tool(...)` ·
|
|
1437
|
+
Supports: prompt ingress via `screen_input()`, `run_agent_securely()`, `run_agent_stream_securely()`, or `create_input_guardrail()` · function-tool authorization via `wrap_tool_handler()` / `@firewall.secure_tool(...)` · sanitized arguments and optional schema validation · handoff authorization via `authorize_manager_handoff()` · specialist-side verification via `verify_specialist_execution()` and `wrap_delegated_tool_handler()` · SDK-managed one-time multi-worker delegation state · output DLP via `sanitize_output()` and `create_output_guardrail()` · streaming sanitization · structured-output preservation and sanitized JSON parsing · production mode with stable session IDs · size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, identity-rich policy context, emergency deny lists.
|
|
1460
1438
|
|
|
1461
1439
|
```bash
|
|
1462
1440
|
export AGENTICDOME_PLATFORM="openai_agents_sdk"
|
|
@@ -1567,7 +1545,7 @@ export AGENTICDOME_CLAUDE_EMERGENCY_BLOCK_TOOLS=""
|
|
|
1567
1545
|
export AGENTICDOME_CLAUDE_EMERGENCY_BLOCK_AGENTS=""
|
|
1568
1546
|
```
|
|
1569
1547
|
|
|
1570
|
-
Use `authorize_manager_handoff()` and `verify_specialist_execution()` when a manager delegates sensitive work. Configure
|
|
1548
|
+
Use `authorize_manager_handoff()` and `verify_specialist_execution()` when a manager delegates sensitive work. Configure the documented shared store and integrity secret when authorization and specialist execution can land on different workers. Claude hooks protect operations visible to the local SDK process; externally hosted services still require enforcement at their local gateway or MCP host.
|
|
1571
1549
|
|
|
1572
1550
|
Official references: [Claude Agent SDK Python](https://github.com/anthropics/claude-agent-sdk-python) · [Claude Agent SDK overview](https://platform.claude.com/docs/en/agent-sdk/overview)
|
|
1573
1551
|
|
|
@@ -1729,7 +1707,7 @@ async for safe_chunk in firewall.sanitize_streaming_response(
|
|
|
1729
1707
|
<details>
|
|
1730
1708
|
<summary>Agno capabilities, configuration, notes, and imports</summary>
|
|
1731
1709
|
|
|
1732
|
-
Supports: prompt ingress via `pre_hook` / `cybersec_pre_hook` · tool-call authorization via `pre_hook`, `tool_hook`, and `@firewall.secure_tool` ·
|
|
1710
|
+
Supports: prompt ingress via `pre_hook` / `cybersec_pre_hook` · tool-call authorization via `pre_hook`, `tool_hook`, and `@firewall.secure_tool` · sanitized arguments and optional schema validation · delegation authorization and specialist-side one-time verification through SDK-managed state · output DLP via `post_hook` / `cybersec_post_hook` with structured-output preservation · retrieved-context sanitization for Agno knowledge/RAG pipelines · streaming sanitization · production mode with stable session IDs · size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, identity-rich policy context, emergency deny lists.
|
|
1733
1711
|
|
|
1734
1712
|
```bash
|
|
1735
1713
|
export AGENTICDOME_PLATFORM="agno"
|
|
@@ -1803,7 +1781,7 @@ firewall.install_on_agent(agent) # attach to an existing agent
|
|
|
1803
1781
|
plugin = firewall.create_plugin() # plugin-style registration
|
|
1804
1782
|
```
|
|
1805
1783
|
|
|
1806
|
-
**Tool protection** — sanitized arguments replace originals and
|
|
1784
|
+
**Tool protection** — sanitized arguments replace originals and SDK-managed security metadata is never passed to the business handler; pass a Pydantic model, Pydantic v1 model, or JSON-schema-like dict to validate arguments:
|
|
1807
1785
|
|
|
1808
1786
|
```python
|
|
1809
1787
|
@firewall.secure_tool(tool_name="crm.customer.read", tool_platform="crm")
|
|
@@ -1818,7 +1796,7 @@ secured_lookup = firewall.wrap_tool_handler(
|
|
|
1818
1796
|
)
|
|
1819
1797
|
```
|
|
1820
1798
|
|
|
1821
|
-
**Multi-agent delegation** — the
|
|
1799
|
+
**Multi-agent delegation** — use the public handoff methods so the adapter manages authorization state and verifies delegated execution before the specialist runs the tool:
|
|
1822
1800
|
|
|
1823
1801
|
```python
|
|
1824
1802
|
record = await firewall.authorize_manager_handoff(
|
|
@@ -1841,7 +1819,7 @@ await firewall.verify_delegated_execution(
|
|
|
1841
1819
|
<details>
|
|
1842
1820
|
<summary>Google ADK capabilities, configuration, notes, and imports</summary>
|
|
1843
1821
|
|
|
1844
|
-
Supports: prompt screening via `before_model` · model output sanitization via `after_model` · tool argument authorization,
|
|
1822
|
+
Supports: prompt screening via `before_model` · model output sanitization via `after_model` · tool argument authorization, schema validation, and sanitized-argument enforcement via `before_tool` · tool result sanitization with structured JSON preservation via `after_tool` · lifecycle audit visibility via `before_agent` / `after_agent` · explicit wrappers via `wrap_tool_handler()` / `@firewall.secure_tool(...)` · manager/specialist handoff authorization with SDK-managed one-time state · streaming sanitization with a sliding review buffer · rate limits, size limits, retries/backoff, circuit breaker, structured audit logs, OpenTelemetry span events, identity-rich policy context, emergency deny lists.
|
|
1845
1823
|
|
|
1846
1824
|
```bash
|
|
1847
1825
|
export AGENTICDOME_PLATFORM="google_adk"
|
|
@@ -1865,7 +1843,7 @@ export AGENTICDOME_GOOGLE_ADK_OTEL_ENABLED="true"
|
|
|
1865
1843
|
# export AGENTICDOME_TOKEN_HMAC_SECRET="replace-with-secret-from-your-secret-manager"
|
|
1866
1844
|
```
|
|
1867
1845
|
|
|
1868
|
-
Notes: register callbacks, the plugin object, or tool wrappers — env config alone does not intercept ADK execution. Use async callback methods (`before_model`, `after_model`, `before_tool`, `after_tool`) when your ADK runner supports them; the `*_callback` sync methods are for synchronous configurations only. In production, provide stable ADK context values (`session_id`, `run_id`, `trace_id`, `conversation_id`, `request_id`) — otherwise the adapter fails closed when `AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD=true`. The SDK protects the local ADK callback boundary and returned content, not execution inside remote tools/services. Include Google Cloud identity and project context
|
|
1846
|
+
Notes: register callbacks, the plugin object, or tool wrappers — env config alone does not intercept ADK execution. Use async callback methods (`before_model`, `after_model`, `before_tool`, `after_tool`) when your ADK runner supports them; the `*_callback` sync methods are for synchronous configurations only. In production, provide stable ADK context values (`session_id`, `run_id`, `trace_id`, `conversation_id`, `request_id`) — otherwise the adapter fails closed when `AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD=true`. The SDK protects the local ADK callback boundary and returned content, not execution inside remote tools/services. Include Google Cloud identity and project context when available. Use the documented shared store and integrity secret for multi-worker or Kubernetes deployments.
|
|
1869
1847
|
|
|
1870
1848
|
```python
|
|
1871
1849
|
from agenticdome_sdk.google_adk import (
|
|
@@ -2170,7 +2148,7 @@ safe_retrieval = await firewall.sanitize_retrieval_result(
|
|
|
2170
2148
|
<details>
|
|
2171
2149
|
<summary>AWS Bedrock capabilities, configuration, notes, and imports</summary>
|
|
2172
2150
|
|
|
2173
|
-
Supports: prompt screening before `converse(...)`, `converse_stream(...)`, `invoke_model(...)`, `invoke_model_with_response_stream(...)`, and `invoke_agent(...)` · model output DLP before responses leave your application · streaming sanitization for ConverseStream and InvokeModelWithResponseStream events · provider-specific prompt/response parsing
|
|
2151
|
+
Supports: prompt screening before `converse(...)`, `converse_stream(...)`, `invoke_model(...)`, `invoke_model_with_response_stream(...)`, and `invoke_agent(...)` · model output DLP before responses leave your application · streaming sanitization for ConverseStream and InvokeModelWithResponseStream events · provider-specific prompt/response parsing · local tool-use and action-group authorization · sanitized arguments and optional schema validation · tool/action output review · knowledge-base retrieval sanitization at the node level · production mode with stable session IDs · AWS identity/resource context in policy decisions · size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, emergency deny lists · optional manager/specialist handoff through SDK-managed shared state.
|
|
2174
2152
|
|
|
2175
2153
|
```bash
|
|
2176
2154
|
export AGENTICDOME_PLATFORM="aws_bedrock"
|
|
@@ -2265,30 +2243,7 @@ response["result"] = await firewall.sanitize_mcp_result(
|
|
|
2265
2243
|
return response
|
|
2266
2244
|
```
|
|
2267
2245
|
|
|
2268
|
-
**Delegated execution** —
|
|
2269
|
-
|
|
2270
|
-
```python
|
|
2271
|
-
request = {
|
|
2272
|
-
"jsonrpc": "2.0",
|
|
2273
|
-
"id": "req-42",
|
|
2274
|
-
"method": "tools/call",
|
|
2275
|
-
"params": {
|
|
2276
|
-
"name": "payments.refund.create",
|
|
2277
|
-
"arguments": {
|
|
2278
|
-
"customer_id": "cust_123",
|
|
2279
|
-
"amount": 250,
|
|
2280
|
-
"_AgenticDome_decision_token": decision_token,
|
|
2281
|
-
"_AgenticDome_source_agent_id": "support_manager",
|
|
2282
|
-
},
|
|
2283
|
-
},
|
|
2284
|
-
}
|
|
2285
|
-
```
|
|
2286
|
-
|
|
2287
|
-
The third-party MCP server receives only the business arguments after preflight succeeds:
|
|
2288
|
-
|
|
2289
|
-
```python
|
|
2290
|
-
{"customer_id": "cust_123", "amount": 250}
|
|
2291
|
-
```
|
|
2246
|
+
**Delegated execution** — use the adapter's public handoff and verification methods. The SDK manages the authorization context and ensures that only approved business arguments are forwarded to the third-party MCP server. Applications should not construct or depend on the adapter's internal transport metadata.
|
|
2292
2247
|
|
|
2293
2248
|
If the gateway itself owns manager-to-specialist delegation, authorize the handoff first; the issued token is stored and consumed when specialist execution reaches the gateway:
|
|
2294
2249
|
|
|
@@ -2306,7 +2261,7 @@ await firewall.authorize_manager_handoff(
|
|
|
2306
2261
|
<details>
|
|
2307
2262
|
<summary>MCP capabilities, configuration, notes, and imports</summary>
|
|
2308
2263
|
|
|
2309
|
-
Supports: optional upstream prompt screening from host context · `tools/call` authorization via `mcp_guardrail_validate()` · authorization for
|
|
2264
|
+
Supports: optional upstream prompt screening from host context · `tools/call` authorization via `mcp_guardrail_validate()` · authorization for tool, resource, prompt and sampling methods · tool-list filtering according to policy · resource, prompt, sampling, tool, and streaming-output sanitization · delegated verification through public handoff methods · per-server policy context · sanitized business-argument forwarding · size limits, rate limiting and audit logging · Mesh output sanitization for supported MCP result shapes · fail-closed/fail-open behavior via `AGENTICDOME_FAIL_CLOSED`.
|
|
2310
2265
|
|
|
2311
2266
|
```bash
|
|
2312
2267
|
export AGENTICDOME_PLATFORM="mcp"
|
|
@@ -2550,7 +2505,7 @@ headers = client.enforcement_headers(
|
|
|
2550
2505
|
)
|
|
2551
2506
|
```
|
|
2552
2507
|
|
|
2553
|
-
|
|
2508
|
+
Receipt verification occurs on the assigned runtime and enforcement-gateway path. In enforce mode, an absent, invalid or action-mismatched receipt fails closed. Applications should use the public SDK response and header helpers rather than depend on internal receipt representation or service topology.
|
|
2554
2509
|
|
|
2555
2510
|
Framework adapters share this core client, but the application still owns the final executor boundary: pass the real destination/method and attach the returned headers where the framework invokes the external tool. Customers using an AgenticDome-managed sidecar install only the SDK; the deployment administrator operates Envoy, Tetragon/eBPF, SPIFFE, and sandbox infrastructure.
|
|
2556
2511
|
|
|
@@ -2576,7 +2531,7 @@ export AGENTICDOME_REDIS_URL="redis://redis.example.internal:6379/0"
|
|
|
2576
2531
|
export AGENTICDOME_REDIS_KEY_PREFIX="AgenticDome:runtime:handoff"
|
|
2577
2532
|
```
|
|
2578
2533
|
|
|
2579
|
-
|
|
2534
|
+
The SDK provides integrity-protected, one-time delegation state for supported shared-store deployments. Configure `AGENTICDOME_TOKEN_HMAC_SECRET` from a secret manager and let the SDK create and consume these records; applications should not construct or modify their internal representation.
|
|
2580
2535
|
|
|
2581
2536
|
### Production checklist
|
|
2582
2537
|
|
|
@@ -2603,9 +2558,9 @@ Plus, for every production deployment:
|
|
|
2603
2558
|
|
|
2604
2559
|
---
|
|
2605
2560
|
|
|
2606
|
-
##
|
|
2561
|
+
## Source Installation and Verification
|
|
2607
2562
|
|
|
2608
|
-
|
|
2563
|
+
Most customers should install the published package from PyPI. Contributors evaluating the public source can perform a network-free verification from the SDK root:
|
|
2609
2564
|
|
|
2610
2565
|
```bash
|
|
2611
2566
|
python3 -m venv .venv
|
|
@@ -2613,96 +2568,12 @@ source .venv/bin/activate
|
|
|
2613
2568
|
|
|
2614
2569
|
python -m pip install --upgrade pip setuptools wheel
|
|
2615
2570
|
python -m pip install -e ".[dev]"
|
|
2616
|
-
python -m pip install -e ".[crewai,pydanticai,langgraph,microsoft,autogen,foundry,agno,openai-agents,claude,smolagents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2617
|
-
|
|
2618
|
-
python -m pytest -q
|
|
2619
|
-
rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
|
|
2620
|
-
python -m build
|
|
2621
|
-
python -m twine check dist/*
|
|
2622
|
-
```
|
|
2623
|
-
|
|
2624
|
-
`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.
|
|
2625
|
-
|
|
2626
|
-
### Framework Test Matrix
|
|
2627
|
-
|
|
2628
|
-
Run one framework at a time with its matching test file. For a single-framework development loop:
|
|
2629
|
-
|
|
2630
|
-
```bash
|
|
2631
|
-
python -m pip install -e ".[langgraph]"
|
|
2632
|
-
python -m pytest -q tests/test_langgraph_integration.py
|
|
2633
|
-
```
|
|
2634
|
-
|
|
2635
|
-
| Runtime / integration | Test command | Coverage focus |
|
|
2636
|
-
| :--- | :--- | :--- |
|
|
2637
|
-
| 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 |
|
|
2638
|
-
| 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 |
|
|
2639
|
-
| Local simulation parity | `python -m pytest -q tests/test_local_simulation.py` | No-credential/no-network mode, production refusal, broker fail-closed behavior, installed demo catalog and constructor coverage for every supported Python adapter |
|
|
2640
|
-
| 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 |
|
|
2641
|
-
| 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 |
|
|
2642
|
-
| 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 |
|
|
2643
|
-
| 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 |
|
|
2644
|
-
| 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 |
|
|
2645
|
-
| 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 |
|
|
2646
|
-
| 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 |
|
|
2647
|
-
| 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 |
|
|
2648
|
-
| Hugging Face smolagents | `python -m pytest -q tests/test_smolagents_integration.py` | Native Tool wrapper, pre-execution CodeAgent scanning, idempotent attachment, managed-agent handoff verification, output DLP |
|
|
2649
|
-
| Agno | `python -m pytest -q tests/test_agno_integration.py` | Agent/team hooks, tool hooks, middleware/plugin helpers, delegated specialist execution, retrieved text sanitization, schema checks, stream DLP |
|
|
2650
|
-
| MCP host / gateway | `python -m pytest -q tests/test_mcp_host_integration.py` | JSON-RPC preflight, tool/resource/prompt authorization, private metadata stripping, delegated token verification, response filtering, forwarder DLP |
|
|
2651
|
-
| AWS Bedrock | `python -m pytest -q tests/test_aws_bedrock_integration.py` | Converse/InvokeModel wrappers, Bedrock Agents streams, action-group Lambda wrappers, retrieval DLP, tool authorization, handoff tokens, retries |
|
|
2652
|
-
| Google ADK | `python -m pytest -q tests/test_google_adk_integration.py` | Model/tool callbacks, plugin helpers, secure tools, delegated execution, sanitized args, production sessions, rate limits, retries, stream DLP |
|
|
2653
|
-
| LlamaIndex | `python -m pytest -q tests/test_llamaindex_integration.py` | FunctionTool/query/retrieval wrappers, callback handlers, secure tools, delegated execution, fail-open behavior, output DLP |
|
|
2654
|
-
|
|
2655
|
-
### Release gates
|
|
2656
|
-
|
|
2657
|
-
**Metadata and artifact validation:**
|
|
2658
|
-
|
|
2659
|
-
```bash
|
|
2660
|
-
rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
|
|
2661
|
-
python -m build
|
|
2662
|
-
python -m twine check dist/*
|
|
2663
|
-
```
|
|
2664
|
-
|
|
2665
|
-
The private release pipeline performs additional package-contract and forbidden-file checks before upload.
|
|
2666
|
-
|
|
2667
|
-
**Full offline release gate** across all supported Python integrations:
|
|
2668
|
-
|
|
2669
|
-
```bash
|
|
2670
|
-
python -m pip install -e ".[dev,crewai,pydanticai,langgraph,microsoft,autogen,foundry,agno,openai-agents,claude,smolagents,mcp,bedrock,google-adk,llamaindex,redis]"
|
|
2671
2571
|
python -m pytest -q
|
|
2672
|
-
rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
|
|
2673
2572
|
python -m build
|
|
2674
2573
|
python -m twine check dist/*
|
|
2675
2574
|
```
|
|
2676
2575
|
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
```bash
|
|
2680
|
-
python -m pytest -q tests/test_live_tenant.py
|
|
2681
|
-
```
|
|
2682
|
-
|
|
2683
|
-
| Part | Meaning |
|
|
2684
|
-
| :--- | :--- |
|
|
2685
|
-
| `python -m pytest` | Runs `pytest` using the current Python environment |
|
|
2686
|
-
| `-q` | Quiet mode — compact results instead of verbose test names |
|
|
2687
|
-
| `tests/test_live_tenant.py` | Live AgenticDome tenant smoke tests — skipped by default, only runs when explicitly enabled |
|
|
2688
|
-
|
|
2689
|
-
**Live tenant release gate** — against a real AgenticDome tenant:
|
|
2690
|
-
|
|
2691
|
-
```bash
|
|
2692
|
-
export AGENTICDOME_API_BASE="https://www.agenticdome.io"
|
|
2693
|
-
export AGENTICDOME_TENANT_ID="<tenant_id>"
|
|
2694
|
-
export AGENTICDOME_API_KEY="<tenant_api_key>"
|
|
2695
|
-
export AGENTICDOME_LIVE_TENANT_TEST=1
|
|
2696
|
-
python -m pytest -q tests/test_live_tenant.py
|
|
2697
|
-
```
|
|
2698
|
-
|
|
2699
|
-
For strict security-policy validation, add:
|
|
2700
|
-
|
|
2701
|
-
```bash
|
|
2702
|
-
export AGENTICDOME_LIVE_EXPECT_STRICT=1
|
|
2703
|
-
```
|
|
2704
|
-
|
|
2705
|
-
The live tenant suite performs real `guardrail_validate()` and `mesh_validate()` calls, verifies that one request can carry an originating human subject and upstream agent actor together, and queries the tenant's active threat-signature bundle through the public SDK method. With `AGENTICDOME_LIVE_EXPECT_STRICT=1`, it additionally requires sensitive output enforcement plus a signed bundle whose provenance is `agenticdome_private_collection`. Framework-specific behavior remains covered by the offline adapter test matrix above.
|
|
2576
|
+
The public suite verifies the package contract and supported adapter behavior without tenant credentials or live third-party services. AgenticDome operates live certification and package publication separately from customer application environments.
|
|
2706
2577
|
|
|
2707
2578
|
---
|
|
2708
2579
|
|