agenticdome-python-sdk 1.2.24__tar.gz → 1.2.25__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 (86) hide show
  1. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/PKG-INFO +1 -1
  2. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_python_sdk.egg-info/PKG-INFO +1 -1
  3. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_python_sdk.egg-info/SOURCES.txt +1 -0
  4. agenticdome_python_sdk-1.2.25/agenticdome_sdk/catalog_snapshot.json +28 -0
  5. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/hook_catalog.py +27 -43
  6. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/onboarding_cli.py +16 -5
  7. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/pyproject.toml +2 -2
  8. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/CONTRIBUTING.md +0 -0
  9. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/LICENSE +0 -0
  10. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/MANIFEST.in +0 -0
  11. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/NOTICE +0 -0
  12. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/README.md +0 -0
  13. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/SECURITY.md +0 -0
  14. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
  15. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_python_sdk.egg-info/entry_points.txt +0 -0
  16. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_python_sdk.egg-info/requires.txt +0 -0
  17. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
  18. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/__init__.py +0 -0
  19. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/_framework_firewall.py +0 -0
  20. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/_mode.py +0 -0
  21. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/agno.py +0 -0
  22. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/autogen.py +0 -0
  23. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/aws_bedrock.py +0 -0
  24. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/claude.py +0 -0
  25. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/client.py +0 -0
  26. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/copilot_ir.py +0 -0
  27. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/copilot_ir_collector.cjs +0 -0
  28. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/crewai.py +0 -0
  29. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/demo.py +0 -0
  30. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/google_adk.py +0 -0
  31. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/identity.py +0 -0
  32. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/langgraph.py +0 -0
  33. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/llamaindex.py +0 -0
  34. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/mcp_host.py +0 -0
  35. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/microsoft_agent_framework.py +0 -0
  36. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/microsoft_ai_foundry.py +0 -0
  37. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/openai_agents.py +0 -0
  38. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/proof.py +0 -0
  39. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/pydantic.py +0 -0
  40. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/simulation.py +0 -0
  41. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/agenticdome_sdk/smolagents.py +0 -0
  42. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/customer-onboarding.md +0 -0
  43. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/README.md +0 -0
  44. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/agno.md +0 -0
  45. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/autogen.md +0 -0
  46. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/aws-bedrock.md +0 -0
  47. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/claude-agent-sdk.md +0 -0
  48. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/crewai.md +0 -0
  49. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/custom-python.md +0 -0
  50. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/google-adk.md +0 -0
  51. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/langgraph.md +0 -0
  52. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/llamaindex.md +0 -0
  53. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/microsoft-agent-framework.md +0 -0
  54. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/microsoft-ai-foundry.md +0 -0
  55. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/openai-agents.md +0 -0
  56. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/pydanticai.md +0 -0
  57. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/frameworks/smolagents.md +0 -0
  58. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/mcp-integration.md +0 -0
  59. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/performance-evidence.md +0 -0
  60. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/docs/runtime-deployment.md +0 -0
  61. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/PRODUCTION_INTEGRATION.md +0 -0
  62. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/README.md +0 -0
  63. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/attack_demo.py +0 -0
  64. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/crewai_agenticdome_firewall.py +0 -0
  65. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/README.md +0 -0
  66. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/_shared.py +0 -0
  67. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/agno.py +0 -0
  68. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/autogen.py +0 -0
  69. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/aws_bedrock.py +0 -0
  70. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/claude_agent_sdk.py +0 -0
  71. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/crewai.py +0 -0
  72. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/custom_python.py +0 -0
  73. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/google_adk.py +0 -0
  74. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/langgraph.py +0 -0
  75. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/llamaindex.py +0 -0
  76. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/mcp.py +0 -0
  77. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/microsoft_agent_framework.py +0 -0
  78. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/microsoft_ai_foundry.py +0 -0
  79. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/openai_agents.py +0 -0
  80. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/pydanticai.py +0 -0
  81. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/frameworks/smolagents.py +0 -0
  82. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/langgraph_agenticdome_firewall.py +0 -0
  83. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/local_simulation_gallery.py +0 -0
  84. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/examples/mcp_gateway_action_firewall.py +0 -0
  85. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/setup.cfg +0 -0
  86. {agenticdome_python_sdk-1.2.24 → agenticdome_python_sdk-1.2.25}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenticdome-python-sdk
