agenticdome-python-sdk 1.2.22__tar.gz → 1.2.24__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 (85) hide show
  1. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/PKG-INFO +1 -1
  2. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_python_sdk.egg-info/PKG-INFO +1 -1
  3. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/onboarding_cli.py +30 -10
  4. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/pyproject.toml +1 -1
  5. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/CONTRIBUTING.md +0 -0
  6. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/LICENSE +0 -0
  7. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/MANIFEST.in +0 -0
  8. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/NOTICE +0 -0
  9. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/README.md +0 -0
  10. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/SECURITY.md +0 -0
  11. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_python_sdk.egg-info/SOURCES.txt +0 -0
  12. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
  13. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_python_sdk.egg-info/entry_points.txt +0 -0
  14. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_python_sdk.egg-info/requires.txt +0 -0
  15. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
  16. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/__init__.py +0 -0
  17. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/_framework_firewall.py +0 -0
  18. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/_mode.py +0 -0
  19. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/agno.py +0 -0
  20. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/autogen.py +0 -0
  21. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/aws_bedrock.py +0 -0
  22. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/claude.py +0 -0
  23. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/client.py +0 -0
  24. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/copilot_ir.py +0 -0
  25. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/copilot_ir_collector.cjs +0 -0
  26. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/crewai.py +0 -0
  27. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/demo.py +0 -0
  28. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/google_adk.py +0 -0
  29. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/hook_catalog.py +0 -0
  30. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/identity.py +0 -0
  31. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/langgraph.py +0 -0
  32. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/llamaindex.py +0 -0
  33. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/mcp_host.py +0 -0
  34. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/microsoft_agent_framework.py +0 -0
  35. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/microsoft_ai_foundry.py +0 -0
  36. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/openai_agents.py +0 -0
  37. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/proof.py +0 -0
  38. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/pydantic.py +0 -0
  39. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/simulation.py +0 -0
  40. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/agenticdome_sdk/smolagents.py +0 -0
  41. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/customer-onboarding.md +0 -0
  42. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/README.md +0 -0
  43. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/agno.md +0 -0
  44. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/autogen.md +0 -0
  45. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/aws-bedrock.md +0 -0
  46. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/claude-agent-sdk.md +0 -0
  47. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/crewai.md +0 -0
  48. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/custom-python.md +0 -0
  49. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/google-adk.md +0 -0
  50. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/langgraph.md +0 -0
  51. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/llamaindex.md +0 -0
  52. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/microsoft-agent-framework.md +0 -0
  53. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/microsoft-ai-foundry.md +0 -0
  54. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/openai-agents.md +0 -0
  55. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/pydanticai.md +0 -0
  56. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/frameworks/smolagents.md +0 -0
  57. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/mcp-integration.md +0 -0
  58. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/performance-evidence.md +0 -0
  59. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/docs/runtime-deployment.md +0 -0
  60. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/PRODUCTION_INTEGRATION.md +0 -0
  61. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/README.md +0 -0
  62. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/attack_demo.py +0 -0
  63. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/crewai_agenticdome_firewall.py +0 -0
  64. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/README.md +0 -0
  65. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/_shared.py +0 -0
  66. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/agno.py +0 -0
  67. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/autogen.py +0 -0
  68. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/aws_bedrock.py +0 -0
  69. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/claude_agent_sdk.py +0 -0
  70. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/crewai.py +0 -0
  71. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/custom_python.py +0 -0
  72. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/google_adk.py +0 -0
  73. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/langgraph.py +0 -0
  74. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/llamaindex.py +0 -0
  75. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/mcp.py +0 -0
  76. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/microsoft_agent_framework.py +0 -0
  77. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/microsoft_ai_foundry.py +0 -0
  78. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/openai_agents.py +0 -0
  79. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/pydanticai.py +0 -0
  80. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/frameworks/smolagents.py +0 -0
  81. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/langgraph_agenticdome_firewall.py +0 -0
  82. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/local_simulation_gallery.py +0 -0
  83. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/examples/mcp_gateway_action_firewall.py +0 -0
  84. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/setup.cfg +0 -0
  85. {agenticdome_python_sdk-1.2.22 → agenticdome_python_sdk-1.2.24}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenticdome-python-sdk
3
- Version: 1.2.22
3
+ Version: 1.2.24
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenticdome-python-sdk
3
- Version: 1.2.22
3
+ Version: 1.2.24
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
@@ -53,6 +53,7 @@ SENSITIVE_FILE_PATTERN = re.compile(
53
53
  re.I,
54
54
  )
55
55
  SENSITIVE_FILE_SUFFIXES = {".key", ".pem", ".p12", ".pfx", ".jks", ".keystore"}
56
+ COPILOT_CATALOG_BINDING_SCHEMA = "agenticdome.copilot-hook-catalog-binding.v1"
56
57
 
