agent_os_kernel 3.1.0__py3-none-any.whl

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 (337) hide show
  1. agent_control_plane/__init__.py +662 -0
  2. agent_control_plane/a2a_adapter.py +543 -0
  3. agent_control_plane/adapter.py +417 -0
  4. agent_control_plane/agent_hibernation.py +394 -0
  5. agent_control_plane/agent_kernel.py +470 -0
  6. agent_control_plane/compliance.py +720 -0
  7. agent_control_plane/constraint_graphs.py +478 -0
  8. agent_control_plane/control_plane.py +854 -0
  9. agent_control_plane/example_executors.py +195 -0
  10. agent_control_plane/execution_engine.py +231 -0
  11. agent_control_plane/flight_recorder.py +846 -0
  12. agent_control_plane/governance_layer.py +435 -0
  13. agent_control_plane/hf_utils.py +563 -0
  14. agent_control_plane/interfaces/__init__.py +55 -0
  15. agent_control_plane/interfaces/kernel_interface.py +361 -0
  16. agent_control_plane/interfaces/plugin_interface.py +497 -0
  17. agent_control_plane/interfaces/protocol_interfaces.py +387 -0
  18. agent_control_plane/kernel_space.py +1009 -0
  19. agent_control_plane/langchain_adapter.py +424 -0
  20. agent_control_plane/lifecycle.py +3113 -0
  21. agent_control_plane/mcp_adapter.py +653 -0
  22. agent_control_plane/ml_safety.py +563 -0
  23. agent_control_plane/multimodal.py +727 -0
  24. agent_control_plane/mute_agent.py +422 -0
  25. agent_control_plane/observability.py +787 -0
  26. agent_control_plane/orchestrator.py +482 -0
  27. agent_control_plane/plugin_registry.py +750 -0
  28. agent_control_plane/policy_engine.py +954 -0
  29. agent_control_plane/process_isolation.py +777 -0
  30. agent_control_plane/shadow_mode.py +310 -0
  31. agent_control_plane/signals.py +493 -0
  32. agent_control_plane/supervisor_agents.py +430 -0
  33. agent_control_plane/time_travel_debugger.py +557 -0
  34. agent_control_plane/tool_registry.py +452 -0
  35. agent_control_plane/vfs.py +697 -0
  36. agent_kernel/__init__.py +69 -0
  37. agent_kernel/analyzer.py +435 -0
  38. agent_kernel/auditor.py +36 -0
  39. agent_kernel/completeness_auditor.py +237 -0
  40. agent_kernel/detector.py +203 -0
  41. agent_kernel/kernel.py +744 -0
  42. agent_kernel/memory_manager.py +85 -0
  43. agent_kernel/models.py +374 -0
  44. agent_kernel/nudge_mechanism.py +263 -0
  45. agent_kernel/outcome_analyzer.py +338 -0
  46. agent_kernel/patcher.py +582 -0
  47. agent_kernel/semantic_analyzer.py +316 -0
  48. agent_kernel/semantic_purge.py +349 -0
  49. agent_kernel/simulator.py +449 -0
  50. agent_kernel/teacher.py +85 -0
  51. agent_kernel/triage.py +152 -0
  52. agent_os/__init__.py +409 -0
  53. agent_os/_adversarial_impl.py +200 -0
  54. agent_os/_circuit_breaker_impl.py +232 -0
  55. agent_os/_mcp_metrics.py +193 -0
  56. agent_os/adversarial.py +20 -0
  57. agent_os/agents_compat.py +490 -0
  58. agent_os/audit_logger.py +135 -0
  59. agent_os/base_agent.py +651 -0
  60. agent_os/circuit_breaker.py +34 -0
  61. agent_os/cli/__init__.py +659 -0
  62. agent_os/cli/cmd_audit.py +128 -0
  63. agent_os/cli/cmd_init.py +152 -0
  64. agent_os/cli/cmd_policy.py +41 -0
  65. agent_os/cli/cmd_policy_gen.py +180 -0
  66. agent_os/cli/cmd_validate.py +258 -0
  67. agent_os/cli/mcp_scan.py +265 -0
  68. agent_os/cli/output.py +192 -0
  69. agent_os/cli/policy_checker.py +330 -0
  70. agent_os/compat.py +74 -0
  71. agent_os/constraint_graph.py +234 -0
  72. agent_os/content_governance.py +140 -0
  73. agent_os/context_budget.py +305 -0
  74. agent_os/credential_redactor.py +224 -0
  75. agent_os/diff_policy.py +89 -0
  76. agent_os/egress_policy.py +159 -0
  77. agent_os/escalation.py +276 -0
  78. agent_os/event_bus.py +124 -0
  79. agent_os/exceptions.py +180 -0
  80. agent_os/execution_context_policy.py +141 -0
  81. agent_os/github_enterprise.py +96 -0
  82. agent_os/health.py +20 -0
  83. agent_os/integrations/__init__.py +279 -0
  84. agent_os/integrations/a2a_adapter.py +279 -0
  85. agent_os/integrations/agent_lightning/__init__.py +30 -0
  86. agent_os/integrations/anthropic_adapter.py +420 -0
  87. agent_os/integrations/autogen_adapter.py +620 -0
  88. agent_os/integrations/base.py +1137 -0
  89. agent_os/integrations/compat.py +229 -0
  90. agent_os/integrations/config.py +98 -0
  91. agent_os/integrations/conversation_guardian.py +957 -0
  92. agent_os/integrations/crewai_adapter.py +467 -0
  93. agent_os/integrations/drift_detector.py +425 -0
  94. agent_os/integrations/dry_run.py +124 -0
  95. agent_os/integrations/escalation.py +582 -0
  96. agent_os/integrations/gemini_adapter.py +364 -0
  97. agent_os/integrations/google_adk_adapter.py +633 -0
  98. agent_os/integrations/guardrails_adapter.py +394 -0
  99. agent_os/integrations/health.py +197 -0
  100. agent_os/integrations/langchain_adapter.py +654 -0
  101. agent_os/integrations/llamafirewall.py +343 -0
  102. agent_os/integrations/llamaindex_adapter.py +188 -0
  103. agent_os/integrations/logging.py +191 -0
  104. agent_os/integrations/maf_adapter.py +631 -0
  105. agent_os/integrations/mistral_adapter.py +365 -0
  106. agent_os/integrations/openai_adapter.py +816 -0
  107. agent_os/integrations/openai_agents_sdk.py +406 -0
  108. agent_os/integrations/policy_compose.py +171 -0
  109. agent_os/integrations/profiling.py +144 -0
  110. agent_os/integrations/pydantic_ai_adapter.py +420 -0
  111. agent_os/integrations/rate_limiter.py +130 -0
  112. agent_os/integrations/rbac.py +143 -0
  113. agent_os/integrations/registry.py +113 -0
  114. agent_os/integrations/scope_guard.py +303 -0
  115. agent_os/integrations/semantic_kernel_adapter.py +769 -0
  116. agent_os/integrations/smolagents_adapter.py +629 -0
  117. agent_os/integrations/templates.py +178 -0
  118. agent_os/integrations/token_budget.py +134 -0
  119. agent_os/integrations/tool_aliases.py +190 -0
  120. agent_os/integrations/webhooks.py +177 -0
  121. agent_os/lite.py +208 -0
  122. agent_os/mcp_gateway.py +385 -0
  123. agent_os/mcp_message_signer.py +273 -0
  124. agent_os/mcp_protocols.py +161 -0
  125. agent_os/mcp_response_scanner.py +232 -0
  126. agent_os/mcp_security.py +924 -0
  127. agent_os/mcp_session_auth.py +231 -0
  128. agent_os/mcp_sliding_rate_limiter.py +184 -0
  129. agent_os/memory_guard.py +409 -0
  130. agent_os/metrics.py +134 -0
  131. agent_os/mute.py +428 -0
  132. agent_os/mute_agent.py +209 -0
  133. agent_os/policies/__init__.py +77 -0
  134. agent_os/policies/async_evaluator.py +275 -0
  135. agent_os/policies/backends.py +670 -0
  136. agent_os/policies/bridge.py +169 -0
  137. agent_os/policies/budget.py +85 -0
  138. agent_os/policies/cli.py +294 -0
  139. agent_os/policies/conflict_resolution.py +270 -0
  140. agent_os/policies/data_classification.py +252 -0
  141. agent_os/policies/evaluator.py +239 -0
  142. agent_os/policies/policy_schema.json +228 -0
  143. agent_os/policies/rate_limiting.py +145 -0
  144. agent_os/policies/schema.py +115 -0
  145. agent_os/policies/shared.py +331 -0
  146. agent_os/prompt_injection.py +694 -0
  147. agent_os/providers.py +182 -0
  148. agent_os/py.typed +0 -0
  149. agent_os/retry.py +81 -0
  150. agent_os/reversibility.py +251 -0
  151. agent_os/sandbox.py +432 -0
  152. agent_os/sandbox_provider.py +140 -0
  153. agent_os/secure_codegen.py +525 -0
  154. agent_os/security_skills.py +538 -0
  155. agent_os/semantic_policy.py +422 -0
  156. agent_os/server/__init__.py +15 -0
  157. agent_os/server/__main__.py +25 -0
  158. agent_os/server/app.py +277 -0
  159. agent_os/server/models.py +104 -0
  160. agent_os/shift_left_metrics.py +130 -0
  161. agent_os/stateless.py +742 -0
  162. agent_os/supervisor.py +148 -0
  163. agent_os/task_outcome.py +148 -0
  164. agent_os/transparency.py +181 -0
  165. agent_os/trust_root.py +128 -0
  166. agent_os_kernel-3.1.0.dist-info/METADATA +1269 -0
  167. agent_os_kernel-3.1.0.dist-info/RECORD +337 -0
  168. agent_os_kernel-3.1.0.dist-info/WHEEL +4 -0
  169. agent_os_kernel-3.1.0.dist-info/entry_points.txt +2 -0
  170. agent_os_kernel-3.1.0.dist-info/licenses/LICENSE +21 -0
  171. agent_os_observability/__init__.py +27 -0
  172. agent_os_observability/dashboards.py +898 -0
  173. agent_os_observability/metrics.py +398 -0
  174. agent_os_observability/server.py +223 -0
  175. agent_os_observability/tracer.py +232 -0
  176. agent_primitives/__init__.py +24 -0
  177. agent_primitives/failures.py +84 -0
  178. agent_primitives/py.typed +0 -0
  179. amb_core/__init__.py +177 -0
  180. amb_core/adapters/__init__.py +57 -0
  181. amb_core/adapters/aws_sqs_broker.py +376 -0
  182. amb_core/adapters/azure_servicebus_broker.py +340 -0
  183. amb_core/adapters/kafka_broker.py +260 -0
  184. amb_core/adapters/nats_broker.py +285 -0
  185. amb_core/adapters/rabbitmq_broker.py +235 -0
  186. amb_core/adapters/redis_broker.py +262 -0
  187. amb_core/broker.py +145 -0
  188. amb_core/bus.py +481 -0
  189. amb_core/cloudevents.py +509 -0
  190. amb_core/dlq.py +345 -0
  191. amb_core/hf_utils.py +536 -0
  192. amb_core/memory_broker.py +410 -0
  193. amb_core/models.py +141 -0
  194. amb_core/persistence.py +529 -0
  195. amb_core/schema.py +294 -0
  196. amb_core/tracing.py +358 -0
  197. atr/__init__.py +640 -0
  198. atr/access.py +348 -0
  199. atr/composition.py +645 -0
  200. atr/decorator.py +357 -0
  201. atr/executor.py +384 -0
  202. atr/health.py +557 -0
  203. atr/hf_utils.py +449 -0
  204. atr/injection.py +422 -0
  205. atr/metrics.py +440 -0
  206. atr/policies.py +403 -0
  207. atr/py.typed +2 -0
  208. atr/registry.py +452 -0
  209. atr/schema.py +480 -0
  210. atr/tools/safe/__init__.py +75 -0
  211. atr/tools/safe/calculator.py +467 -0
  212. atr/tools/safe/datetime_tool.py +443 -0
  213. atr/tools/safe/file_reader.py +402 -0
  214. atr/tools/safe/http_client.py +316 -0
  215. atr/tools/safe/json_parser.py +374 -0
  216. atr/tools/safe/text_tool.py +537 -0
  217. atr/tools/safe/toolkit.py +175 -0
  218. caas/__init__.py +162 -0
  219. caas/api/__init__.py +7 -0
  220. caas/api/server.py +1328 -0
  221. caas/caching.py +834 -0
  222. caas/cli.py +210 -0
  223. caas/conversation.py +223 -0
  224. caas/decay.py +72 -0
  225. caas/detection/__init__.py +9 -0
  226. caas/detection/detector.py +238 -0
  227. caas/enrichment.py +130 -0
  228. caas/gateway/__init__.py +27 -0
  229. caas/gateway/trust_gateway.py +474 -0
  230. caas/hf_utils.py +479 -0
  231. caas/ingestion/__init__.py +23 -0
  232. caas/ingestion/processors.py +253 -0
  233. caas/ingestion/structure_parser.py +188 -0
  234. caas/models.py +356 -0
  235. caas/pragmatic_truth.py +444 -0
  236. caas/routing/__init__.py +10 -0
  237. caas/routing/heuristic_router.py +58 -0
  238. caas/storage/__init__.py +9 -0
  239. caas/storage/store.py +389 -0
  240. caas/triad.py +213 -0
  241. caas/tuning/__init__.py +9 -0
  242. caas/tuning/tuner.py +329 -0
  243. caas/vfs/__init__.py +14 -0
  244. caas/vfs/filesystem.py +452 -0
  245. cmvk/__init__.py +218 -0
  246. cmvk/audit.py +402 -0
  247. cmvk/benchmarks.py +478 -0
  248. cmvk/constitutional.py +904 -0
  249. cmvk/hf_utils.py +301 -0
  250. cmvk/metrics.py +473 -0
  251. cmvk/profiles.py +300 -0
  252. cmvk/py.typed +0 -0
  253. cmvk/types.py +12 -0
  254. cmvk/verification.py +956 -0
  255. emk/__init__.py +89 -0
  256. emk/causal.py +352 -0
  257. emk/hf_utils.py +421 -0
  258. emk/indexer.py +83 -0
  259. emk/py.typed +0 -0
  260. emk/schema.py +204 -0
  261. emk/sleep_cycle.py +347 -0
  262. emk/store.py +281 -0
  263. iatp/__init__.py +166 -0
  264. iatp/attestation.py +461 -0
  265. iatp/cli.py +317 -0
  266. iatp/hf_utils.py +472 -0
  267. iatp/ipc_pipes.py +580 -0
  268. iatp/main.py +412 -0
  269. iatp/models/__init__.py +447 -0
  270. iatp/policy_engine.py +337 -0
  271. iatp/py.typed +2 -0
  272. iatp/recovery.py +321 -0
  273. iatp/security/__init__.py +270 -0
  274. iatp/sidecar/__init__.py +519 -0
  275. iatp/telemetry/__init__.py +164 -0
  276. iatp/tests/__init__.py +1 -0
  277. iatp/tests/test_attestation.py +370 -0
  278. iatp/tests/test_cli.py +131 -0
  279. iatp/tests/test_ed25519_attestation.py +211 -0
  280. iatp/tests/test_models.py +130 -0
  281. iatp/tests/test_policy_engine.py +347 -0
  282. iatp/tests/test_recovery.py +281 -0
  283. iatp/tests/test_security.py +222 -0
  284. iatp/tests/test_sidecar.py +167 -0
  285. iatp/tests/test_telemetry.py +175 -0
  286. mcp_kernel_server/__init__.py +28 -0
  287. mcp_kernel_server/cli.py +274 -0
  288. mcp_kernel_server/resources.py +217 -0
  289. mcp_kernel_server/server.py +564 -0
  290. mcp_kernel_server/tools.py +1174 -0
  291. mute_agent/__init__.py +68 -0
  292. mute_agent/core/__init__.py +1 -0
  293. mute_agent/core/execution_agent.py +166 -0
  294. mute_agent/core/handshake_protocol.py +201 -0
  295. mute_agent/core/reasoning_agent.py +238 -0
  296. mute_agent/knowledge_graph/__init__.py +1 -0
  297. mute_agent/knowledge_graph/graph_elements.py +65 -0
  298. mute_agent/knowledge_graph/multidimensional_graph.py +170 -0
  299. mute_agent/knowledge_graph/subgraph.py +224 -0
  300. mute_agent/listener/__init__.py +43 -0
  301. mute_agent/listener/adapters/__init__.py +31 -0
  302. mute_agent/listener/adapters/base_adapter.py +189 -0
  303. mute_agent/listener/adapters/caas_adapter.py +344 -0
  304. mute_agent/listener/adapters/control_plane_adapter.py +436 -0
  305. mute_agent/listener/adapters/iatp_adapter.py +332 -0
  306. mute_agent/listener/adapters/scak_adapter.py +251 -0
  307. mute_agent/listener/listener.py +610 -0
  308. mute_agent/listener/state_observer.py +436 -0
  309. mute_agent/listener/threshold_config.py +313 -0
  310. mute_agent/super_system/__init__.py +1 -0
  311. mute_agent/super_system/router.py +204 -0
  312. mute_agent/visualization/__init__.py +10 -0
  313. mute_agent/visualization/graph_debugger.py +502 -0
  314. nexus/README.md +60 -0
  315. nexus/__init__.py +51 -0
  316. nexus/arbiter.py +359 -0
  317. nexus/client.py +466 -0
  318. nexus/dmz.py +444 -0
  319. nexus/escrow.py +430 -0
  320. nexus/exceptions.py +286 -0
  321. nexus/pyproject.toml +36 -0
  322. nexus/registry.py +393 -0
  323. nexus/reputation.py +425 -0
  324. nexus/schemas/__init__.py +51 -0
  325. nexus/schemas/compliance.py +276 -0
  326. nexus/schemas/escrow.py +251 -0
  327. nexus/schemas/manifest.py +225 -0
  328. nexus/schemas/receipt.py +208 -0
  329. nexus/tests/__init__.py +0 -0
  330. nexus/tests/conftest.py +146 -0
  331. nexus/tests/test_arbiter.py +192 -0
  332. nexus/tests/test_dmz.py +194 -0
  333. nexus/tests/test_escrow.py +276 -0
  334. nexus/tests/test_exceptions.py +225 -0
  335. nexus/tests/test_registry.py +232 -0
  336. nexus/tests/test_reputation.py +328 -0
  337. nexus/tests/test_schemas.py +295 -0