3
- Version: 1.2.24
3
+ Version: 1.2.25
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.24
3
+ Version: 1.2.25
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
@@ -18,6 +18,7 @@ agenticdome_sdk/_mode.py
18
18
  agenticdome_sdk/agno.py
19
19
  agenticdome_sdk/autogen.py
20
20
  agenticdome_sdk/aws_bedrock.py
21
+ agenticdome_sdk/catalog_snapshot.json
21
22
  agenticdome_sdk/claude.py
22
23
  agenticdome_sdk/client.py
23
24
  agenticdome_sdk/copilot_ir.py
@@ -0,0 +1,28 @@
1
+ {
2
+ "schema": "agenticdome.catalog-snapshot.v1",
3
+ "catalog_schema": "agenticdome.hook-catalog.v1",
4
+ "verified_at": "2026-08-23",
5
+ "python_sdk_version": "1.2.25",
6
+ "published_packages": {
7
+ "agenticdome-python-sdk": {
8
+ "registry": "pypi",
9
+ "version": "1.2.25",
10
+ "url": "https://pypi.org/project/agenticdome-python-sdk/1.2.25/"
11
+ },
12
+ "agenticdome-sdk": {
13
+ "registry": "npm",
14
+ "version": "0.6.3",
15
+ "url": "https://www.npmjs.com/package/agenticdome-sdk/v/0.6.3"
16
+ },
17
+ "agenticdome-openclaw-security": {
18
+ "registry": "npm",
19
+ "version": "1.0.2",
20
+ "url": "https://www.npmjs.com/package/agenticdome-openclaw-security/v/1.0.2"
21
+ },
22
+ "openclaw": {
23
+ "registry": "npm",
24
+ "version": "2026.7.1-2",
25
+ "url": "https://www.npmjs.com/package/openclaw/v/2026.7.1-2"
26
+ }
27
+ }
28
+ }
@@ -11,65 +11,42 @@ import copy
11
11
  import hashlib
12
12
  import json
13
13
  import re
14
- from importlib import metadata as importlib_metadata
15
14
  from pathlib import Path
16
15
  from typing import Any, Dict, List, Optional
17
16
 
18
17
 
19
18
  CATALOG_SCHEMA = "agenticdome.hook-catalog.v1"
20
- CATALOG_VERIFIED_AT = "2026-08-23"
21
- _SDK_ROOT = Path(__file__).resolve().parents[2]
19
+ CATALOG_SNAPSHOT_SCHEMA = "agenticdome.catalog-snapshot.v1"
22
20
 
23
21
 
24
- def _json_manifest_version(relative_path: str, fallback: str) -> str:
25
- manifest = _SDK_ROOT / relative_path
22
+ def _load_catalog_snapshot() -> Dict[str, Any]:
23
+ path = Path(__file__).with_name("catalog_snapshot.json")
26
24
  try:
27
- return str(json.loads(manifest.read_text(encoding="utf-8"))["version"]).strip() or fallback
28
- except (OSError, KeyError, TypeError, ValueError, json.JSONDecodeError):
29
- return fallback
25
+ snapshot = json.loads(path.read_text(encoding="utf-8"))
26
+ except (OSError, TypeError, ValueError, json.JSONDecodeError) as exc:
27
+ raise RuntimeError("The installed SDK is missing its canonical hook-catalog snapshot.") from exc
28
+ if not isinstance(snapshot, dict) or snapshot.get("schema") != CATALOG_SNAPSHOT_SCHEMA:
29
+ raise RuntimeError("The installed SDK contains an unsupported hook-catalog snapshot.")
30
+ if snapshot.get("catalog_schema") != CATALOG_SCHEMA:
31
+ raise RuntimeError("The installed SDK hook-catalog snapshot uses the wrong catalog schema.")
32
+ if not isinstance(snapshot.get("published_packages"), dict):
33
+ raise RuntimeError("The installed SDK hook-catalog snapshot has no published package map.")
34
+ return snapshot
30
35
 
31
36
 
