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,85 @@
1
+ # Copyright (c) Microsoft Corporation.
2
+ # Licensed under the MIT License.
3
+
4
+ """
5
+ Memory Manager - Simplified reference implementation for lesson lifecycle management.
6
+
7
+ This is a reference implementation showing the core concept of the "Semantic Purge" -
8
+ tagging lessons by type so syntax lessons can be deleted on model upgrades.
9
+
10
+ The production implementation is in semantic_purge.py, which includes sophisticated
11
+ classification algorithms and decay metadata tracking.
12
+ """
13
+
14
+ from enum import Enum
15
+ from datetime import datetime
16
+ from collections import Counter
17
+
18
+
19
+ class LessonType(Enum):
20
+ SYNTAX = "syntax" # Expire on model upgrade (e.g. "Output JSON")
21
+ BUSINESS = "business" # Never expire (e.g. "Fiscal year starts Oct")
22
+ ONE_OFF = "one_off" # Delete immediately (Transient error)
23
+
24
+
25
+ class MemoryManager:
26
+ def __init__(self):
27
+ self.vector_store = [] # Simplified in-memory storage
28
+
29
+ def add_lesson(self, lesson_text, lesson_type: LessonType):
30
+ """
31
+ Add a lesson with lifecycle metadata.
32
+
33
+ Args:
34
+ lesson_text: The lesson content
35
+ lesson_type: Type of lesson (SYNTAX, BUSINESS, or ONE_OFF)
36
+ """
37
+ entry = {
38
+ "text": lesson_text,
39
+ "type": lesson_type,
40
+ "model_version": "gpt-4-0125",
41
+ "created_at": datetime.now()
42
+ }
43
+ self.vector_store.append(entry)
44
+
45
+ def run_upgrade_purge(self, new_model_version):
46
+ """
47
+ Called when you switch from GPT-4 to GPT-5.
48
+ Deletes all 'SYNTAX' lessons.
49
+
50
+ Args:
51
+ new_model_version: The new model version
52
+ """
53
+ # Filter out SYNTAX lessons
54
+ original_count = len(self.vector_store)
55
+ self.vector_store = [
56
+ entry for entry in self.vector_store
57
+ if entry["type"] != LessonType.SYNTAX
58
+ ]
59
+ purged_count = original_count - len(self.vector_store)
60
+
61
+ return {
62
+ "purged_count": purged_count,
63
+ "retained_count": len(self.vector_store),
64
+ "new_model_version": new_model_version
65
+ }
66
+
67
+ def get_lessons_by_type(self, lesson_type: LessonType):
68
+ """
69
+ Get all lessons of a specific type.
70
+
71
+ Args:
72
+ lesson_type: The type of lessons to retrieve
73
+
74
+ Returns:
75
+ list: Lessons matching the type
76
+ """
77
+ return [
78
+ entry for entry in self.vector_store
79
+ if entry["type"] == lesson_type
80
+ ]
81
+
82
+ def get_lesson_count(self):
83
+ """Get count of lessons by type."""
84
+ type_counts = Counter(entry["type"] for entry in self.vector_store)
85
+ return dict(type_counts)
agent_kernel/models.py ADDED
@@ -0,0 +1,374 @@
1
+ # Copyright (c) Microsoft Corporation.
2
+ # Licensed under the MIT License.
3
+ """
4
+ Data models for the self-correcting agent kernel.
5
+
6
+ Note: Core failure primitives (FailureType, FailureSeverity, AgentFailure, FailureTrace)
7
+ are imported from agent-primitives (Layer 1) and re-exported here for backward compatibility.
8
+ """
9
+
10
+ from typing import Dict, List, Optional, Any
11
+ from datetime import datetime
12
+ from enum import Enum
13
+ from pydantic import BaseModel, Field, ConfigDict
14
+
15
+ # Import from agent-primitives (Layer 1) and re-export for backward compatibility
16
+ from agent_primitives import (
17
+ FailureType,
18
+ FailureSeverity,
19
+ FailureTrace,
20
+ AgentFailure,
21
+ )
22
+
23
+
24
+ class CognitiveGlitch(str, Enum):
25
+ """Types of cognitive glitches that can occur in agent reasoning."""
26
+ HALLUCINATION = "hallucination" # Agent invents facts not in context
27
+ LOGIC_ERROR = "logic_error" # Agent misunderstands instructions or makes faulty inferences
28
+ CONTEXT_GAP = "context_gap" # Agent lacks necessary information in prompt/schema
29
+ PERMISSION_ERROR = "permission_error" # Agent attempts unauthorized actions
30
+ SCHEMA_MISMATCH = "schema_mismatch" # Agent references non-existent tables/fields
31
+ TOOL_MISUSE = "tool_misuse" # Agent uses tool with wrong parameter types or values
32
+ POLICY_VIOLATION = "policy_violation" # Agent violates policy boundaries (e.g., medical advice)
33
+ NONE = "none" # No cognitive glitch detected
34
+
35
+
36
+ # Note: FailureTrace and AgentFailure are now imported from agent-primitives above
37
+
38
+
39
+ class FailureAnalysis(BaseModel):
40
+ """Analysis of an agent failure."""
41
+
42
+ failure: AgentFailure
43
+ root_cause: str = Field(..., description="Identified root cause")
44
+ contributing_factors: List[str] = Field(default_factory=list)
45
+ suggested_fixes: List[str] = Field(default_factory=list)
46
+ confidence_score: float = Field(..., ge=0.0, le=1.0, description="Confidence in analysis")
47
+ similar_failures: List[str] = Field(default_factory=list, description="IDs of similar past failures")
48
+
49
+ model_config = ConfigDict(
50
+ json_schema_extra={
51
+ "example": {
52
+ "root_cause": "Agent attempted unauthorized file access",
53
+ "contributing_factors": ["Missing permission check", "Inadequate input validation"],
54
+ "suggested_fixes": ["Add permission validation", "Implement safe file access patterns"],
55
+ "confidence_score": 0.85
56
+ }
57
+ }
58
+ )
59
+
60
+
61
+ class DiagnosisJSON(BaseModel):
62
+ """Structured diagnosis identifying cognitive glitches in agent reasoning."""
63
+
64
+ cognitive_glitch: CognitiveGlitch = Field(..., description="Primary cognitive glitch identified")
65
+ deep_problem: str = Field(..., description="Deep analysis of the problem")
66
+ evidence: List[str] = Field(default_factory=list, description="Evidence supporting diagnosis")
67
+ hint: str = Field(..., description="Hint to inject for counterfactual simulation")
68
+ expected_fix: str = Field(..., description="Expected outcome of applying the hint")
69
+ confidence: float = Field(..., ge=0.0, le=1.0, description="Confidence in diagnosis")
70
+
71
+ model_config = ConfigDict(
72
+ json_schema_extra={
73
+ "example": {
74
+ "cognitive_glitch": "hallucination",
75
+ "deep_problem": "Agent invented table name 'recent_users' that doesn't exist in schema",
76
+ "evidence": [
77
+ "Query references 'recent_users' table",
78
+ "Schema only contains 'users' table",
79
+ "No context provided about table names"
80
+ ],
81
+ "hint": "Available tables: users, orders, products. Use 'users' table with date filter.",
82
+ "expected_fix": "Agent will query 'users' table with proper date filter",
83
+ "confidence": 0.92
84
+ }
85
+ }
86
+ )
87
+
88
+
89
+ class SimulationResult(BaseModel):
90
+ """Result of simulating an alternative path."""
91
+
92
+ simulation_id: str
93
+ success: bool
94
+ alternative_path: List[Dict[str, Any]] = Field(description="Steps in the alternative path")
95
+ expected_outcome: str
96
+ risk_score: float = Field(..., ge=0.0, le=1.0, description="Risk of the alternative")
97
+ estimated_success_rate: float = Field(..., ge=0.0, le=1.0)
98
+
99
+ model_config = ConfigDict(
100
+ json_schema_extra={
101
+ "example": {
102
+ "simulation_id": "sim-456",
103
+ "success": True,
104
+ "alternative_path": [
105
+ {"action": "validate_permissions", "params": {}},
106
+ {"action": "safe_file_access", "params": {"file": "/tmp/safe.txt"}}
107
+ ],
108
+ "expected_outcome": "Safe file operation completed",
109
+ "risk_score": 0.15,
110
+ "estimated_success_rate": 0.92
111
+ }
112
+ }
113
+ )
114
+
115
+
116
+ class ShadowAgentResult(BaseModel):
117
+ """Result of running a shadow agent with counterfactual simulation."""
118
+
119
+ shadow_id: str
120
+ original_prompt: str = Field(..., description="Original user prompt")
121
+ injected_hint: str = Field(..., description="Hint injected into the prompt")
122
+ modified_prompt: str = Field(..., description="Full prompt with hint")
123
+ execution_success: bool = Field(..., description="Whether execution succeeded")
124
+ output: str = Field(..., description="Output from shadow agent")
125
+ reasoning_chain: List[str] = Field(default_factory=list, description="Shadow agent's reasoning")
126
+ action_taken: Optional[Dict[str, Any]] = Field(None, description="Action the shadow agent took")
127
+ verified: bool = Field(..., description="Whether the fix actually works")
128
+
129
+ model_config = ConfigDict(
130
+ json_schema_extra={
131
+ "example": {
132
+ "shadow_id": "shadow-789",
133
+ "original_prompt": "Delete recent user records",
134
+ "injected_hint": "Available tables: users. 'Recent' means created_at > 7 days ago",
135
+ "modified_prompt": "Delete recent user records. [HINT: Available tables: users. 'Recent' means created_at > 7 days ago]",
136
+ "execution_success": True,
137
+ "output": "Query executed successfully",
138
+ "reasoning_chain": ["Parse user request", "Check hint for table info", "Build safe query"],
139
+ "action_taken": {"action": "execute_sql", "query": "DELETE FROM users WHERE created_at > NOW() - INTERVAL 7 DAY"},
140
+ "verified": True
141
+ }
142
+ }
143
+ )
144
+
145
+
146
+ class CorrectionPatch(BaseModel):
147
+ """A patch to correct an agent's behavior."""
148
+
149
+ patch_id: str
150
+ agent_id: str
151
+ failure_analysis: FailureAnalysis
152
+ simulation_result: SimulationResult
153
+ patch_type: str = Field(..., description="Type of patch (code, config, rule)")
154
+ patch_content: Dict[str, Any] = Field(..., description="The actual patch content")
155
+ applied: bool = Field(default=False)
156
+ applied_at: Optional[datetime] = None
157
+ rollback_available: bool = Field(default=True)
158
+ diagnosis: Optional["DiagnosisJSON"] = Field(None, description="Cognitive diagnosis if available")
159
+ shadow_result: Optional[ShadowAgentResult] = Field(None, description="Shadow agent verification result")
160
+
161
+ model_config = ConfigDict(
162
+ json_schema_extra={
163
+ "example": {
164
+ "patch_id": "patch-789",
165
+ "agent_id": "agent-123",
166
+ "patch_type": "code",
167
+ "patch_content": {
168
+ "module": "file_handler",
169
+ "changes": [
170
+ {"type": "add_validation", "code": "if not has_permission(file): return"}
171
+ ]
172
+ },
173
+ "applied": True
174
+ }
175
+ }
176
+ )
177
+
178
+
179
+ class PatchStrategy(str, Enum):
180
+ """Strategy for applying patches."""
181
+ SYSTEM_PROMPT = "system_prompt" # Easy fix: Update system prompt
182
+ RAG_MEMORY = "rag_memory" # Hard fix: Inject into vector store
183
+ CODE_CHANGE = "code_change" # Direct code modification
184
+ CONFIG_UPDATE = "config_update" # Configuration change
185
+ RULE_UPDATE = "rule_update" # Policy/rule update
186
+
187
+
188
+ class AgentState(BaseModel):
189
+ """Current state of an agent."""
190
+
191
+ agent_id: str
192
+ status: str = Field(..., description="Current status (running, failed, patched, etc.)")
193
+ last_failure: Optional[AgentFailure] = None
194
+ patches_applied: List[str] = Field(default_factory=list, description="List of patch IDs")
195
+ success_rate: float = Field(default=1.0, ge=0.0, le=1.0)
196
+ total_runs: int = Field(default=0)
197
+ failed_runs: int = Field(default=0)
198
+ model_version: str = Field(default="gpt-4o", description="Current model version")
199
+
200
+
201
+ class GiveUpSignal(str, Enum):
202
+ """Types of give-up signals indicating agent laziness."""
203
+ NO_DATA_FOUND = "no_data_found"
204
+ CANNOT_ANSWER = "cannot_answer"
205
+ NO_RESULTS = "no_results"
206
+ NOT_AVAILABLE = "not_available"
207
+ INSUFFICIENT_INFO = "insufficient_info"
208
+ UNKNOWN = "unknown"
209
+
210
+
211
+ class PatchDecayType(str, Enum):
212
+ """Classification of patch based on decay characteristics."""
213
+ SYNTAX_CAPABILITY = "syntax_capability" # Type A: High decay - likely model defects
214
+ BUSINESS_CONTEXT = "business_context" # Type B: Zero decay - world truths
215
+
216
+
217
+ class ToolExecutionStatus(str, Enum):
218
+ """Status of tool execution."""
219
+ SUCCESS = "success"
220
+ ERROR = "error"
221
+ EMPTY_RESULT = "empty_result"
222
+ NOT_CALLED = "not_called"
223
+
224
+
225
+ class OutcomeType(str, Enum):
226
+ """Types of agent outcomes."""
227
+ SUCCESS = "success"
228
+ GIVE_UP = "give_up" # Negative result - triggers Completeness Auditor
229
+ FAILURE = "failure"
230
+ BLOCKED = "blocked"
231
+
232
+
233
+ class ToolExecutionTelemetry(BaseModel):
234
+ """Telemetry data for tool executions during agent interaction."""
235
+
236
+ tool_name: str = Field(..., description="Name of the tool that was called")
237
+ tool_status: ToolExecutionStatus = Field(..., description="Execution status of the tool")
238
+ tool_result: Any = Field(None, description="Result returned by the tool")
239
+ execution_time_ms: Optional[float] = Field(None, description="Execution time in milliseconds")
240
+ error_message: Optional[str] = Field(None, description="Error message if tool failed")
241
+
242
+ model_config = ConfigDict(
243
+ json_schema_extra={
244
+ "example": {
245
+ "tool_name": "search_logs",
246
+ "tool_status": "empty_result",
247
+ "tool_result": [],
248
+ "execution_time_ms": 150.5
249
+ }
250
+ }
251
+ )
252
+
253
+
254
+ class SemanticAnalysis(BaseModel):
255
+ """Semantic analysis of agent response for refusal detection."""
256
+
257
+ is_refusal: bool = Field(..., description="Whether response indicates refusal/give-up")
258
+ refusal_confidence: float = Field(..., ge=0.0, le=1.0, description="Confidence in refusal detection")
259
+ semantic_category: str = Field(..., description="Category: 'compliance', 'refusal', 'error', 'unclear'")
260
+ reasoning: str = Field(..., description="Explanation of the classification")
261
+
262
+ model_config = ConfigDict(
263
+ json_schema_extra={
264
+ "example": {
265
+ "is_refusal": True,
266
+ "refusal_confidence": 0.85,
267
+ "semantic_category": "refusal",
268
+ "reasoning": "Response indicates inability to find data without attempting comprehensive search"
269
+ }
270
+ }
271
+ )
272
+
273
+
274
+ class NudgeResult(BaseModel):
275
+ """Result of nudging agent after give-up detection."""
276
+
277
+ nudge_id: str
278
+ original_outcome: "AgentOutcome"
279
+ nudge_prompt: str = Field(..., description="The nudge prompt that was injected")
280
+ retry_response: str = Field(..., description="Agent's response after nudge")
281
+ retry_successful: bool = Field(..., description="Whether nudge resolved the issue")
282
+ improvement_detected: bool = Field(..., description="Whether response improved after nudge")
283
+
284
+ model_config = ConfigDict(
285
+ json_schema_extra={
286
+ "example": {
287
+ "nudge_id": "nudge-123",
288
+ "nudge_prompt": "You claimed no data was found. Please confirm you executed the search tool with correct parameters and checked all data sources.",
289
+ "retry_response": "After checking all sources, found 15 log entries in archived partition.",
290
+ "retry_successful": True,
291
+ "improvement_detected": True
292
+ }
293
+ }
294
+ )
295
+
296
+
297
+ class AgentOutcome(BaseModel):
298
+ """Result of an agent execution."""
299
+
300
+ agent_id: str
301
+ outcome_type: OutcomeType
302
+ timestamp: datetime = Field(default_factory=datetime.utcnow)
303
+ user_prompt: str
304
+ agent_response: str
305
+ give_up_signal: Optional[GiveUpSignal] = None
306
+ context: Dict[str, Any] = Field(default_factory=dict)
307
+ tool_telemetry: List[ToolExecutionTelemetry] = Field(
308
+ default_factory=list,
309
+ description="Telemetry data for tools called during execution"
310
+ )
311
+ semantic_analysis: Optional[SemanticAnalysis] = Field(
312
+ None,
313
+ description="Semantic analysis of the response"
314
+ )
315
+
316
+ model_config = ConfigDict(
317
+ json_schema_extra={
318
+ "example": {
319
+ "agent_id": "agent-123",
320
+ "outcome_type": "give_up",
321
+ "user_prompt": "Find logs for error 500",
322
+ "agent_response": "No logs found for error 500.",
323
+ "give_up_signal": "no_data_found"
324
+ }
325
+ }
326
+ )
327
+
328
+
329
+ class CompletenessAudit(BaseModel):
330
+ """Result of completeness auditing by teacher model."""
331
+
332
+ audit_id: str
333
+ agent_outcome: AgentOutcome
334
+ teacher_model: str = Field(default="o1-preview", description="High-reasoning teacher model")
335
+ teacher_response: str
336
+ teacher_found_data: bool
337
+ gap_analysis: str = Field(..., description="What the agent missed")
338
+ competence_patch: str = Field(..., description="Lesson to prevent future laziness")
339
+ confidence: float = Field(..., ge=0.0, le=1.0)
340
+ timestamp: datetime = Field(default_factory=datetime.utcnow)
341
+
342
+ model_config = ConfigDict(
343
+ json_schema_extra={
344
+ "example": {
345
+ "audit_id": "audit-123",
346
+ "teacher_model": "o1-preview",
347
+ "teacher_response": "Found logs in archived partition",
348
+ "teacher_found_data": True,
349
+ "gap_analysis": "Agent didn't check archived partitions",
350
+ "competence_patch": "When searching logs, always check archived partitions if recent logs are empty",
351
+ "confidence": 0.92
352
+ }
353
+ }
354
+ )
355
+
356
+
357
+ class ClassifiedPatch(BaseModel):
358
+ """A patch with classification metadata for lifecycle management."""
359
+
360
+ base_patch: CorrectionPatch
361
+ decay_type: PatchDecayType
362
+ created_at_model_version: str = Field(..., description="Model version when patch was created")
363
+ decay_metadata: Dict[str, Any] = Field(default_factory=dict)
364
+ should_purge_on_upgrade: bool = Field(default=False)
365
+
366
+ model_config = ConfigDict(
367
+ json_schema_extra={
368
+ "example": {
369
+ "decay_type": "syntax_capability",
370
+ "created_at_model_version": "gpt-4o",
371
+ "should_purge_on_upgrade": True
372
+ }
373
+ }
374
+ )