agenticdome-python-sdk 1.2.32__tar.gz → 1.2.34__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.32 → agenticdome_python_sdk-1.2.34}/PKG-INFO +43 -29
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/README.md +15 -1
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/PKG-INFO +43 -29
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/requires.txt +27 -27
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/catalog_snapshot.json +6 -6
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/connect.py +65 -26
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/copilot_ir.py +55 -28
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/hook_catalog.py +22 -22
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/onboarding_cli.py +533 -89
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/customer-onboarding.md +21 -1
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/pyproject.toml +28 -28
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/CONTRIBUTING.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/LICENSE +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/MANIFEST.in +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/NOTICE +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/SECURITY.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/SOURCES.txt +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/entry_points.txt +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/__init__.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/_framework_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/_mode.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/agno.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/attestation.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/autogen.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/aws_bedrock.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/claude.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/client.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/copilot_ir_collector.cjs +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/crewai.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/demo.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/google_adk.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/identity.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/langgraph.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/lifecycle.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/llamaindex.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/mcp_host.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/mcp_http_gateway.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/mcp_rehearsal_server.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/mcp_verification.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/microsoft_agent_framework.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/microsoft_ai_foundry.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/openai_agents.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/outcomes.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/proof.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/pydantic.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/simulation.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/smolagents.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/README.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/agno.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/autogen.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/aws-bedrock.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/claude-agent-sdk.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/crewai.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/custom-python.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/google-adk.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/langgraph.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/llamaindex.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/microsoft-agent-framework.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/microsoft-ai-foundry.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/openai-agents.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/pydanticai.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/smolagents.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/mcp-integration.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/performance-evidence.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/runtime-deployment.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/PRODUCTION_INTEGRATION.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/README.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/attack_demo.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/crewai_agenticdome_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/README.md +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/_shared.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/agno.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/autogen.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/aws_bedrock.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/claude_agent_sdk.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/crewai.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/custom_python.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/google_adk.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/langgraph.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/llamaindex.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/mcp.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/microsoft_agent_framework.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/microsoft_ai_foundry.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/openai_agents.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/pydanticai.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/smolagents.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/langgraph_agenticdome_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/local_simulation_gallery.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/mcp_gateway_action_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/setup.cfg +0 -0
- {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/setup.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.34
|
|
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-Expression: Apache-2.0
|
|
@@ -33,20 +33,20 @@ Requires-Dist: requests>=2.31.0
|
|
|
33
33
|
Requires-Dist: urllib3>=2.0.0
|
|
34
34
|
Requires-Dist: cryptography>=42.0.0
|
|
35
35
|
Provides-Extra: crewai
|
|
36
|
-
Requires-Dist: crewai<=1.15.
|
|
36
|
+
Requires-Dist: crewai<=1.15.22,>=1.15.5; extra == "crewai"
|
|
37
37
|
Provides-Extra: redis
|
|
38
38
|
Requires-Dist: redis>=4.5.0; extra == "redis"
|
|
39
39
|
Provides-Extra: pop
|
|
40
40
|
Requires-Dist: cryptography>=42.0.0; extra == "pop"
|
|
41
41
|
Provides-Extra: pydanticai
|
|
42
|
-
Requires-Dist: pydantic-ai<=2.
|
|
42
|
+
Requires-Dist: pydantic-ai<=2.51.0,>=2.16.0; extra == "pydanticai"
|
|
43
43
|
Requires-Dist: anyio>=4.0.0; extra == "pydanticai"
|
|
44
44
|
Provides-Extra: pydantic
|
|
45
|
-
Requires-Dist: pydantic-ai<=2.
|
|
45
|
+
Requires-Dist: pydantic-ai<=2.51.0,>=2.16.0; extra == "pydantic"
|
|
46
46
|
Requires-Dist: anyio>=4.0.0; extra == "pydantic"
|
|
47
47
|
Provides-Extra: langgraph
|
|
48
|
-
Requires-Dist: langgraph<=1.2.
|
|
49
|
-
Requires-Dist: langchain-core<=1.6.
|
|
48
|
+
Requires-Dist: langgraph<=1.2.12,>=1.2.9; extra == "langgraph"
|
|
49
|
+
Requires-Dist: langchain-core<=1.6.5,>=1.5.0; extra == "langgraph"
|
|
50
50
|
Requires-Dist: langchain-openai==1.3.5; extra == "langgraph"
|
|
51
51
|
Requires-Dist: anyio>=4.0.0; extra == "langgraph"
|
|
52
52
|
Provides-Extra: microsoft
|
|
@@ -55,51 +55,51 @@ Requires-Dist: autogen-agentchat==0.7.5; extra == "autogen"
|
|
|
55
55
|
Provides-Extra: microsoft-autogen
|
|
56
56
|
Requires-Dist: autogen-agentchat==0.7.5; extra == "microsoft-autogen"
|
|
57
57
|
Provides-Extra: foundry
|
|
58
|
-
Requires-Dist: azure-ai-projects<=2.
|
|
58
|
+
Requires-Dist: azure-ai-projects<=2.7.0,>=2.3.0; extra == "foundry"
|
|
59
59
|
Requires-Dist: azure-identity==1.25.3; extra == "foundry"
|
|
60
60
|
Provides-Extra: agno
|
|
61
|
-
Requires-Dist: agno<=3.0.
|
|
61
|
+
Requires-Dist: agno<=3.0.11,>=2.8.0; extra == "agno"
|
|
62
62
|
Provides-Extra: openai-agents
|
|
63
|
-
Requires-Dist: openai-agents<=0.22.
|
|
63
|
+
Requires-Dist: openai-agents<=0.22.3,>=0.18.3; extra == "openai-agents"
|
|
64
64
|
Provides-Extra: mcp
|
|
65
65
|
Requires-Dist: mcp<=2.2.0,>=1.26.0; extra == "mcp"
|
|
66
66
|
Provides-Extra: bedrock
|
|
67
|
-
Requires-Dist: boto3<=1.43.
|
|
67
|
+
Requires-Dist: boto3<=1.43.103,>=1.43.54; extra == "bedrock"
|
|
68
68
|
Provides-Extra: aws-bedrock
|
|
69
|
-
Requires-Dist: boto3<=1.43.
|
|
69
|
+
Requires-Dist: boto3<=1.43.103,>=1.43.54; extra == "aws-bedrock"
|
|
70
70
|
Provides-Extra: llamaindex
|
|
71
|
-
Requires-Dist: llama-index<=0.14.
|
|
71
|
+
Requires-Dist: llama-index<=0.14.25,>=0.14.23; extra == "llamaindex"
|
|
72
72
|
Provides-Extra: llama-index
|
|
73
|
-
Requires-Dist: llama-index<=0.14.
|
|
73
|
+
Requires-Dist: llama-index<=0.14.25,>=0.14.23; extra == "llama-index"
|
|
74
74
|
Provides-Extra: google-adk
|
|
75
|
-
Requires-Dist: google-adk<=2.
|
|
75
|
+
Requires-Dist: google-adk<=2.10.0,>=2.5.0; extra == "google-adk"
|
|
76
76
|
Provides-Extra: adk
|
|
77
|
-
Requires-Dist: google-adk<=2.
|
|
77
|
+
Requires-Dist: google-adk<=2.10.0,>=2.5.0; extra == "adk"
|
|
78
78
|
Provides-Extra: claude
|
|
79
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
79
|
+
Requires-Dist: claude-agent-sdk<=0.2.160,>=0.2.126; extra == "claude"
|
|
80
80
|
Provides-Extra: claude-agent-sdk
|
|
81
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
81
|
+
Requires-Dist: claude-agent-sdk<=0.2.160,>=0.2.126; extra == "claude-agent-sdk"
|
|
82
82
|
Provides-Extra: smolagents
|
|
83
83
|
Requires-Dist: smolagents==1.26.0; extra == "smolagents"
|
|
84
84
|
Provides-Extra: all
|
|
85
|
-
Requires-Dist: crewai<=1.15.
|
|
85
|
+
Requires-Dist: crewai<=1.15.22,>=1.15.5; extra == "all"
|
|
86
86
|
Requires-Dist: redis>=4.5.0; extra == "all"
|
|
87
87
|
Requires-Dist: cryptography>=42.0.0; extra == "all"
|
|
88
|
-
Requires-Dist: pydantic-ai<=2.
|
|
88
|
+
Requires-Dist: pydantic-ai<=2.51.0,>=2.16.0; extra == "all"
|
|
89
89
|
Requires-Dist: anyio>=4.0.0; extra == "all"
|
|
90
|
-
Requires-Dist: langgraph<=1.2.
|
|
91
|
-
Requires-Dist: langchain-core<=1.6.
|
|
90
|
+
Requires-Dist: langgraph<=1.2.12,>=1.2.9; extra == "all"
|
|
91
|
+
Requires-Dist: langchain-core<=1.6.5,>=1.5.0; extra == "all"
|
|
92
92
|
Requires-Dist: langchain-openai==1.3.5; extra == "all"
|
|
93
93
|
Requires-Dist: autogen-agentchat==0.7.5; extra == "all"
|
|
94
|
-
Requires-Dist: agno<=3.0.
|
|
95
|
-
Requires-Dist: azure-ai-projects<=2.
|
|
94
|
+
Requires-Dist: agno<=3.0.11,>=2.8.0; extra == "all"
|
|
95
|
+
Requires-Dist: azure-ai-projects<=2.7.0,>=2.3.0; extra == "all"
|
|
96
96
|
Requires-Dist: azure-identity==1.25.3; extra == "all"
|
|
97
|
-
Requires-Dist: openai-agents<=0.22.
|
|
97
|
+
Requires-Dist: openai-agents<=0.22.3,>=0.18.3; extra == "all"
|
|
98
98
|
Requires-Dist: mcp<=2.2.0,>=1.26.0; extra == "all"
|
|
99
|
-
Requires-Dist: boto3<=1.43.
|
|
100
|
-
Requires-Dist: llama-index<=0.14.
|
|
101
|
-
Requires-Dist: google-adk<=2.
|
|
102
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
99
|
+
Requires-Dist: boto3<=1.43.103,>=1.43.54; extra == "all"
|
|
100
|
+
Requires-Dist: llama-index<=0.14.25,>=0.14.23; extra == "all"
|
|
101
|
+
Requires-Dist: google-adk<=2.10.0,>=2.5.0; extra == "all"
|
|
102
|
+
Requires-Dist: claude-agent-sdk<=0.2.160,>=0.2.126; extra == "all"
|
|
103
103
|
Requires-Dist: smolagents==1.26.0; extra == "all"
|
|
104
104
|
Provides-Extra: dev
|
|
105
105
|
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
@@ -218,7 +218,10 @@ agenticdome openclaw verify --output .agenticdome/verification.json
|
|
|
218
218
|
AgenticDome plugin, explicit consent and the exact certified typed hooks.
|
|
219
219
|
`agenticdome plan` returns source-free, tenant-bound Integration Copilot
|
|
220
220
|
guidance for review. `openclaw verify` adds workspace-test and assigned-tenant
|
|
221
|
-
policy evidence.
|
|
221
|
+
policy evidence. If the same deployable workload also uses MCP, this command
|
|
222
|
+
includes the MCP transport rehearsal and both `mcp_verification` and
|
|
223
|
+
`openclaw_verification` in one report. Both sections must be ready before the
|
|
224
|
+
report is imported; `mcp verify` alone is not a combined-workload proof. The
|
|
222
225
|
customer Control Panel separately confirms tenant binding and retained
|
|
223
226
|
telemetry; neither command silently modifies customer source.
|
|
224
227
|
|
|
@@ -228,6 +231,17 @@ languages and candidate boundaries can be discovered locally; business
|
|
|
228
231
|
purpose, sensitive actions and managed-versus-sovereign deployment remain
|
|
229
232
|
explicit customer decisions and are not guessed from source code.
|
|
230
233
|
|
|
234
|
+
`agenticdome init` creates local configuration without contacting Copilot.
|
|
235
|
+
`inspect` and `plan` send source-free structural metadata to the assigned
|
|
236
|
+
tenant sidecar. A selection spanning several deployable packages is analyzed
|
|
237
|
+
as bounded, sequential workload units; successful units are checkpointed
|
|
238
|
+
locally so a retry does not resubmit them. The report lists analyzed parts
|
|
239
|
+
and any result-list caps. It does not claim that calls or guard placement
|
|
240
|
+
across separate workload units were proven; review those boundaries before
|
|
241
|
+
production. If the selection exceeds the 24-unit safety limit, select the
|
|
242
|
+
application or package that actually executes agent actions. No unexamined
|
|
243
|
+
unit is silently omitted or reported as protected.
|
|
244
|
+
|
|
231
245
|
Use **Customer Control Panel → Activate Action Firewall → Core Config** to
|
|
232
246
|
choose the Developer Integration path and import the two evidence files. This
|
|
233
247
|
path is for SDK, MCP, framework or custom-code integrations; Microsoft
|
|
@@ -105,7 +105,10 @@ agenticdome openclaw verify --output .agenticdome/verification.json
|
|
|
105
105
|
AgenticDome plugin, explicit consent and the exact certified typed hooks.
|
|
106
106
|
`agenticdome plan` returns source-free, tenant-bound Integration Copilot
|
|
107
107
|
guidance for review. `openclaw verify` adds workspace-test and assigned-tenant
|
|
108
|
-
policy evidence.
|
|
108
|
+
policy evidence. If the same deployable workload also uses MCP, this command
|
|
109
|
+
includes the MCP transport rehearsal and both `mcp_verification` and
|
|
110
|
+
`openclaw_verification` in one report. Both sections must be ready before the
|
|
111
|
+
report is imported; `mcp verify` alone is not a combined-workload proof. The
|
|
109
112
|
customer Control Panel separately confirms tenant binding and retained
|
|
110
113
|
telemetry; neither command silently modifies customer source.
|
|
111
114
|
|
|
@@ -115,6 +118,17 @@ languages and candidate boundaries can be discovered locally; business
|
|
|
115
118
|
purpose, sensitive actions and managed-versus-sovereign deployment remain
|
|
116
119
|
explicit customer decisions and are not guessed from source code.
|
|
117
120
|
|
|
121
|
+
`agenticdome init` creates local configuration without contacting Copilot.
|
|
122
|
+
`inspect` and `plan` send source-free structural metadata to the assigned
|
|
123
|
+
tenant sidecar. A selection spanning several deployable packages is analyzed
|
|
124
|
+
as bounded, sequential workload units; successful units are checkpointed
|
|
125
|
+
locally so a retry does not resubmit them. The report lists analyzed parts
|
|
126
|
+
and any result-list caps. It does not claim that calls or guard placement
|
|
127
|
+
across separate workload units were proven; review those boundaries before
|
|
128
|
+
production. If the selection exceeds the 24-unit safety limit, select the
|
|
129
|
+
application or package that actually executes agent actions. No unexamined
|
|
130
|
+
unit is silently omitted or reported as protected.
|
|
131
|
+
|
|
118
132
|
Use **Customer Control Panel → Activate Action Firewall → Core Config** to
|
|
119
133
|
choose the Developer Integration path and import the two evidence files. This
|
|
120
134
|
path is for SDK, MCP, framework or custom-code integrations; Microsoft
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agenticdome-python-sdk
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.34
|
|
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-Expression: Apache-2.0
|
|
@@ -33,20 +33,20 @@ Requires-Dist: requests>=2.31.0
|
|
|
33
33
|
Requires-Dist: urllib3>=2.0.0
|
|
34
34
|
Requires-Dist: cryptography>=42.0.0
|
|
35
35
|
Provides-Extra: crewai
|
|
36
|
-
Requires-Dist: crewai<=1.15.
|
|
36
|
+
Requires-Dist: crewai<=1.15.22,>=1.15.5; extra == "crewai"
|
|
37
37
|
Provides-Extra: redis
|
|
38
38
|
Requires-Dist: redis>=4.5.0; extra == "redis"
|
|
39
39
|
Provides-Extra: pop
|
|
40
40
|
Requires-Dist: cryptography>=42.0.0; extra == "pop"
|
|
41
41
|
Provides-Extra: pydanticai
|
|
42
|
-
Requires-Dist: pydantic-ai<=2.
|
|
42
|
+
Requires-Dist: pydantic-ai<=2.51.0,>=2.16.0; extra == "pydanticai"
|
|
43
43
|
Requires-Dist: anyio>=4.0.0; extra == "pydanticai"
|
|
44
44
|
Provides-Extra: pydantic
|
|
45
|
-
Requires-Dist: pydantic-ai<=2.
|
|
45
|
+
Requires-Dist: pydantic-ai<=2.51.0,>=2.16.0; extra == "pydantic"
|
|
46
46
|
Requires-Dist: anyio>=4.0.0; extra == "pydantic"
|
|
47
47
|
Provides-Extra: langgraph
|
|
48
|
-
Requires-Dist: langgraph<=1.2.
|
|
49
|
-
Requires-Dist: langchain-core<=1.6.
|
|
48
|
+
Requires-Dist: langgraph<=1.2.12,>=1.2.9; extra == "langgraph"
|
|
49
|
+
Requires-Dist: langchain-core<=1.6.5,>=1.5.0; extra == "langgraph"
|
|
50
50
|
Requires-Dist: langchain-openai==1.3.5; extra == "langgraph"
|
|
51
51
|
Requires-Dist: anyio>=4.0.0; extra == "langgraph"
|
|
52
52
|
Provides-Extra: microsoft
|
|
@@ -55,51 +55,51 @@ Requires-Dist: autogen-agentchat==0.7.5; extra == "autogen"
|
|
|
55
55
|
Provides-Extra: microsoft-autogen
|
|
56
56
|
Requires-Dist: autogen-agentchat==0.7.5; extra == "microsoft-autogen"
|
|
57
57
|
Provides-Extra: foundry
|
|
58
|
-
Requires-Dist: azure-ai-projects<=2.
|
|
58
|
+
Requires-Dist: azure-ai-projects<=2.7.0,>=2.3.0; extra == "foundry"
|
|
59
59
|
Requires-Dist: azure-identity==1.25.3; extra == "foundry"
|
|
60
60
|
Provides-Extra: agno
|
|
61
|
-
Requires-Dist: agno<=3.0.
|
|
61
|
+
Requires-Dist: agno<=3.0.11,>=2.8.0; extra == "agno"
|
|
62
62
|
Provides-Extra: openai-agents
|
|
63
|
-
Requires-Dist: openai-agents<=0.22.
|
|
63
|
+
Requires-Dist: openai-agents<=0.22.3,>=0.18.3; extra == "openai-agents"
|
|
64
64
|
Provides-Extra: mcp
|
|
65
65
|
Requires-Dist: mcp<=2.2.0,>=1.26.0; extra == "mcp"
|
|
66
66
|
Provides-Extra: bedrock
|
|
67
|
-
Requires-Dist: boto3<=1.43.
|
|
67
|
+
Requires-Dist: boto3<=1.43.103,>=1.43.54; extra == "bedrock"
|
|
68
68
|
Provides-Extra: aws-bedrock
|
|
69
|
-
Requires-Dist: boto3<=1.43.
|
|
69
|
+
Requires-Dist: boto3<=1.43.103,>=1.43.54; extra == "aws-bedrock"
|
|
70
70
|
Provides-Extra: llamaindex
|
|
71
|
-
Requires-Dist: llama-index<=0.14.
|
|
71
|
+
Requires-Dist: llama-index<=0.14.25,>=0.14.23; extra == "llamaindex"
|
|
72
72
|
Provides-Extra: llama-index
|
|
73
|
-
Requires-Dist: llama-index<=0.14.
|
|
73
|
+
Requires-Dist: llama-index<=0.14.25,>=0.14.23; extra == "llama-index"
|
|
74
74
|
Provides-Extra: google-adk
|
|
75
|
-
Requires-Dist: google-adk<=2.
|
|
75
|
+
Requires-Dist: google-adk<=2.10.0,>=2.5.0; extra == "google-adk"
|
|
76
76
|
Provides-Extra: adk
|
|
77
|
-
Requires-Dist: google-adk<=2.
|
|
77
|
+
Requires-Dist: google-adk<=2.10.0,>=2.5.0; extra == "adk"
|
|
78
78
|
Provides-Extra: claude
|
|
79
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
79
|
+
Requires-Dist: claude-agent-sdk<=0.2.160,>=0.2.126; extra == "claude"
|
|
80
80
|
Provides-Extra: claude-agent-sdk
|
|
81
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
81
|
+
Requires-Dist: claude-agent-sdk<=0.2.160,>=0.2.126; extra == "claude-agent-sdk"
|
|
82
82
|
Provides-Extra: smolagents
|
|
83
83
|
Requires-Dist: smolagents==1.26.0; extra == "smolagents"
|
|
84
84
|
Provides-Extra: all
|
|
85
|
-
Requires-Dist: crewai<=1.15.
|
|
85
|
+
Requires-Dist: crewai<=1.15.22,>=1.15.5; extra == "all"
|
|
86
86
|
Requires-Dist: redis>=4.5.0; extra == "all"
|
|
87
87
|
Requires-Dist: cryptography>=42.0.0; extra == "all"
|
|
88
|
-
Requires-Dist: pydantic-ai<=2.
|
|
88
|
+
Requires-Dist: pydantic-ai<=2.51.0,>=2.16.0; extra == "all"
|
|
89
89
|
Requires-Dist: anyio>=4.0.0; extra == "all"
|
|
90
|
-
Requires-Dist: langgraph<=1.2.
|
|
91
|
-
Requires-Dist: langchain-core<=1.6.
|
|
90
|
+
Requires-Dist: langgraph<=1.2.12,>=1.2.9; extra == "all"
|
|
91
|
+
Requires-Dist: langchain-core<=1.6.5,>=1.5.0; extra == "all"
|
|
92
92
|
Requires-Dist: langchain-openai==1.3.5; extra == "all"
|
|
93
93
|
Requires-Dist: autogen-agentchat==0.7.5; extra == "all"
|
|
94
|
-
Requires-Dist: agno<=3.0.
|
|
95
|
-
Requires-Dist: azure-ai-projects<=2.
|
|
94
|
+
Requires-Dist: agno<=3.0.11,>=2.8.0; extra == "all"
|
|
95
|
+
Requires-Dist: azure-ai-projects<=2.7.0,>=2.3.0; extra == "all"
|
|
96
96
|
Requires-Dist: azure-identity==1.25.3; extra == "all"
|
|
97
|
-
Requires-Dist: openai-agents<=0.22.
|
|
97
|
+
Requires-Dist: openai-agents<=0.22.3,>=0.18.3; extra == "all"
|
|
98
98
|
Requires-Dist: mcp<=2.2.0,>=1.26.0; extra == "all"
|
|
99
|
-
Requires-Dist: boto3<=1.43.
|
|
100
|
-
Requires-Dist: llama-index<=0.14.
|
|
101
|
-
Requires-Dist: google-adk<=2.
|
|
102
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
99
|
+
Requires-Dist: boto3<=1.43.103,>=1.43.54; extra == "all"
|
|
100
|
+
Requires-Dist: llama-index<=0.14.25,>=0.14.23; extra == "all"
|
|
101
|
+
Requires-Dist: google-adk<=2.10.0,>=2.5.0; extra == "all"
|
|
102
|
+
Requires-Dist: claude-agent-sdk<=0.2.160,>=0.2.126; extra == "all"
|
|
103
103
|
Requires-Dist: smolagents==1.26.0; extra == "all"
|
|
104
104
|
Provides-Extra: dev
|
|
105
105
|
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
@@ -218,7 +218,10 @@ agenticdome openclaw verify --output .agenticdome/verification.json
|
|
|
218
218
|
AgenticDome plugin, explicit consent and the exact certified typed hooks.
|
|
219
219
|
`agenticdome plan` returns source-free, tenant-bound Integration Copilot
|
|
220
220
|
guidance for review. `openclaw verify` adds workspace-test and assigned-tenant
|
|
221
|
-
policy evidence.
|
|
221
|
+
policy evidence. If the same deployable workload also uses MCP, this command
|
|
222
|
+
includes the MCP transport rehearsal and both `mcp_verification` and
|
|
223
|
+
`openclaw_verification` in one report. Both sections must be ready before the
|
|
224
|
+
report is imported; `mcp verify` alone is not a combined-workload proof. The
|
|
222
225
|
customer Control Panel separately confirms tenant binding and retained
|
|
223
226
|
telemetry; neither command silently modifies customer source.
|
|
224
227
|
|
|
@@ -228,6 +231,17 @@ languages and candidate boundaries can be discovered locally; business
|
|
|
228
231
|
purpose, sensitive actions and managed-versus-sovereign deployment remain
|
|
229
232
|
explicit customer decisions and are not guessed from source code.
|
|
230
233
|
|
|
234
|
+
`agenticdome init` creates local configuration without contacting Copilot.
|
|
235
|
+
`inspect` and `plan` send source-free structural metadata to the assigned
|
|
236
|
+
tenant sidecar. A selection spanning several deployable packages is analyzed
|
|
237
|
+
as bounded, sequential workload units; successful units are checkpointed
|
|
238
|
+
locally so a retry does not resubmit them. The report lists analyzed parts
|
|
239
|
+
and any result-list caps. It does not claim that calls or guard placement
|
|
240
|
+
across separate workload units were proven; review those boundaries before
|
|
241
|
+
production. If the selection exceeds the 24-unit safety limit, select the
|
|
242
|
+
application or package that actually executes agent actions. No unexamined
|
|
243
|
+
unit is silently omitted or reported as protected.
|
|
244
|
+
|
|
231
245
|
Use **Customer Control Panel → Activate Action Firewall → Core Config** to
|
|
232
246
|
choose the Developer Integration path and import the two evidence files. This
|
|
233
247
|
path is for SDK, MCP, framework or custom-code integrations; Microsoft
|
|
@@ -3,49 +3,49 @@ urllib3>=2.0.0
|
|
|
3
3
|
cryptography>=42.0.0
|
|
4
4
|
|
|
5
5
|
[adk]
|
|
6
|
-
google-adk<=2.
|
|
6
|
+
google-adk<=2.10.0,>=2.5.0
|
|
7
7
|
|
|
8
8
|
[agno]
|
|
9
|
-
agno<=3.0.
|
|
9
|
+
agno<=3.0.11,>=2.8.0
|
|
10
10
|
|
|
11
11
|
[all]
|
|
12
|
-
crewai<=1.15.
|
|
12
|
+
crewai<=1.15.22,>=1.15.5
|
|
13
13
|
redis>=4.5.0
|
|
14
14
|
cryptography>=42.0.0
|
|
15
|
-
pydantic-ai<=2.
|
|
15
|
+
pydantic-ai<=2.51.0,>=2.16.0
|
|
16
16
|
anyio>=4.0.0
|
|
17
|
-
langgraph<=1.2.
|
|
18
|
-
langchain-core<=1.6.
|
|
17
|
+
langgraph<=1.2.12,>=1.2.9
|
|
18
|
+
langchain-core<=1.6.5,>=1.5.0
|
|
19
19
|
langchain-openai==1.3.5
|
|
20
20
|
autogen-agentchat==0.7.5
|
|
21
|
-
agno<=3.0.
|
|
22
|
-
azure-ai-projects<=2.
|
|
21
|
+
agno<=3.0.11,>=2.8.0
|
|
22
|
+
azure-ai-projects<=2.7.0,>=2.3.0
|
|
23
23
|
azure-identity==1.25.3
|
|
24
|
-
openai-agents<=0.22.
|
|
24
|
+
openai-agents<=0.22.3,>=0.18.3
|
|
25
25
|
mcp<=2.2.0,>=1.26.0
|
|
26
|
-
boto3<=1.43.
|
|
27
|
-
llama-index<=0.14.
|
|
28
|
-
google-adk<=2.
|
|
29
|
-
claude-agent-sdk<=0.2.
|
|
26
|
+
boto3<=1.43.103,>=1.43.54
|
|
27
|
+
llama-index<=0.14.25,>=0.14.23
|
|
28
|
+
google-adk<=2.10.0,>=2.5.0
|
|
29
|
+
claude-agent-sdk<=0.2.160,>=0.2.126
|
|
30
30
|
smolagents==1.26.0
|
|
31
31
|
|
|
32
32
|
[autogen]
|
|
33
33
|
autogen-agentchat==0.7.5
|
|
34
34
|
|
|
35
35
|
[aws-bedrock]
|
|
36
|
-
boto3<=1.43.
|
|
36
|
+
boto3<=1.43.103,>=1.43.54
|
|
37
37
|
|
|
38
38
|
[bedrock]
|
|
39
|
-
boto3<=1.43.
|
|
39
|
+
boto3<=1.43.103,>=1.43.54
|
|
40
40
|
|
|
41
41
|
[claude]
|
|
42
|
-
claude-agent-sdk<=0.2.
|
|
42
|
+
claude-agent-sdk<=0.2.160,>=0.2.126
|
|
43
43
|
|
|
44
44
|
[claude-agent-sdk]
|
|
45
|
-
claude-agent-sdk<=0.2.
|
|
45
|
+
claude-agent-sdk<=0.2.160,>=0.2.126
|
|
46
46
|
|
|
47
47
|
[crewai]
|
|
48
|
-
crewai<=1.15.
|
|
48
|
+
crewai<=1.15.22,>=1.15.5
|
|
49
49
|
|
|
50
50
|
[dev]
|
|
51
51
|
pytest>=8.0.0
|
|
@@ -59,23 +59,23 @@ twine>=5.0.0
|
|
|
59
59
|
tomli>=2.0.0
|
|
60
60
|
|
|
61
61
|
[foundry]
|
|
62
|
-
azure-ai-projects<=2.
|
|
62
|
+
azure-ai-projects<=2.7.0,>=2.3.0
|
|
63
63
|
azure-identity==1.25.3
|
|
64
64
|
|
|
65
65
|
[google-adk]
|
|
66
|
-
google-adk<=2.
|
|
66
|
+
google-adk<=2.10.0,>=2.5.0
|
|
67
67
|
|
|
68
68
|
[langgraph]
|
|
69
|
-
langgraph<=1.2.
|
|
70
|
-
langchain-core<=1.6.
|
|
69
|
+
langgraph<=1.2.12,>=1.2.9
|
|
70
|
+
langchain-core<=1.6.5,>=1.5.0
|
|
71
71
|
langchain-openai==1.3.5
|
|
72
72
|
anyio>=4.0.0
|
|
73
73
|
|
|
74
74
|
[llama-index]
|
|
75
|
-
llama-index<=0.14.
|
|
75
|
+
llama-index<=0.14.25,>=0.14.23
|
|
76
76
|
|
|
77
77
|
[llamaindex]
|
|
78
|
-
llama-index<=0.14.
|
|
78
|
+
llama-index<=0.14.25,>=0.14.23
|
|
79
79
|
|
|
80
80
|
[mcp]
|
|
81
81
|
mcp<=2.2.0,>=1.26.0
|
|
@@ -86,17 +86,17 @@ mcp<=2.2.0,>=1.26.0
|
|
|
86
86
|
autogen-agentchat==0.7.5
|
|
87
87
|
|
|
88
88
|
[openai-agents]
|
|
89
|
-
openai-agents<=0.22.
|
|
89
|
+
openai-agents<=0.22.3,>=0.18.3
|
|
90
90
|
|
|
91
91
|
[pop]
|
|
92
92
|
cryptography>=42.0.0
|
|
93
93
|
|
|
94
94
|
[pydantic]
|
|
95
|
-
pydantic-ai<=2.
|
|
95
|
+
pydantic-ai<=2.51.0,>=2.16.0
|
|
96
96
|
anyio>=4.0.0
|
|
97
97
|
|
|
98
98
|
[pydanticai]
|
|
99
|
-
pydantic-ai<=2.
|
|
99
|
+
pydantic-ai<=2.51.0,>=2.16.0
|
|
100
100
|
anyio>=4.0.0
|
|
101
101
|
|
|
102
102
|
[redis]
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "agenticdome.catalog-snapshot.v1",
|
|
3
3
|
"catalog_schema": "agenticdome.hook-catalog.v1",
|
|
4
|
-
"verified_at": "2026-09-
|
|
5
|
-
"python_sdk_version": "1.2.
|
|
4
|
+
"verified_at": "2026-09-26",
|
|
5
|
+
"python_sdk_version": "1.2.34",
|
|
6
6
|
"published_packages": {
|
|
7
7
|
"agenticdome-python-sdk": {
|
|
8
8
|
"registry": "pypi",
|
|
9
|
-
"version": "1.2.
|
|
10
|
-
"url": "https://pypi.org/project/agenticdome-python-sdk/1.2.
|
|
9
|
+
"version": "1.2.34",
|
|
10
|
+
"url": "https://pypi.org/project/agenticdome-python-sdk/1.2.34/"
|
|
11
11
|
},
|
|
12
12
|
"agenticdome-sdk": {
|
|
13
13
|
"registry": "npm",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
},
|
|
22
22
|
"openclaw": {
|
|
23
23
|
"registry": "npm",
|
|
24
|
-
"version": "2026.9.
|
|
25
|
-
"url": "https://www.npmjs.com/package/openclaw/v/2026.9.
|
|
24
|
+
"version": "2026.9.6",
|
|
25
|
+
"url": "https://www.npmjs.com/package/openclaw/v/2026.9.6"
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -17,9 +17,6 @@ from pathlib import Path
|
|
|
17
17
|
from typing import Any, Dict, Optional
|
|
18
18
|
|
|
19
19
|
from .attestation import ensure_attestation_key
|
|
20
|
-
from .hook_catalog import CATALOG_SCHEMA, CATALOG_VERIFIED_AT, catalog_digest
|
|
21
|
-
|
|
22
|
-
|
|
23
20
|
SCOPES = ["onboarding:read", "metadata:write", "evidence:write", "workload:write", "repository:prepare"]
|
|
24
21
|
|
|
25
22
|
|
|
@@ -124,7 +121,10 @@ def _approve_metadata(ir: Dict[str, Any], assume_yes: bool) -> None:
|
|
|
124
121
|
|
|
125
122
|
def run_connect(root: Path, args: Any) -> Dict[str, Any]:
|
|
126
123
|
# Import lazily to avoid a module cycle and keep the public client purely orchestration code.
|
|
127
|
-
from .onboarding_cli import
|
|
124
|
+
from .onboarding_cli import (
|
|
125
|
+
_active_copilot_catalog_binding, _copilot_semantic_analysis,
|
|
126
|
+
_ensure_workload_id, _installed_sdk_version, _scope_gap_message, inspect_repository,
|
|
127
|
+
)
|
|
128
128
|
|
|
129
129
|
portal = str(args.portal).rstrip("/")
|
|
130
130
|
if not portal.startswith("https://") and not getattr(args, "allow_insecure_http", False):
|
|
@@ -155,12 +155,23 @@ def run_connect(root: Path, args: Any) -> Dict[str, Any]:
|
|
|
155
155
|
if not session.get("runtime") or not session.get("copilot"):
|
|
156
156
|
raise SystemExit("Authentication succeeded, but no eligible runtime is assigned. The saved portal session can be resumed after an administrator enables an assignment policy.")
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
local_workload_id = _ensure_workload_id(root)
|
|
159
|
+
report = inspect_repository(root, remote_analysis=False)
|
|
160
|
+
if report.get("scope", {}).get("complete") is not True:
|
|
161
|
+
raise SystemExit(_scope_gap_message(report))
|
|
159
162
|
ir = report["copilot_ir"]
|
|
160
163
|
_approve_metadata(ir, bool(args.yes))
|
|
161
164
|
private_pem, public_pem = ensure_attestation_key(root / ".agenticdome")
|
|
162
165
|
del private_pem
|
|
163
|
-
workload_uuid = str(uuid.uuid5(uuid.NAMESPACE_URL, session["tenant_id"] + ":" +
|
|
166
|
+
workload_uuid = str(uuid.uuid5(uuid.NAMESPACE_URL, session["tenant_id"] + ":" + local_workload_id))
|
|
167
|
+
previous_session_path = root / ".agenticdome" / "connect-session.json"
|
|
168
|
+
if previous_session_path.is_file():
|
|
169
|
+
try:
|
|
170
|
+
previous_session = json.loads(previous_session_path.read_text(encoding="utf-8"))
|
|
171
|
+
if previous_session.get("tenant_id") == session["tenant_id"]:
|
|
172
|
+
workload_uuid = str(uuid.UUID(str(previous_session["workload_uuid"])))
|
|
173
|
+
except (OSError, ValueError, KeyError, TypeError, AttributeError, json.JSONDecodeError):
|
|
174
|
+
raise SystemExit("The previous Connect workload identity is unreadable. Restore its connect-session.json before retrying to avoid creating a duplicate workload.")
|
|
164
175
|
frameworks = [item["key"] for item in report.get("frameworks", [])]
|
|
165
176
|
_request(portal + "/api/agentguard/connect/workloads", {
|
|
166
177
|
"session_uuid": session["session_uuid"], "workload_uuid": workload_uuid,
|
|
@@ -171,38 +182,51 @@ def run_connect(root: Path, args: Any) -> Dict[str, Any]:
|
|
|
171
182
|
|
|
172
183
|
runtime_base = str(session["runtime"]["api_base"]).rstrip("/")
|
|
173
184
|
copilot_key = str(session["copilot"]["api_key"])
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
"schema": "agenticdome.copilot-request.v1", "ir": ir,
|
|
177
|
-
"catalog_binding": {"schema": CATALOG_SCHEMA, "catalog_digest": catalog_digest(), "verified_at": CATALOG_VERIFIED_AT},
|
|
178
|
-
}, headers={"X-API-Key": copilot_key, "X-Tenant-Id": session["tenant_id"], "Idempotency-Key": hashlib.sha256((session["tenant_id"] + ir_digest + catalog_digest()).encode()).hexdigest()})
|
|
179
|
-
if plan.get("schema") != "agenticdome.copilot-plan.v1" or plan.get("tenant_id") != session["tenant_id"]:
|
|
180
|
-
raise SystemExit("The assigned private Copilot returned an invalid tenant-bound plan.")
|
|
181
|
-
semantic = plan.get("semantic_analysis") or {}
|
|
182
|
-
if semantic.get("ir_sha256") != ir_digest:
|
|
183
|
-
raise SystemExit("The private Copilot plan was not bound to the submitted metadata.")
|
|
184
|
-
_request(portal + "/api/agentguard/connect/sessions/" + session["session_uuid"] + "/metadata", {"ir": ir, "signed_plan": plan}, session["access_token"])
|
|
185
|
-
|
|
185
|
+
from .onboarding_cli import _ir_sha256
|
|
186
|
+
ir_digest = _ir_sha256(ir)
|
|
186
187
|
state_dir = root / ".agenticdome"
|
|
187
188
|
state_dir.mkdir(parents=True, exist_ok=True)
|
|
188
|
-
cache = {"schema": "agenticdome.copilot-cache.v1", "source_upload": False, "tenant_id": session["tenant_id"], "api_base": runtime_base, "semantic_analysis": semantic, "catalog_binding": plan.get("catalog_binding")}
|
|
189
|
-
(state_dir / "copilot-analysis.json").write_text(json.dumps(cache, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
|
190
189
|
config_path = state_dir / "config.json"
|
|
191
190
|
if not config_path.exists():
|
|
192
191
|
config_path.write_text(json.dumps({
|
|
193
|
-
"schema": "agenticdome.project-config.v1", "
|
|
192
|
+
"schema": "agenticdome.project-config.v1", "workload_id": local_workload_id,
|
|
193
|
+
"frameworks": frameworks or ["custom-python"],
|
|
194
194
|
"execution_broker_mode": "policy",
|
|
195
195
|
"business_purpose": "REVIEW_REQUIRED_NOT_INVENTED", "sensitive_tools": [],
|
|
196
196
|
"deployment": {"preference": "managed", "region": session["runtime"].get("region") or "auto"},
|
|
197
197
|
"source_upload": False,
|
|
198
198
|
}, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
|
199
|
-
resumable = {"schema": "agenticdome.connect-state.v1", "portal": portal, "tenant_id": session["tenant_id"], "session_uuid": session["session_uuid"], "workload_uuid": workload_uuid, "token_expires_at": session["expires_at"], "access_token": session["access_token"]}
|
|
200
|
-
state_path = state_dir / "connect-session.json"
|
|
201
|
-
state_path.write_text(json.dumps(resumable, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
|
202
|
-
os.chmod(state_path, 0o600)
|
|
203
199
|
previous = {name: os.environ.get(name) for name in ("AGENTICDOME_API_BASE", "AGENTICDOME_COPILOT_API_KEY", "AGENTICDOME_TENANT_ID")}
|
|
204
200
|
os.environ.update({"AGENTICDOME_API_BASE": runtime_base, "AGENTICDOME_COPILOT_API_KEY": copilot_key, "AGENTICDOME_TENANT_ID": session["tenant_id"]})
|
|
205
201
|
try:
|
|
202
|
+
semantic = _copilot_semantic_analysis(root, ir, required=True)
|
|
203
|
+
binding = _active_copilot_catalog_binding(root)
|
|
204
|
+
if semantic.get("ir_sha256") != ir_digest or not binding:
|
|
205
|
+
raise SystemExit("The private Copilot result was not bound to this workload and the installed SDK catalog.")
|
|
206
|
+
# The portal stores a compact inventory, never the potentially large
|
|
207
|
+
# per-function graph. Every selected part was analyzed at the sidecar.
|
|
208
|
+
portal_ir = {
|
|
209
|
+
"schema": "agenticdome.copilot-ir.v1", "source_upload": False,
|
|
210
|
+
"metadata_kind": "bounded_workload_summary", "selected_ir_sha256": ir_digest,
|
|
211
|
+
"files": [], "functions": [],
|
|
212
|
+
"features": {"functions": len(ir.get("functions", []))},
|
|
213
|
+
"scope": {
|
|
214
|
+
"complete": True, "fingerprint": ir.get("scope", {}).get("fingerprint"),
|
|
215
|
+
"eligible_files_scanned": ir.get("scope", {}).get("eligible_files_scanned", 0),
|
|
216
|
+
},
|
|
217
|
+
"workload_coverage": {
|
|
218
|
+
"selected_parts": semantic.get("workload_coverage", {}).get("selected_parts", 1),
|
|
219
|
+
"analyzed_parts": semantic.get("workload_coverage", {}).get("analyzed_parts", 1),
|
|
220
|
+
"cross_part_flow_proven": semantic.get("workload_coverage", {}).get("cross_part_flow_proven", True),
|
|
221
|
+
},
|
|
222
|
+
}
|
|
223
|
+
plan = {
|
|
224
|
+
"schema": "agenticdome.copilot-plan.v1", "tenant_id": session["tenant_id"],
|
|
225
|
+
"semantic_analysis": semantic, "catalog_binding": binding,
|
|
226
|
+
"aggregation": {"kind": "sdk_local_bounded_parts", "signature_scope": "individual_sidecar_parts_only"},
|
|
227
|
+
}
|
|
228
|
+
_request(portal + "/api/agentguard/connect/sessions/" + session["session_uuid"] + "/metadata", {"ir": portal_ir, "signed_plan": plan}, session["access_token"])
|
|
229
|
+
|
|
206
230
|
from .onboarding_cli import create_scaffold
|
|
207
231
|
patch_path = create_scaffold(root)
|
|
208
232
|
finally:
|
|
@@ -211,6 +235,11 @@ def run_connect(root: Path, args: Any) -> Dict[str, Any]:
|
|
|
211
235
|
os.environ.pop(name, None)
|
|
212
236
|
else:
|
|
213
237
|
os.environ[name] = value
|
|
238
|
+
|
|
239
|
+
resumable = {"schema": "agenticdome.connect-state.v1", "portal": portal, "tenant_id": session["tenant_id"], "session_uuid": session["session_uuid"], "workload_uuid": workload_uuid, "token_expires_at": session["expires_at"], "access_token": session["access_token"]}
|
|
240
|
+
state_path = state_dir / "connect-session.json"
|
|
241
|
+
state_path.write_text(json.dumps(resumable, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
|
242
|
+
os.chmod(state_path, 0o600)
|
|
214
243
|
pull_request = None
|
|
215
244
|
if args.open_pr:
|
|
216
245
|
if not args.repository_connection:
|
|
@@ -222,6 +251,15 @@ def run_connect(root: Path, args: Any) -> Dict[str, Any]:
|
|
|
222
251
|
"next_action": "Ask AgenticDome to confirm policy-aware sidecar readiness before live verification.",
|
|
223
252
|
})
|
|
224
253
|
broker_setup["sdk_mode"] = effective_config.get("execution_broker_mode", "existing_sdk_or_environment_default")
|
|
254
|
+
cross_part_review_required = semantic.get("workload_coverage", {}).get("cross_part_flow_proven") is False
|
|
255
|
+
next_action = (
|
|
256
|
+
"Review the generated pull request and run agenticdome verify. Then review cross-part call paths and workload-specific tests in the portal before activation."
|
|
257
|
+
if args.open_pr else
|
|
258
|
+
"Review the generated patch, apply it on a branch, and run agenticdome verify. Then review cross-part call paths and workload-specific tests in the portal before activation."
|
|
259
|
+
) if cross_part_review_required else (
|
|
260
|
+
"Review the generated pull request and run agenticdome verify."
|
|
261
|
+
if args.open_pr else "Review the generated patch, apply it on a branch, then run agenticdome verify."
|
|
262
|
+
)
|
|
225
263
|
return {
|
|
226
264
|
"status": "changeset_ready", "source_upload": False, "tenant_id": session["tenant_id"],
|
|
227
265
|
"session_uuid": session["session_uuid"], "workload_uuid": workload_uuid,
|
|
@@ -229,9 +267,10 @@ def run_connect(root: Path, args: Any) -> Dict[str, Any]:
|
|
|
229
267
|
"execution_broker": broker_setup,
|
|
230
268
|
"attachment_points": len(semantic.get("attachment_points") or []),
|
|
231
269
|
"bypass_risks": len(semantic.get("bypass_risks") or []),
|
|
270
|
+
"cross_part_review_required": cross_part_review_required,
|
|
232
271
|
"patch": str(patch_path.relative_to(root)),
|
|
233
272
|
"pull_request": pull_request,
|
|
234
|
-
"next_action":
|
|
273
|
+
"next_action": next_action,
|
|
235
274
|
"sdk_version": _installed_sdk_version(),
|
|
236
275
|
}
|
|
237
276
|
|