32
- def _python_manifest_version(fallback: str) -> str:
33
- manifest = _SDK_ROOT / "python" / "pyproject.toml"
34
- try:
35
- match = re.search(r"(?m)^version\s*=\s*\"([^\"]+)\"", manifest.read_text(encoding="utf-8"))
36
- if match:
37
- return match.group(1).strip()
38
- except OSError:
39
- pass
40
- try:
41
- return importlib_metadata.version("agenticdome-python-sdk")
42
- except importlib_metadata.PackageNotFoundError:
43
- return fallback
44
-
37
+ _CATALOG_SNAPSHOT = _load_catalog_snapshot()
38
+ CATALOG_VERIFIED_AT = str(_CATALOG_SNAPSHOT["verified_at"])
45
39
 
46
- def _published_package(registry: str, package: str, version: str) -> Dict[str, str]:
47
- if registry == "pypi":
48
- url = f"https://pypi.org/project/{package}/{version}/"
49
- else:
50
- url = f"https://www.npmjs.com/package/{package}/v/{version}"
51
- return {"registry": registry, "version": version, "url": url}
52
40
 
53
-
54
- _PYTHON_SDK_VERSION = _python_manifest_version("1.2.21")
55
- _TYPESCRIPT_SDK_VERSION = _json_manifest_version("js/agentguard_sdk/src/package.json", "0.6.2")
56
- _OPENCLAW_PLUGIN_VERSION = _json_manifest_version(
57
- "openclaw/ts/openclaw-agenticdome-security/package.json", "1.0.1"
58
- )
59
41
  _OPENCLAW_RUNTIME_MIN_VERSION = "2026.7.1-2"
60
42
  _OPENCLAW_RUNTIME_MAX_VERSION = "2026.7.1-2"
61
43
  _OPENCLAW_RUNTIME_VERSION = _OPENCLAW_RUNTIME_MAX_VERSION
62
44
  _OPENCLAW_NODE_RANGE = ">=22.22.3 <23 || >=24.15.0 <25 || >=25.9.0"
63
45
 
64
- # The source checkout derives these values from the exact manifests that the
65
- # release harness publishes. Installed wheels retain the certified fallbacks.
66
46
  PUBLISHED_AGENTICDOME_PACKAGES: Dict[str, Dict[str, str]] = {
67
- "agenticdome-python-sdk": _published_package("pypi", "agenticdome-python-sdk", _PYTHON_SDK_VERSION),
68
- "agenticdome-sdk": _published_package("npm", "agenticdome-sdk", _TYPESCRIPT_SDK_VERSION),
69
- "agenticdome-openclaw-security": _published_package(
70
- "npm", "agenticdome-openclaw-security", _OPENCLAW_PLUGIN_VERSION
71
- ),
72
- "openclaw": _published_package("npm", "openclaw", _OPENCLAW_RUNTIME_VERSION),
47
+ str(package): {str(key): str(value) for key, value in row.items()}
48
+ for package, row in _CATALOG_SNAPSHOT["published_packages"].items()
49
+ if isinstance(row, dict)
73
50
  }
74
51
 
75
52
 
