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.
Files changed (93) hide show
  1. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/PKG-INFO +43 -29
  2. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/README.md +15 -1
  3. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/PKG-INFO +43 -29
  4. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/requires.txt +27 -27
  5. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/catalog_snapshot.json +6 -6
  6. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/connect.py +65 -26
  7. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/copilot_ir.py +55 -28
  8. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/hook_catalog.py +22 -22
  9. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/onboarding_cli.py +533 -89
  10. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/customer-onboarding.md +21 -1
  11. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/pyproject.toml +28 -28
  12. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/CONTRIBUTING.md +0 -0
  13. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/LICENSE +0 -0
  14. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/MANIFEST.in +0 -0
  15. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/NOTICE +0 -0
  16. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/SECURITY.md +0 -0
  17. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/SOURCES.txt +0 -0
  18. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
  19. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/entry_points.txt +0 -0
  20. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
  21. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/__init__.py +0 -0
  22. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/_framework_firewall.py +0 -0
  23. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/_mode.py +0 -0
  24. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/agno.py +0 -0
  25. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/attestation.py +0 -0
  26. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/autogen.py +0 -0
  27. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/aws_bedrock.py +0 -0
  28. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/claude.py +0 -0
  29. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/client.py +0 -0
  30. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/copilot_ir_collector.cjs +0 -0
  31. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/crewai.py +0 -0
  32. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/demo.py +0 -0
  33. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/google_adk.py +0 -0
  34. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/identity.py +0 -0
  35. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/langgraph.py +0 -0
  36. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/lifecycle.py +0 -0
  37. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/llamaindex.py +0 -0
  38. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/mcp_host.py +0 -0
  39. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/mcp_http_gateway.py +0 -0
  40. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/mcp_rehearsal_server.py +0 -0
  41. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/mcp_verification.py +0 -0
  42. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/microsoft_agent_framework.py +0 -0
  43. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/microsoft_ai_foundry.py +0 -0
  44. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/openai_agents.py +0 -0
  45. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/outcomes.py +0 -0
  46. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/proof.py +0 -0
  47. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/pydantic.py +0 -0
  48. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/simulation.py +0 -0
  49. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/agenticdome_sdk/smolagents.py +0 -0
  50. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/README.md +0 -0
  51. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/agno.md +0 -0
  52. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/autogen.md +0 -0
  53. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/aws-bedrock.md +0 -0
  54. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/claude-agent-sdk.md +0 -0
  55. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/crewai.md +0 -0
  56. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/custom-python.md +0 -0
  57. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/google-adk.md +0 -0
  58. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/langgraph.md +0 -0
  59. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/llamaindex.md +0 -0
  60. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/microsoft-agent-framework.md +0 -0
  61. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/microsoft-ai-foundry.md +0 -0
  62. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/openai-agents.md +0 -0
  63. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/pydanticai.md +0 -0
  64. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/frameworks/smolagents.md +0 -0
  65. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/mcp-integration.md +0 -0
  66. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/performance-evidence.md +0 -0
  67. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/docs/runtime-deployment.md +0 -0
  68. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/PRODUCTION_INTEGRATION.md +0 -0
  69. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/README.md +0 -0
  70. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/attack_demo.py +0 -0
  71. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/crewai_agenticdome_firewall.py +0 -0
  72. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/README.md +0 -0
  73. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/_shared.py +0 -0
  74. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/agno.py +0 -0
  75. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/autogen.py +0 -0
  76. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/aws_bedrock.py +0 -0
  77. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/claude_agent_sdk.py +0 -0
  78. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/crewai.py +0 -0
  79. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/custom_python.py +0 -0
  80. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/google_adk.py +0 -0
  81. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/langgraph.py +0 -0
  82. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/llamaindex.py +0 -0
  83. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/mcp.py +0 -0
  84. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/microsoft_agent_framework.py +0 -0
  85. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/microsoft_ai_foundry.py +0 -0
  86. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/openai_agents.py +0 -0
  87. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/pydanticai.py +0 -0
  88. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/frameworks/smolagents.py +0 -0
  89. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/langgraph_agenticdome_firewall.py +0 -0
  90. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/local_simulation_gallery.py +0 -0
  91. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/examples/mcp_gateway_action_firewall.py +0 -0
  92. {agenticdome_python_sdk-1.2.32 → agenticdome_python_sdk-1.2.34}/setup.cfg +0 -0
  93. {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.32
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.21,>=1.15.5; extra == "crewai"
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.43.0,>=2.16.0; extra == "pydanticai"
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.43.0,>=2.16.0; extra == "pydantic"
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.11,>=1.2.9; extra == "langgraph"
49
- Requires-Dist: langchain-core<=1.6.3,>=1.5.0; extra == "langgraph"
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.6.1,>=2.3.0; extra == "foundry"
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.9,>=2.8.0; extra == "agno"
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.2,>=0.18.3; extra == "openai-agents"
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.94,>=1.43.54; extra == "bedrock"
67
+ Requires-Dist: boto3<=1.43.103,>=1.43.54; extra == "bedrock"
68
68
  Provides-Extra: aws-bedrock
69
- Requires-Dist: boto3<=1.43.94,>=1.43.54; extra == "aws-bedrock"
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.24,>=0.14.23; extra == "llamaindex"
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.24,>=0.14.23; extra == "llama-index"
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.9.0,>=2.5.0; extra == "google-adk"
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.9.0,>=2.5.0; extra == "adk"
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.152,>=0.2.126; extra == "claude"
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.152,>=0.2.126; extra == "claude-agent-sdk"
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.21,>=1.15.5; extra == "all"
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.43.0,>=2.16.0; extra == "all"
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.11,>=1.2.9; extra == "all"
91
- Requires-Dist: langchain-core<=1.6.3,>=1.5.0; extra == "all"
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.9,>=2.8.0; extra == "all"
95
- Requires-Dist: azure-ai-projects<=2.6.1,>=2.3.0; extra == "all"
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.2,>=0.18.3; extra == "all"
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.94,>=1.43.54; extra == "all"
100
- Requires-Dist: llama-index<=0.14.24,>=0.14.23; extra == "all"
101
- Requires-Dist: google-adk<=2.9.0,>=2.5.0; extra == "all"
102
- Requires-Dist: claude-agent-sdk<=0.2.152,>=0.2.126; extra == "all"
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. The
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. The
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.32
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.21,>=1.15.5; extra == "crewai"
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.43.0,>=2.16.0; extra == "pydanticai"
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.43.0,>=2.16.0; extra == "pydantic"
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.11,>=1.2.9; extra == "langgraph"
49
- Requires-Dist: langchain-core<=1.6.3,>=1.5.0; extra == "langgraph"
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.6.1,>=2.3.0; extra == "foundry"
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.9,>=2.8.0; extra == "agno"
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.2,>=0.18.3; extra == "openai-agents"
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.94,>=1.43.54; extra == "bedrock"
67
+ Requires-Dist: boto3<=1.43.103,>=1.43.54; extra == "bedrock"
68
68
  Provides-Extra: aws-bedrock
69
- Requires-Dist: boto3<=1.43.94,>=1.43.54; extra == "aws-bedrock"
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.24,>=0.14.23; extra == "llamaindex"
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.24,>=0.14.23; extra == "llama-index"
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.9.0,>=2.5.0; extra == "google-adk"
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.9.0,>=2.5.0; extra == "adk"
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.152,>=0.2.126; extra == "claude"
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.152,>=0.2.126; extra == "claude-agent-sdk"
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.21,>=1.15.5; extra == "all"
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.43.0,>=2.16.0; extra == "all"
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.11,>=1.2.9; extra == "all"
91
- Requires-Dist: langchain-core<=1.6.3,>=1.5.0; extra == "all"
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.9,>=2.8.0; extra == "all"
95
- Requires-Dist: azure-ai-projects<=2.6.1,>=2.3.0; extra == "all"
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.2,>=0.18.3; extra == "all"
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.94,>=1.43.54; extra == "all"
100
- Requires-Dist: llama-index<=0.14.24,>=0.14.23; extra == "all"
101
- Requires-Dist: google-adk<=2.9.0,>=2.5.0; extra == "all"
102
- Requires-Dist: claude-agent-sdk<=0.2.152,>=0.2.126; extra == "all"
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. The
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.9.0,>=2.5.0
6
+ google-adk<=2.10.0,>=2.5.0
7
7
 
8
8
  [agno]
9
- agno<=3.0.9,>=2.8.0
9
+ agno<=3.0.11,>=2.8.0
10
10
 
11
11
  [all]
12
- crewai<=1.15.21,>=1.15.5
12
+ crewai<=1.15.22,>=1.15.5
13
13
  redis>=4.5.0
14
14
  cryptography>=42.0.0
15
- pydantic-ai<=2.43.0,>=2.16.0
15
+ pydantic-ai<=2.51.0,>=2.16.0
16
16
  anyio>=4.0.0
17
- langgraph<=1.2.11,>=1.2.9
18
- langchain-core<=1.6.3,>=1.5.0
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.9,>=2.8.0
22
- azure-ai-projects<=2.6.1,>=2.3.0
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.2,>=0.18.3
24
+ openai-agents<=0.22.3,>=0.18.3
25
25
  mcp<=2.2.0,>=1.26.0
26
- boto3<=1.43.94,>=1.43.54
27
- llama-index<=0.14.24,>=0.14.23
28
- google-adk<=2.9.0,>=2.5.0
29
- claude-agent-sdk<=0.2.152,>=0.2.126
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.94,>=1.43.54
36
+ boto3<=1.43.103,>=1.43.54
37
37
 
38
38
  [bedrock]
39
- boto3<=1.43.94,>=1.43.54
39
+ boto3<=1.43.103,>=1.43.54
40
40
 
41
41
  [claude]
42
- claude-agent-sdk<=0.2.152,>=0.2.126
42
+ claude-agent-sdk<=0.2.160,>=0.2.126
43
43
 
44
44
  [claude-agent-sdk]
45
- claude-agent-sdk<=0.2.152,>=0.2.126
45
+ claude-agent-sdk<=0.2.160,>=0.2.126
46
46
 
47
47
  [crewai]
48
- crewai<=1.15.21,>=1.15.5
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.6.1,>=2.3.0
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.9.0,>=2.5.0
66
+ google-adk<=2.10.0,>=2.5.0
67
67
 
68
68
  [langgraph]
69
- langgraph<=1.2.11,>=1.2.9
70
- langchain-core<=1.6.3,>=1.5.0
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.24,>=0.14.23
75
+ llama-index<=0.14.25,>=0.14.23
76
76
 
77
77
  [llamaindex]
78
- llama-index<=0.14.24,>=0.14.23
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.2,>=0.18.3
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.43.0,>=2.16.0
95
+ pydantic-ai<=2.51.0,>=2.16.0
96
96
  anyio>=4.0.0
97
97
 
98
98
  [pydanticai]
99
- pydantic-ai<=2.43.0,>=2.16.0
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-15",
5
- "python_sdk_version": "1.2.32",
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.32",
10
- "url": "https://pypi.org/project/agenticdome-python-sdk/1.2.32/"
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.4",
25
- "url": "https://www.npmjs.com/package/openclaw/v/2026.9.4"
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 _installed_sdk_version, inspect_repository
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
- report = inspect_repository(root)
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"] + ":" + root.name))
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
- ir_digest = hashlib.sha256(json.dumps(ir, sort_keys=True, separators=(",", ":")).encode("utf-8")).hexdigest()
175
- plan = _request(runtime_base + "/integration-copilot/v1/analyze", {
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", "frameworks": frameworks or ["custom-python"],
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": "Review the generated pull request and run agenticdome verify." if pull_request else "Review the generated patch, apply it on a branch, then run agenticdome verify.",
273
+ "next_action": next_action,
235
274
  "sdk_version": _installed_sdk_version(),
236
275
  }
237
276