@@ -0,0 +1,141 @@
1
+ # Copyright (c) Microsoft Corporation.
2
+ # Licensed under the MIT License.
3
+ """Execution-context-aware policy enforcement.
4
+
5
+ Policies behave differently depending on where they run:
6
+ - inner_loop (IDE/CLI): advisory, blocks only critical violations
7
+ - ci_cd (pipeline): enforces anti-patterns, warns on advisory
8
+ - autonomous (agent runtime): strictest, blocks everything non-compliant
9
+ """
10
+ from __future__ import annotations
11
+
12
+ from dataclasses import dataclass, field
13
+ from enum import Enum
14
+ from typing import Any
15
+
16
+
17
+ class ExecutionContext(str, Enum):
18
+ """Execution environment where policy is evaluated."""
19
+
20
+ INNER_LOOP = "inner_loop" # IDE, CLI, local dev
21
+ CI_CD = "ci_cd" # Pipeline, PR checks
22
+ AUTONOMOUS = "autonomous" # Agent runtime, production
23
+
24
+
25
+ class EnforcementLevel(str, Enum):
26
+ """How strictly a policy violation is handled."""
27
+
28
+ BLOCK = "block"
29
+ WARN = "warn"
30
+ AUDIT = "audit" # log only, no user-visible output
31
+ SKIP = "skip"
32
+
33
+
34
+ @dataclass
35
+ class ContextualPolicyRule:
36
+ """A policy rule with per-context enforcement levels."""
37
+
38
+ name: str
39
+ category: str = ""
40
+ description: str = ""
41
+ default_level: EnforcementLevel = EnforcementLevel.WARN
42
+ context_overrides: dict[ExecutionContext, EnforcementLevel] = field(
43
+ default_factory=dict,
44
+ )
45
+
46
+ def effective_level(self, context: ExecutionContext) -> EnforcementLevel:
47
+ return self.context_overrides.get(context, self.default_level)
48
+
49
+
50
+ @dataclass
51
+ class PolicyViolation:
52
+ """A detected policy violation with context-aware severity."""
53
+
54
+ rule_name: str
55
+ message: str
56
+ level: EnforcementLevel
57
+ context: ExecutionContext
58
+ location: str = ""
59
+ suggestion: str = ""
60
+
61
+
62
+ class ContextualPolicyEngine:
63
+ """Policy engine that adjusts enforcement based on execution context."""
64
+
65
+ def __init__(
66
+ self, context: ExecutionContext = ExecutionContext.CI_CD,
67
+ ) -> None:
68
+ self._context = context
69
+ self._rules: list[ContextualPolicyRule] = []
70
+ self._violations: list[PolicyViolation] = []
71
+
72
+ @property
73
+ def context(self) -> ExecutionContext:
74
+ return self._context
75
+
76
+ def add_rule(self, rule: ContextualPolicyRule) -> None:
77
+ self._rules.append(rule)
78
+
79
+ def load_rules(self, rules: list[dict[str, Any]]) -> None:
80
+ for r in rules:
81
+ overrides: dict[ExecutionContext, EnforcementLevel] = {}
82
+ for ctx_name, level_name in r.get("context_overrides", {}).items():
83
+ overrides[ExecutionContext(ctx_name)] = EnforcementLevel(level_name)
84
+ self._rules.append(
85
+ ContextualPolicyRule(
86
+ name=r["name"],
87
+ category=r.get("category", ""),
88
+ description=r.get("description", ""),
89
+ default_level=EnforcementLevel(
90
+ r.get("default_level", "warn"),
91
+ ),
92
+ context_overrides=overrides,
93
+ ),
94
+ )
95
+
96
+ def evaluate(
97
+ self,
98
+ rule_name: str,
99
+ message: str,
100
+ location: str = "",
101
+ suggestion: str = "",
102
+ ) -> PolicyViolation | None:
103
+ rule = next((r for r in self._rules if r.name == rule_name), None)
104
+ if rule is None:
105
+ return None
106
+ level = rule.effective_level(self._context)
107
+ if level == EnforcementLevel.SKIP:
108
+ return None
109
+ violation = PolicyViolation(
110
+ rule_name=rule_name,
111
+ message=message,
112
+ level=level,
113
+ context=self._context,
114
+ location=location,
115
+ suggestion=suggestion,
116
+ )
117
+ self._violations.append(violation)
118
+ return violation
119
+
120
+ @property
121
+ def blocking_violations(self) -> list[PolicyViolation]:
122
+ return [v for v in self._violations if v.level == EnforcementLevel.BLOCK]
123
+
124
+ @property
125
+ def warnings(self) -> list[PolicyViolation]:
126
+ return [v for v in self._violations if v.level == EnforcementLevel.WARN]
127
+
128
+ @property
129
+ def has_blocking(self) -> bool:
130
+ return len(self.blocking_violations) > 0
131
+
132
+ def summary(self) -> dict[str, Any]:
133
+ return {
134
+ "context": self._context.value,
135
+ "total_violations": len(self._violations),
136
+ "blocking": len(self.blocking_violations),
137
+ "warnings": len(self.warnings),
138
+ "audit_only": len(
139
+ [v for v in self._violations if v.level == EnforcementLevel.AUDIT],
140
+ ),
141
+ }
@@ -0,0 +1,96 @@
1
+ # Copyright (c) Microsoft Corporation.
2
+ # Licensed under the MIT License.
3
+ """GitHub Enterprise managed policy and ruleset integration.
4
+
5
+ Provides integration points for GitHub Enterprise features:
6
+ - Repository rulesets for governance enforcement
7
+ - Custom properties for repo governance tier tagging
8
+ - Enterprise-level policy templates
9
+ """
10
+ from __future__ import annotations
11
+ from dataclasses import dataclass, field
12
+ from enum import Enum
13
+ from typing import Any
14
+
15
+
16
+ class GovernanceTier(str, Enum):
17
+ """Repository governance tier assigned via GitHub custom properties."""
18
+ UNCLASSIFIED = "unclassified"
19
+ BASIC = "basic"
20
+ STANDARD = "standard"
21
+ ELEVATED = "elevated"
22
+ CRITICAL = "critical"
23
+
24
+
25
+ @dataclass
26
+ class RulesetConfig:
27
+ """Configuration for a GitHub repository ruleset."""
28
+ name: str
29
+ enforcement: str = "active" # active, evaluate, disabled
30
+ target: str = "branch" # branch, tag, push
31
+ conditions: dict[str, Any] = field(default_factory=dict)
32
+ rules: list[dict[str, Any]] = field(default_factory=list)
33
+
34
+
35
+ @dataclass
36
+ class EnterpriseGovernancePolicy:
37
+ """Enterprise-level governance policy template.
38
+
39
+ Defines rulesets and custom properties that should be applied
40
+ to repositories based on their governance tier.
41
+ """
42
+ name: str
43
+ description: str = ""
44
+ applicable_tiers: list[GovernanceTier] = field(default_factory=list)
45
+ rulesets: list[RulesetConfig] = field(default_factory=list)
46
+ required_custom_properties: dict[str, str] = field(default_factory=dict)
47
+
48
+
49
+ class EnterpriseGovernanceManager:
50
+ """Manages GitHub Enterprise governance policies and rulesets.
51
+
52
+ Maps governance tiers to repository rulesets and enforces
53
+ enterprise-level policy templates across org repos.
54
+ """
55
+
56
+ def __init__(self) -> None:
57
+ self._policies: list[EnterpriseGovernancePolicy] = []
58
+ self._repo_tiers: dict[str, GovernanceTier] = {}
59
+
60
+ def add_policy(self, policy: EnterpriseGovernancePolicy) -> None:
61
+ self._policies.append(policy)
62
+
63
+ def set_repo_tier(self, repo: str, tier: GovernanceTier) -> None:
64
+ self._repo_tiers[repo] = tier
65
+
66
+ def get_repo_tier(self, repo: str) -> GovernanceTier:
67
+ return self._repo_tiers.get(repo, GovernanceTier.UNCLASSIFIED)
68
+
69
+ def get_applicable_policies(self, repo: str) -> list[EnterpriseGovernancePolicy]:
70
+ """Get all policies applicable to a repo based on its tier."""
71
+ tier = self.get_repo_tier(repo)
72
+ return [p for p in self._policies if tier in p.applicable_tiers]
73
+
74
+ def get_required_rulesets(self, repo: str) -> list[RulesetConfig]:
75
+ """Get all rulesets that should be applied to a repo."""
76
+ rulesets = []
77
+ for policy in self.get_applicable_policies(repo):
78
+ rulesets.extend(policy.rulesets)
79
+ return rulesets
80
+
81
+ def audit_repo_compliance(self, repo: str, active_rulesets: list[str]) -> dict[str, Any]:
82
+ """Audit a repo's compliance with its governance tier requirements."""
83
+ required = self.get_required_rulesets(repo)
84
+ required_names = {r.name for r in required}
85
+ active_set = set(active_rulesets)
86
+ missing = required_names - active_set
87
+ extra = active_set - required_names
88
+ return {
89
+ "repo": repo,
90
+ "tier": self.get_repo_tier(repo).value,
91
+ "compliant": len(missing) == 0,
92
+ "required_rulesets": sorted(required_names),
93
+ "active_rulesets": sorted(active_set),
94
+ "missing_rulesets": sorted(missing),
95
+ "extra_rulesets": sorted(extra),
96
+ }
agent_os/health.py ADDED
@@ -0,0 +1,20 @@
1
+ # Copyright (c) Microsoft Corporation.
2
+ # Licensed under the MIT License.
3
+ """Convenience re-export of health check components.
4
+
5
+ Canonical implementation lives in ``agent_os.integrations.health``.
6
+ """
7
+
8
+ from agent_os.integrations.health import ( # noqa: F401
9
+ ComponentHealth,
10
+ HealthChecker,
11
+ HealthReport,
12
+ HealthStatus,
13
+ )
14
+
15
+ __all__ = [
16
+ "ComponentHealth",
17
+ "HealthChecker",
18
+ "HealthReport",
19
+ "HealthStatus",
20
+ ]
@@ -0,0 +1,279 @@
1
+ # Copyright (c) Microsoft Corporation.
2
+ # Licensed under the MIT License.
3
+ """
4
+ Agent OS Integrations
5
+
6
+ Adapters to wrap existing agent frameworks with Agent OS governance.
7
+
8
+ Supported Frameworks:
9
+ - LangChain: Chains, Agents, Runnables
10
+ - LlamaIndex: Query Engines, Chat Engines, Agents
11
+ - CrewAI: Crews and Agents
12
+ - AutoGen: Multi-agent conversations
13
+ - OpenAI Assistants: Assistants API with tools
14
+ - Anthropic Claude: Messages API with tool use
15
+ - Google Gemini: GenerativeModel with function calling
16
+ - Mistral AI: Chat API with tool calls
17
+ - Semantic Kernel: Microsoft's AI orchestration framework
18
+ - PydanticAI: Model-agnostic agents with tool governance
19
+
20
+ Usage:
21
+ # LangChain
22
+ from agent_os.integrations import LangChainKernel
23
+ kernel = LangChainKernel()
24
+ governed_chain = kernel.wrap(my_chain)
25
+
26
+ # LlamaIndex
27
+ from agent_os.integrations import LlamaIndexKernel
28
+ kernel = LlamaIndexKernel()
29
+ governed_engine = kernel.wrap(my_query_engine)
30
+
31
+ # OpenAI Assistants
32
+ from agent_os.integrations import OpenAIKernel
33
+ kernel = OpenAIKernel()
34
+ governed = kernel.wrap(assistant, client)
35
+
36
+ # Semantic Kernel
37
+ from agent_os.integrations import SemanticKernelWrapper
38
+ governed = SemanticKernelWrapper().wrap(sk_kernel)
39
+ """
40
+
41
+ from agent_os.exceptions import (
42
+ AdapterNotFoundError,
43
+ AdapterTimeoutError,
44
+ AgentOSError,
45
+ BudgetError,
46
+ BudgetExceededError,
47
+ BudgetWarningError,
48
+ ConfigurationError,
49
+ CredentialExpiredError,
50
+ IdentityError,
51
+ IdentityVerificationError,
52
+ IntegrationError,
53
+ InvalidPolicyError,
54
+ MissingConfigError,
55
+ PolicyDeniedError,
56
+ PolicyError,
57
+ PolicyTimeoutError,
58
+ PolicyViolationError,
59
+ RateLimitError,
60
+ )
61
+ from agent_os.integrations.a2a_adapter import A2AEvaluation, A2AGovernanceAdapter, A2APolicy
62
+ from agent_os.integrations.anthropic_adapter import AnthropicKernel, GovernedAnthropicClient
63
+ from agent_os.integrations.autogen_adapter import AutoGenKernel
64
+ from agent_os.integrations.crewai_adapter import CrewAIKernel
65
+ from agent_os.integrations.gemini_adapter import GeminiKernel, GovernedGeminiModel
66
+ from agent_os.integrations.google_adk_adapter import GoogleADKKernel
67
+ from agent_os.integrations.guardrails_adapter import GuardrailsKernel
68
+ from agent_os.integrations.langchain_adapter import LangChainKernel
69
+ try:
70
+ from agent_os.integrations.maf_adapter import (
71
+ AuditTrailMiddleware as MAFAuditTrailMiddleware,
72
+ CapabilityGuardMiddleware as MAFCapabilityGuardMiddleware,
73
+ GovernancePolicyMiddleware as MAFGovernancePolicyMiddleware,
74
+ RogueDetectionMiddleware as MAFRogueDetectionMiddleware,
75
+ create_governance_middleware as maf_create_governance_middleware,
76
+ )
77
+ except ImportError: # agent_framework is an optional dependency
78
+ pass
79
+ from agent_os.integrations.llamafirewall import (
80
+ FirewallMode,
81
+ FirewallResult,
82
+ FirewallVerdict,
83
+ LlamaFirewallAdapter,
84
+ )
85
+ from agent_os.integrations.llamaindex_adapter import LlamaIndexKernel
86
+ from agent_os.integrations.mistral_adapter import GovernedMistralClient, MistralKernel
87
+ from agent_os.integrations.openai_adapter import GovernedAssistant, OpenAIKernel
88
+ from agent_os.integrations.pydantic_ai_adapter import PydanticAIKernel
89
+ from agent_os.integrations.semantic_kernel_adapter import (
90
+ GovernedSemanticKernel,
91
+ SemanticKernelWrapper,
92
+ )
93
+
94
+ from .base import (
95
+ AsyncGovernedWrapper,
96
+ BaseIntegration,
97
+ BoundedSemaphore,
98
+ CompositeInterceptor,
99
+ ContentHashInterceptor,
100
+ DriftResult,
101
+ GovernancePolicy,
102
+ PolicyInterceptor,
103
+ ToolCallInterceptor,
104
+ ToolCallRequest,
105
+ ToolCallResult,
106
+ )
107
+ from .config import AgentOSConfig, get_config, reset_config
108
+ from .conversation_guardian import (
109
+ AlertAction,
110
+ AlertSeverity,
111
+ ConversationAlert,
112
+ ConversationGuardian,
113
+ ConversationGuardianConfig,
114
+ EscalationClassifier,
115
+ FeedbackLoopBreaker,
116
+ OffensiveIntentDetector,
117
+ )
118
+ from .dry_run import DryRunCollector, DryRunDecision, DryRunPolicy, DryRunResult
119
+ from .escalation import (
120
+ ApprovalBackend,
121
+ DefaultTimeoutAction,
122
+ EscalationDecision,
123
+ EscalationHandler,
124
+ EscalationPolicy,
125
+ EscalationRequest,
126
+ EscalationResult,
127
+ InMemoryApprovalQueue,
128
+ QuorumConfig,
129
+ WebhookApprovalBackend,
130
+ )
131
+ from .compat import CompatReport, check_compatibility, doctor, warn_on_import
132
+ from .health import ComponentHealth, HealthChecker, HealthReport, HealthStatus
133
+ from .logging import GovernanceLogger, JSONFormatter, get_logger
134
+ from .policy_compose import PolicyHierarchy, compose_policies, override_policy
135
+ from .rate_limiter import RateLimiter, RateLimitStatus
136
+ from .templates import PolicyTemplates
137
+ from .token_budget import TokenBudgetStatus, TokenBudgetTracker
138
+ from .tool_aliases import ToolAliasRegistry
139
+ from .webhooks import DeliveryRecord, WebhookConfig, WebhookEvent, WebhookNotifier
140
+
141
+ __all__ = [
142
+ # Base
143
+ "AsyncGovernedWrapper",
144
+ "BaseIntegration",
145
+ "DriftResult",
146
+ "GovernancePolicy",
147
+ # Tool Call Interceptor (vendor-neutral)
148
+ "ToolCallInterceptor",
149
+ "ToolCallRequest",
150
+ "ToolCallResult",
151
+ "PolicyInterceptor",
152
+ "CompositeInterceptor",
153
+ # Backpressure / Concurrency
154
+ "BoundedSemaphore",
155
+ # LangChain
156
+ "LangChainKernel",
157
+ # LlamaIndex
158
+ "LlamaIndexKernel",
159
+ # CrewAI
160
+ "CrewAIKernel",
161
+ # AutoGen
162
+ "AutoGenKernel",
163
+ # OpenAI Assistants
164
+ "OpenAIKernel",
165
+ "GovernedAssistant",
166
+ # Anthropic Claude
167
+ "AnthropicKernel",
168
+ "GovernedAnthropicClient",
169
+ # Google Gemini
170
+ "GeminiKernel",
171
+ "GovernedGeminiModel",
172
+ # Mistral AI
173
+ "MistralKernel",
174
+ "GovernedMistralClient",
175
+ # Semantic Kernel
176
+ "SemanticKernelWrapper",
177
+ "GovernedSemanticKernel",
178
+ # Guardrails
179
+ "GuardrailsKernel",
180
+ # Google ADK
181
+ "GoogleADKKernel",
182
+ # A2A (Agent-to-Agent)
183
+ "A2AGovernanceAdapter",
184
+ "A2APolicy",
185
+ "A2AEvaluation",
186
+ # A2A Conversation Guardian
187
+ "ConversationGuardian",
188
+ "ConversationGuardianConfig",
189
+ "ConversationAlert",
190
+ "AlertAction",
191
+ "AlertSeverity",
192
+ "EscalationClassifier",
193
+ "FeedbackLoopBreaker",
194
+ "OffensiveIntentDetector",
195
+ # PydanticAI
196
+ "PydanticAIKernel",
197
+ # Microsoft Agent Framework (MAF)
198
+ "MAFGovernancePolicyMiddleware",
199
+ "MAFCapabilityGuardMiddleware",
200
+ "MAFAuditTrailMiddleware",
201
+ "MAFRogueDetectionMiddleware",
202
+ "maf_create_governance_middleware",
203
+ # LlamaFirewall
204
+ "LlamaFirewallAdapter",
205
+ "FirewallMode",
206
+ "FirewallVerdict",
207
+ "FirewallResult",
208
+ # Token Budget Tracking
209
+ "TokenBudgetTracker",
210
+ "TokenBudgetStatus",
211
+ # Dry Run
212
+ "DryRunPolicy",
213
+ "DryRunResult",
214
+ "DryRunDecision",
215
+ "DryRunCollector",
216
+ # Escalation (Human-in-the-Loop)
217
+ "EscalationPolicy",
218
+ "EscalationHandler",
219
+ "EscalationRequest",
220
+ "EscalationResult",
221
+ "EscalationDecision",
222
+ "DefaultTimeoutAction",
223
+ "ApprovalBackend",
224
+ "InMemoryApprovalQueue",
225
+ "WebhookApprovalBackend",
226
+ # Version Compatibility
227
+ "doctor",
228
+ "check_compatibility",
229
+ "CompatReport",
230
+ "warn_on_import",
231
+ # Tool Aliases
232
+ "ToolAliasRegistry",
233
+ # Rate Limiting
234
+ "RateLimiter",
235
+ "RateLimitStatus",
236
+ # Policy Templates
237
+ "PolicyTemplates",
238
+ # Webhooks
239
+ "WebhookConfig",
240
+ "WebhookEvent",
241
+ "WebhookNotifier",
242
+ "DeliveryRecord",
243
+ # Policy Composition
244
+ "compose_policies",
245
+ "PolicyHierarchy",
246
+ "override_policy",
247
+ # Exceptions
248
+ "AgentOSError",
249
+ "PolicyError",
250
+ "PolicyViolationError",
251
+ "PolicyDeniedError",
252
+ "PolicyTimeoutError",
253
+ "BudgetError",
254
+ "BudgetExceededError",
255
+ "BudgetWarningError",
256
+ "IdentityError",
257
+ "IdentityVerificationError",
258
+ "CredentialExpiredError",
259
+ "IntegrationError",
260
+ "AdapterNotFoundError",
261
+ "AdapterTimeoutError",
262
+ "ConfigurationError",
263
+ "InvalidPolicyError",
264
+ "MissingConfigError",
265
+ "RateLimitError",
266
+ # Health Checks
267
+ "HealthChecker",
268
+ "HealthReport",
269
+ "HealthStatus",
270
+ "ComponentHealth",
271
+ # Structured Logging
272
+ "GovernanceLogger",
273
+ "JSONFormatter",
274
+ "get_logger",
275
+ # Environment Configuration
276
+ "AgentOSConfig",
277
+ "get_config",
278
+ "reset_config",
279
+ ]