@@ -545,11 +522,18 @@ def framework_contract(key: str, language: Optional[str] = None) -> Optional[Dic
545
522
 
546
523
 
547
524
  def catalog_digest() -> str:
525
+ # Package versions are signed in the binding and excluded from this
526
+ # semantic Python hook-contract digest. npm/OpenClaw releases therefore
527
+ # cannot invalidate an already published Python wheel.
528
+ frameworks = copy.deepcopy(FRAMEWORK_HOOK_CATALOG)
529
+ for contract in frameworks.values():
530
+ for package in list((contract.get("packages") or {}).keys()):
531
+ if package in PUBLISHED_AGENTICDOME_PACKAGES:
532
+ contract["packages"][package] = {"binding": "signed_catalog"}
548
533
  payload = {
549
534
  "schema": CATALOG_SCHEMA,
550
535
  "verified_at": CATALOG_VERIFIED_AT,
551
- "published": PUBLISHED_AGENTICDOME_PACKAGES,
552
- "frameworks": FRAMEWORK_HOOK_CATALOG,
536
+ "frameworks": frameworks,
553
537
  }
554
538
  encoded = json.dumps(payload, sort_keys=True, separators=(",", ":")).encode("utf-8")
555
539
  return "sha256:" + hashlib.sha256(encoded).hexdigest()
@@ -567,8 +567,14 @@ def _exact_version_from_spec(spec: str) -> Optional[str]:
567
567
  return match.group(1) if match else None
568
568
 
569
569
 
570
- def _hook_plans(root: Path, report: Dict[str, Any], frameworks: Sequence[str]) -> List[Dict[str, Any]]:
570
+ def _hook_plans(
571
+ root: Path,
572
+ report: Dict[str, Any],
573
+ frameworks: Sequence[str],
574
+ catalog_binding: Optional[Dict[str, Any]] = None,
575
+ ) -> List[Dict[str, Any]]:
571
576
  inventory = _manifest_dependency_specs(root)
577
+ bound_packages = (catalog_binding or {}).get("published_packages") or {}
572
578
  languages = set(report.get("languages", []))
573
579
  requested = list(dict.fromkeys(str(item) for item in frameworks))
574
580
  if "typescript/javascript" in languages and not any(item in {"openclaw", "mcp", "typescript"} for item in requested):
@@ -597,10 +603,15 @@ def _hook_plans(root: Path, report: Dict[str, Any], frameworks: Sequence[str]) -
597
603
  installed = observed.get("installed")
598
604
  declared = observed.get("declared")
599
605
  declared_exact = _exact_version_from_spec(str(declared or ""))
600
- registry_version = PUBLISHED_AGENTICDOME_PACKAGES.get(package, {}).get("version")
606
+ registry_version = (bound_packages.get(package) or {}).get("version")
607
+ if not registry_version:
608
+ registry_version = PUBLISHED_AGENTICDOME_PACKAGES.get(package, {}).get("version")
609
+ effective_certification = certification
610
+ if package in PUBLISHED_AGENTICDOME_PACKAGES and registry_version:
611
+ effective_certification = {"exact": str(registry_version)}
601
612
  declared_latest = str(declared or "").strip().lower() in {"latest", "*"}
602
613
  comparable = declared_exact or installed or (registry_version if declared_latest else None)
603
- compatible = version_satisfies_certification(str(comparable), certification) if comparable else None
614
+ compatible = version_satisfies_certification(str(comparable), effective_certification) if comparable else None
604
615
  environment_conflict = bool(declared_exact and installed and declared_exact != installed)
605
616
  # An explicit declared version outside the certified range must
606
617
  # fail closed even when this machine happens to have a different,
@@ -622,7 +633,7 @@ def _hook_plans(root: Path, report: Dict[str, Any], frameworks: Sequence[str]) -
622
633
  "package": package,
623
634
  "installed_version": installed,
624
635
  "declared_spec": declared,
625
- "certified_versions": certification_label(certification),
636
+ "certified_versions": certification_label(effective_certification),
626
637
  "published_version": published,
627
638
  "status": status,
628
639
  "evidence": (
@@ -714,7 +725,7 @@ def integration_plan(root: Path) -> Dict[str, Any]:
714
725
  required = ["prompt_ingress", "tool_execution", "output_egress"]
715
726
  gaps = [boundary for boundary in required if not counts.get(boundary)]
716
727
  frameworks = config.get("frameworks", [])
717
- hook_plans = _hook_plans(root, report, frameworks)
728
+ hook_plans = _hook_plans(root, report, frameworks, active_catalog_binding)
718
729
  semantic_bypasses = semantic.get("bypass_risks", []) if isinstance(semantic, dict) else []
719
730
  semantic_reviews = semantic.get("review_findings", []) if isinstance(semantic, dict) else []
720
731
  return {
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agenticdome-python-sdk"
7
- version = "1.2.24"
7
+ version = "1.2.25"
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"
@@ -170,7 +170,7 @@ include = ["agenticdome_sdk*"]
170
170
  exclude = ["tests*", "examples*"]
171
171
 
172
172
  [tool.setuptools.package-data]
173
- agenticdome_sdk = ["*.cjs"]
173
+ agenticdome_sdk = ["*.cjs", "catalog_snapshot.json"]
174
174
 
175
175
  [tool.ruff]
176
176
  line-length = 120