57
58
 
58
59
  def _installed_sdk_version() -> str:
@@ -197,6 +198,29 @@ def _pending_semantic_analysis(ir: Dict[str, Any]) -> Dict[str, Any]:
197
198
  }
198
199
 
199
200
 
201
+ def _copilot_catalog_binding_matches_sdk(binding: Any) -> bool:
202
+ """Validate the signed sidecar binding against this SDK's catalog.
203
+
204
+ ``digest`` identifies the complete signed binding (including published
205
+ package versions), while ``catalog_digest`` identifies the hook catalog
206
+ embedded in this SDK. They are deliberately different digests.
207
+ """
208
+ if not isinstance(binding, dict):
209
+ return False
210
+ try:
211
+ expires_at = int(binding.get("expires_at") or 0)
212
+ except (TypeError, ValueError):
213
+ return False
214
+ return (
215
+ binding.get("schema") == COPILOT_CATALOG_BINDING_SCHEMA
216
+ and binding.get("catalog_schema") == CATALOG_SCHEMA
217
+ and binding.get("catalog_digest") == catalog_digest()
218
+ and re.fullmatch(r"sha256:[a-f0-9]{64}", str(binding.get("digest") or "")) is not None
219
+ and binding.get("sidecar_verified") is True
220
+ and expires_at > int(time.time())
221
+ )
222
+
223
+
200
224
  def _copilot_semantic_analysis(root: Path, ir: Dict[str, Any], *, required: bool) -> Dict[str, Any]:
201
225
  ir_digest = _ir_sha256(ir)
202
226
  api_base = os.getenv("AGENTICDOME_API_BASE", "").strip().rstrip("/")
@@ -221,8 +245,7 @@ def _copilot_semantic_analysis(root: Path, ir: Dict[str, Any], *, required: bool
221
245
  cached.get("tenant_id") == tenant_id
222
246
  and cached.get("api_base") == api_base
223
247
  and isinstance(cached_binding, dict)
224
- and cached_binding.get("digest") == expected_catalog_digest
225
- and cached_binding.get("sidecar_verified") is True
248
+ and _copilot_catalog_binding_matches_sdk(cached_binding)
226
249
  and isinstance(semantic, dict)
227
250
  and semantic.get("ir_sha256") == ir_digest
228
251
  and semantic.get("analysis_revision") == COPILOT_ANALYSIS_REVISION
@@ -234,7 +257,7 @@ def _copilot_semantic_analysis(root: Path, ir: Dict[str, Any], *, required: bool
234
257
  "ir": ir,
235
258
  "catalog_binding": {
236
259
  "schema": CATALOG_SCHEMA,
237
- "digest": expected_catalog_digest,
260
+ "catalog_digest": expected_catalog_digest,
238
261
  "verified_at": CATALOG_VERIFIED_AT,
239
262
  },
240
263
  }, separators=(",", ":")).encode("utf-8")
@@ -281,13 +304,12 @@ def _copilot_semantic_analysis(root: Path, ir: Dict[str, Any], *, required: bool
281
304
  )
282
305
  response_binding = result.get("catalog_binding")
283
306
  if (
284
- not isinstance(response_binding, dict)
285
- or response_binding.get("digest") != expected_catalog_digest
286
- or response_binding.get("sidecar_verified") is not True
307
+ not _copilot_catalog_binding_matches_sdk(response_binding)
287
308
  ):
288
309
  raise SystemExit(
289
310
  "Integration Copilot's signed hook catalog does not match this installed SDK. "
290
- "Update the SDK and rerun the Copilot."
311
+ "Upgrade the SDK; if it is already current, ask the control-plane administrator "
312
+ "to refresh the assigned sidecar's signed catalog, then rerun the Copilot."
291
313
  )
292
314
  _write_json(cached_path, {
293
315
  "schema": "agenticdome.copilot-cache.v1",
@@ -309,9 +331,7 @@ def _active_copilot_catalog_binding(root: Path) -> Dict[str, Any]:
309
331
  if (
310
332
  cached.get("tenant_id") != os.getenv("AGENTICDOME_TENANT_ID", "").strip()
311
333
  or cached.get("api_base") != os.getenv("AGENTICDOME_API_BASE", "").strip().rstrip("/")
312
- or not isinstance(binding, dict)
313
- or binding.get("digest") != catalog_digest()
314
- or binding.get("sidecar_verified") is not True
334
+ or not _copilot_catalog_binding_matches_sdk(binding)
315
335
  ):
316
336
  return {}
317
337
  return binding
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agenticdome-python-sdk"
7
- version = "1.2.22"
7
+ version = "1.2.24"
8
8
  description = "Official Python SDK for AgenticDome security guardrails, DLP, tool authorization, and multi-agent delegation enforcement."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"