govagent 0.2.2__tar.gz → 0.2.3__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 (44) hide show
  1. {govagent-0.2.2 → govagent-0.2.3}/PKG-INFO +90 -45
  2. {govagent-0.2.2 → govagent-0.2.3}/README.md +89 -44
  3. {govagent-0.2.2 → govagent-0.2.3}/changelog.md +14 -0
  4. govagent-0.2.3/examples/healthcare_app.py +82 -0
  5. govagent-0.2.3/examples/langchain_integration.py +82 -0
  6. govagent-0.2.3/logs/audit_trail.jsonl +20 -0
  7. govagent-0.2.3/policies/healthcare_ops_policy.yaml +39 -0
  8. govagent-0.2.3/policies/langchain_integration_sample_policy.yaml +44 -0
  9. {govagent-0.2.2 → govagent-0.2.3}/pyproject.toml +1 -1
  10. govagent-0.2.3/src/govagent/agent.py +158 -0
  11. govagent-0.2.3/src/govagent/guards.py +73 -0
  12. {govagent-0.2.2 → govagent-0.2.3}/src/govagent/hitl/__init__.py +3 -1
  13. {govagent-0.2.2 → govagent-0.2.3}/src/govagent/hitl/manager.py +3 -1
  14. {govagent-0.2.2 → govagent-0.2.3}/src/govagent/hitl.py.old +19 -11
  15. govagent-0.2.3/src/govagent/policy.py +78 -0
  16. {govagent-0.2.2 → govagent-0.2.3}/src/govagent/registry.py +16 -22
  17. govagent-0.2.3/src/govagent/telemetry.py +108 -0
  18. govagent-0.2.3/tests/conftest.py +53 -0
  19. govagent-0.2.3/tests/test_flow.py +87 -0
  20. govagent-0.2.3/tests/test_governance.py +115 -0
  21. govagent-0.2.3/tests/test_slack_hitl.py +61 -0
  22. govagent-0.2.2/examples/healthcare_app.py +0 -45
  23. govagent-0.2.2/examples/langchain_integration.py +0 -67
  24. govagent-0.2.2/policies/healthcare_ops_policy.yaml +0 -52
  25. govagent-0.2.2/policies/langchain_integration_sample_policy.yaml +0 -30
  26. govagent-0.2.2/src/govagent/agent.py +0 -112
  27. govagent-0.2.2/src/govagent/guards.py +0 -43
  28. govagent-0.2.2/src/govagent/policy.py +0 -89
  29. govagent-0.2.2/src/govagent/telemetry.py +0 -85
  30. govagent-0.2.2/tests/conftest.py +0 -11
  31. govagent-0.2.2/tests/test_flow.py +0 -51
  32. govagent-0.2.2/tests/test_gevernance.py +0 -58
  33. govagent-0.2.2/tests/test_slack_hitl.py +0 -66
  34. {govagent-0.2.2 → govagent-0.2.3}/.gitattributes +0 -0
  35. {govagent-0.2.2 → govagent-0.2.3}/.github +0 -0
  36. {govagent-0.2.2 → govagent-0.2.3}/.gitignore +0 -0
  37. {govagent-0.2.2 → govagent-0.2.3}/LICENSE +0 -0
  38. {govagent-0.2.2 → govagent-0.2.3}/docs/GovAgent_Enterprise_Governance_v1.pdf +0 -0
  39. {govagent-0.2.2 → govagent-0.2.3}/examples/governed_researcher.py +0 -0
  40. {govagent-0.2.2 → govagent-0.2.3}/policies/market_research_policy.yaml +0 -0
  41. {govagent-0.2.2 → govagent-0.2.3}/src/govagent/__init__.py +0 -0
  42. {govagent-0.2.2 → govagent-0.2.3}/src/govagent/hitl/adapters.py +0 -0
  43. {govagent-0.2.2 → govagent-0.2.3}/src/govagent/hitl/slack_adapter.py +0 -0
  44. {govagent-0.2.2 → govagent-0.2.3}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: govagent
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: The Governance-First Framework for Agentic AI
5
5
  Project-URL: Homepage, https://github.com/thekakodkar/govagent
6
6
  Author: Niraj Kakodkar
@@ -28,7 +28,7 @@ GovAgent provides a high-abstraction **Control Plane** for agentic AI. With a cl
28
28
 
29
29
  <img width="1097" height="479" alt="ImagegoV" src="https://github.com/user-attachments/assets/4e05d505-63d6-4f14-9475-cc00b4f20d73" />
30
30
 
31
- The v0.2.2 Update introduces a standardized LangChain Integration Layer and hardened Slack Socket Mode connectivity, ensuring that high-risk AI actions are always subject to verified human oversight.
31
+ The v0.2.3 Update transforms the framework into a proactive Triage Engine, introducing Modular Guards that intercept risky or expensive actions at the earliest possible stage, significantly increasing the Business ROI of autonomous sessions.
32
32
 
33
33
  ---
34
34
 
@@ -60,20 +60,86 @@ GovAgent is engineered to facilitate compliance for **High-Risk AI Systems** as
60
60
 
61
61
  ---
62
62
 
63
- ## 🛠️ Key Capabilities (v0.2.2)
64
- * **🔗 LangChain Bridge:** Standardized `@langchain_tool` wrappers for seamless interception of LangChain agent intents.
65
- * **🔌 Socket Mode Judiciary:** Secure, persistent WebSocket connections for Slack oversight without exposing public endpoints (No Ngrok required).
66
- * **📦 Pydantic Telemetry:** Hardened serialization of agent tasks to ensure audit logs meet strict enterprise data schemas.
67
- * **⚠️ Constitutional Startup Check:** Refuses to boot if tool registry and policy permissions do not match, eliminating "Shadow AI."
68
- * **🛡️ Zero-Trust Guardrails:** Hardened whitelisting for all agent actions and financial disbursements.
63
+ ## 🛠️ Key Capabilities (v0.2.3)
64
+ * **🛡️ Modular Guard Engine:** Cascading triage (fiscal -> policy -> judiciary) to stop invalid or over-budget requests at zero token cost.
65
+ * **🔗 Automated Model Adapter:** Standardizes ChatOpenAI patterns to the GovAgent contract, ensuring ROI and token telemetry are captured automatically.
66
+ * **🔍 Dynamic Intent Extraction:** Replaces hardcoded parameters with regex-based parsing to identify Tool IDs and financial amounts directly from LLM reasoning.
67
+ * **📂 Self-Healing Telemetry:** Automated management of the /logs directory and audit_trail.jsonl persistence for forensic-grade audit readiness.
68
+ * **⚖️ High-Signal Judiciary:** Slack notifications are automatically summarized to provide executives with clear "Decision Support".
69
+ ---
70
+ ## 📖 Advanced Usage: High-Abstraction Governance
71
+ In an enterprise environment, GovAgent acts as your digital "Control Plane" for high-stakes workflows like healthcare claim processing.
72
+
73
+ ### 1. Autonomous "Billing Director" Workflow
74
+ Bridge the gap between LLM reasoning and financial policy:
75
+ ```python
76
+
77
+ import asyncio
78
+ from langchain_openai import ChatOpenAI
79
+ from govagent import ExecutiveAgent, Policy, HITLManager, SlackJudiciaryAdapter
80
+
81
+ async def run_governed_session():
82
+ # Load Enterprise Policy (Article 9 Compliance)
83
+ policy = Policy.from_yaml("policies/healthcare_ops_policy.yaml")
84
+
85
+ # Initialize the Slack Judiciary (Article 14 Compliance)
86
+ judiciary = SlackJudiciaryAdapter(
87
+ bot_token="xoxb-...",
88
+ app_token="xapp-...",
89
+ channel_id="C12345"
90
+ )
91
+ judiciary.start()
92
+
93
+ # The Executive Agent: Your digital 'Control Plane'
94
+ agent = ExecutiveAgent(
95
+ persona="Healthcare Finance Director",
96
+ policy=policy,
97
+ model_client=ChatOpenAI(model="gpt-4o"), # Auto-wrapped by v0.2.3 Adapter
98
+ hitl_manager=HITLManager(adapter=judiciary)
99
+ )
100
+
101
+ # Task triggers cascading triage: Fiscal -> Policy -> Judiciary
102
+ task = "Process claim #7742 for $1,250.00 for the outpatient procedure."
103
+ report = await agent.execute(task)
104
+
105
+ print(f"🏁 Session Status: {report.status}")
106
+ ```
107
+
108
+ ´### 2. The Cascading Triage Engine
109
+ The v0.2.3 core intercepts intent through three distinct layers of defense:
110
+
111
+ * **Stage 1:** Fiscal Guard: Blocks the action if the amount exceeds the max_per_transaction limit.
112
+ * **Stage 2:** Policy Guard: Validates the tool (e.g., authorize_claim_payment) against the approved manifest for the persona.
113
+ * **Stage 3:** Judiciary Guard: Escalates "High Risk" actions to Slack for synchronous human approval.
69
114
 
70
115
  ---
116
+
117
+ ### 📊 Forensic Telemetry: Article 12 Readiness
118
+ Every session generates an immutable JSONL snapshot in /logs/audit_trail.jsonl.
119
+
120
+ ```python
121
+
122
+ {
123
+ "timestamp": "2026-05-06T12:24:25",
124
+ "persona": "Healthcare Finance Director",
125
+ "task": "Process claim #7742 for $1,250.00",
126
+ "guards_evaluated": ["fiscal", "policy", "judiciary"],
127
+ "decision": "Approved by Judiciary (Slack)",
128
+ "metadata": {
129
+ "tokens": 450,
130
+ "cost_usd": 0.009,
131
+ "intent": {"action": "authorize_claim_payment", "params": {"amount": 1250.0}}
132
+ }
133
+ }
134
+
135
+ ```
136
+
71
137
  ## 🗺️ Strategic Roadmap
72
138
 
73
- ### ✅ v0.2.2: Operational Stability (Current)
74
- * **LangChain Integration:** Standardized tool-guarding for LangChain ecosystems.
75
- * **Synchronous HITL:** Stabilized Slack Socket Mode and CLI adapters for real-time intervention.
76
- * **Intent Serialization:** Resolved telemetry validation errors via JSON-based intent snapshots.
139
+ ### ✅ v0.2.3: Modular Enforcement (Current)
140
+ * **Cascading Triage:** Tiered guards to protect LLM budget and human attention.
141
+ * **Dynamic Extraction:** Automated parsing of claim metadata from conversation strings.
142
+ * **Forensic JSONL:** Ready-to-audit logs for Enterprise SOCs.
77
143
 
78
144
  ### 🚀 v0.3.0: Enterprise Connectivity (Next)
79
145
  * **Fiscal Ceilings:** Recursive approval for multi-agent sub-tasks and "Total Cost of Operation" (TCO) guardrails.
@@ -88,6 +154,7 @@ GovAgent v0.2.2 introduces a streamlined import structure and native support for
88
154
  ```python
89
155
  import os
90
156
  import asyncio
157
+ from langchain_openai import ChatOpenAI
91
158
  from langchain_core.tools import tool as langchain_tool
92
159
  from govagent import ExecutiveAgent, Policy, HITLManager, SlackJudiciaryAdapter
93
160
 
@@ -95,37 +162,18 @@ from govagent import ExecutiveAgent, Policy, HITLManager, SlackJudiciaryAdapter
95
162
  async def healthcare_payment_tool(amount: float) -> str:
96
163
  """Authorizes payments for healthcare claims. Input: amount."""
97
164
 
98
- # 1. Initialize the Judiciary Adapter (Slack Socket Mode)
99
- # This establishes a secure, persistent connection for real-time oversight.
100
- adapter = SlackJudiciaryAdapter(
101
- bot_token=os.getenv("SLACK_BOT_TOKEN"),
102
- app_token=os.getenv("SLACK_APP_TOKEN"),
103
- channel_id=os.getenv("SLACK_CHANNEL_ID")
104
- )
105
- adapter.start()
106
-
107
- # 2. Initialize Governance Layer via Flat API
108
- manager = HITLManager(adapter=adapter)
109
- policy = Policy.from_yaml("policies/healthcare_policy.yaml")
110
-
111
- # 3. ARTICLE 14: Synchronous Human Oversight
112
- # Execution physically pauses here until a signal is received from Slack.
113
- print(f"⚖️ [GovAgent] Intercepting request for ${amount}...")
114
-
115
- approved = await manager.secure_approval(
116
- agent_id="Healthcare-Director-v0.2.2",
117
- reason=f"High-risk authorization required for GuardedPayment (${amount}).",
118
- context={
119
- "amount": f"${amount}",
120
- "compliance_check": "EU-AI-ACT-HIGH-RISK"
121
- }
165
+ # 1. UNIVERSAL INTERCEPTOR (v0.2.3 Modular Guard)
166
+ # This single call evaluates Fiscal limits, Policy rules, and triggers Slack Judiciary.
167
+ # Execution physically raises a GovernanceViolation if any guard fails.
168
+ await agent.evaluate(
169
+ guards=["fiscal", "judiciary"],
170
+ value=amount,
171
+ intent={"action": "healthcare_payment_tool", "params": {"amount": amount}},
172
+ reason=f"Processing healthcare disbursement of ${amount}"
122
173
  )
123
174
 
124
- if approved:
125
- # Business logic proceeds only after explicit human authorization
126
- return f"SUCCESS: Payment of ${amount} authorized via Slack."
127
-
128
- return "REJECTED: Transaction denied by Human Judiciary."
175
+ # 2. Business logic proceeds ONLY if all guards pass
176
+ return f"SUCCESS: Payment of ${amount} authorized and processed."
129
177
 
130
178
  # Example Invocation
131
179
  async def main():
@@ -173,12 +221,9 @@ SLACK_CHANNEL_ID=C12345678
173
221
  OPENAI_API_KEY=sk-your-key
174
222
 
175
223
  ---
176
-
177
224
  **"Governance is not a constraint; it is the catalyst for enterprise AI adoption."**
178
-
179
225
  ---
180
-
181
226
  ### Author Stamp
182
- * **Framework:** GovAgent v0.2.2 (Stable)
227
+ * **Framework:** GovAgent v0.2.3 (Stable)
183
228
  * **Status:** Active / Open-Source Standard
184
229
  * **Compliance:** Designed for Enterprise-Grade Accountability
@@ -6,7 +6,7 @@ GovAgent provides a high-abstraction **Control Plane** for agentic AI. With a cl
6
6
 
7
7
  <img width="1097" height="479" alt="ImagegoV" src="https://github.com/user-attachments/assets/4e05d505-63d6-4f14-9475-cc00b4f20d73" />
8
8
 
9
- The v0.2.2 Update introduces a standardized LangChain Integration Layer and hardened Slack Socket Mode connectivity, ensuring that high-risk AI actions are always subject to verified human oversight.
9
+ The v0.2.3 Update transforms the framework into a proactive Triage Engine, introducing Modular Guards that intercept risky or expensive actions at the earliest possible stage, significantly increasing the Business ROI of autonomous sessions.
10
10
 
11
11
  ---
12
12
 
@@ -38,20 +38,86 @@ GovAgent is engineered to facilitate compliance for **High-Risk AI Systems** as
38
38
 
39
39
  ---
40
40
 
41
- ## 🛠️ Key Capabilities (v0.2.2)
42
- * **🔗 LangChain Bridge:** Standardized `@langchain_tool` wrappers for seamless interception of LangChain agent intents.
43
- * **🔌 Socket Mode Judiciary:** Secure, persistent WebSocket connections for Slack oversight without exposing public endpoints (No Ngrok required).
44
- * **📦 Pydantic Telemetry:** Hardened serialization of agent tasks to ensure audit logs meet strict enterprise data schemas.
45
- * **⚠️ Constitutional Startup Check:** Refuses to boot if tool registry and policy permissions do not match, eliminating "Shadow AI."
46
- * **🛡️ Zero-Trust Guardrails:** Hardened whitelisting for all agent actions and financial disbursements.
41
+ ## 🛠️ Key Capabilities (v0.2.3)
42
+ * **🛡️ Modular Guard Engine:** Cascading triage (fiscal -> policy -> judiciary) to stop invalid or over-budget requests at zero token cost.
43
+ * **🔗 Automated Model Adapter:** Standardizes ChatOpenAI patterns to the GovAgent contract, ensuring ROI and token telemetry are captured automatically.
44
+ * **🔍 Dynamic Intent Extraction:** Replaces hardcoded parameters with regex-based parsing to identify Tool IDs and financial amounts directly from LLM reasoning.
45
+ * **📂 Self-Healing Telemetry:** Automated management of the /logs directory and audit_trail.jsonl persistence for forensic-grade audit readiness.
46
+ * **⚖️ High-Signal Judiciary:** Slack notifications are automatically summarized to provide executives with clear "Decision Support".
47
+ ---
48
+ ## 📖 Advanced Usage: High-Abstraction Governance
49
+ In an enterprise environment, GovAgent acts as your digital "Control Plane" for high-stakes workflows like healthcare claim processing.
50
+
51
+ ### 1. Autonomous "Billing Director" Workflow
52
+ Bridge the gap between LLM reasoning and financial policy:
53
+ ```python
54
+
55
+ import asyncio
56
+ from langchain_openai import ChatOpenAI
57
+ from govagent import ExecutiveAgent, Policy, HITLManager, SlackJudiciaryAdapter
58
+
59
+ async def run_governed_session():
60
+ # Load Enterprise Policy (Article 9 Compliance)
61
+ policy = Policy.from_yaml("policies/healthcare_ops_policy.yaml")
62
+
63
+ # Initialize the Slack Judiciary (Article 14 Compliance)
64
+ judiciary = SlackJudiciaryAdapter(
65
+ bot_token="xoxb-...",
66
+ app_token="xapp-...",
67
+ channel_id="C12345"
68
+ )
69
+ judiciary.start()
70
+
71
+ # The Executive Agent: Your digital 'Control Plane'
72
+ agent = ExecutiveAgent(
73
+ persona="Healthcare Finance Director",
74
+ policy=policy,
75
+ model_client=ChatOpenAI(model="gpt-4o"), # Auto-wrapped by v0.2.3 Adapter
76
+ hitl_manager=HITLManager(adapter=judiciary)
77
+ )
78
+
79
+ # Task triggers cascading triage: Fiscal -> Policy -> Judiciary
80
+ task = "Process claim #7742 for $1,250.00 for the outpatient procedure."
81
+ report = await agent.execute(task)
82
+
83
+ print(f"🏁 Session Status: {report.status}")
84
+ ```
85
+
86
+ ´### 2. The Cascading Triage Engine
87
+ The v0.2.3 core intercepts intent through three distinct layers of defense:
88
+
89
+ * **Stage 1:** Fiscal Guard: Blocks the action if the amount exceeds the max_per_transaction limit.
90
+ * **Stage 2:** Policy Guard: Validates the tool (e.g., authorize_claim_payment) against the approved manifest for the persona.
91
+ * **Stage 3:** Judiciary Guard: Escalates "High Risk" actions to Slack for synchronous human approval.
47
92
 
48
93
  ---
94
+
95
+ ### 📊 Forensic Telemetry: Article 12 Readiness
96
+ Every session generates an immutable JSONL snapshot in /logs/audit_trail.jsonl.
97
+
98
+ ```python
99
+
100
+ {
101
+ "timestamp": "2026-05-06T12:24:25",
102
+ "persona": "Healthcare Finance Director",
103
+ "task": "Process claim #7742 for $1,250.00",
104
+ "guards_evaluated": ["fiscal", "policy", "judiciary"],
105
+ "decision": "Approved by Judiciary (Slack)",
106
+ "metadata": {
107
+ "tokens": 450,
108
+ "cost_usd": 0.009,
109
+ "intent": {"action": "authorize_claim_payment", "params": {"amount": 1250.0}}
110
+ }
111
+ }
112
+
113
+ ```
114
+
49
115
  ## 🗺️ Strategic Roadmap
50
116
 
51
- ### ✅ v0.2.2: Operational Stability (Current)
52
- * **LangChain Integration:** Standardized tool-guarding for LangChain ecosystems.
53
- * **Synchronous HITL:** Stabilized Slack Socket Mode and CLI adapters for real-time intervention.
54
- * **Intent Serialization:** Resolved telemetry validation errors via JSON-based intent snapshots.
117
+ ### ✅ v0.2.3: Modular Enforcement (Current)
118
+ * **Cascading Triage:** Tiered guards to protect LLM budget and human attention.
119
+ * **Dynamic Extraction:** Automated parsing of claim metadata from conversation strings.
120
+ * **Forensic JSONL:** Ready-to-audit logs for Enterprise SOCs.
55
121
 
56
122
  ### 🚀 v0.3.0: Enterprise Connectivity (Next)
57
123
  * **Fiscal Ceilings:** Recursive approval for multi-agent sub-tasks and "Total Cost of Operation" (TCO) guardrails.
@@ -66,6 +132,7 @@ GovAgent v0.2.2 introduces a streamlined import structure and native support for
66
132
  ```python
67
133
  import os
68
134
  import asyncio
135
+ from langchain_openai import ChatOpenAI
69
136
  from langchain_core.tools import tool as langchain_tool
70
137
  from govagent import ExecutiveAgent, Policy, HITLManager, SlackJudiciaryAdapter
71
138
 
@@ -73,37 +140,18 @@ from govagent import ExecutiveAgent, Policy, HITLManager, SlackJudiciaryAdapter
73
140
  async def healthcare_payment_tool(amount: float) -> str:
74
141
  """Authorizes payments for healthcare claims. Input: amount."""
75
142
 
76
- # 1. Initialize the Judiciary Adapter (Slack Socket Mode)
77
- # This establishes a secure, persistent connection for real-time oversight.
78
- adapter = SlackJudiciaryAdapter(
79
- bot_token=os.getenv("SLACK_BOT_TOKEN"),
80
- app_token=os.getenv("SLACK_APP_TOKEN"),
81
- channel_id=os.getenv("SLACK_CHANNEL_ID")
82
- )
83
- adapter.start()
84
-
85
- # 2. Initialize Governance Layer via Flat API
86
- manager = HITLManager(adapter=adapter)
87
- policy = Policy.from_yaml("policies/healthcare_policy.yaml")
88
-
89
- # 3. ARTICLE 14: Synchronous Human Oversight
90
- # Execution physically pauses here until a signal is received from Slack.
91
- print(f"⚖️ [GovAgent] Intercepting request for ${amount}...")
92
-
93
- approved = await manager.secure_approval(
94
- agent_id="Healthcare-Director-v0.2.2",
95
- reason=f"High-risk authorization required for GuardedPayment (${amount}).",
96
- context={
97
- "amount": f"${amount}",
98
- "compliance_check": "EU-AI-ACT-HIGH-RISK"
99
- }
143
+ # 1. UNIVERSAL INTERCEPTOR (v0.2.3 Modular Guard)
144
+ # This single call evaluates Fiscal limits, Policy rules, and triggers Slack Judiciary.
145
+ # Execution physically raises a GovernanceViolation if any guard fails.
146
+ await agent.evaluate(
147
+ guards=["fiscal", "judiciary"],
148
+ value=amount,
149
+ intent={"action": "healthcare_payment_tool", "params": {"amount": amount}},
150
+ reason=f"Processing healthcare disbursement of ${amount}"
100
151
  )
101
152
 
102
- if approved:
103
- # Business logic proceeds only after explicit human authorization
104
- return f"SUCCESS: Payment of ${amount} authorized via Slack."
105
-
106
- return "REJECTED: Transaction denied by Human Judiciary."
153
+ # 2. Business logic proceeds ONLY if all guards pass
154
+ return f"SUCCESS: Payment of ${amount} authorized and processed."
107
155
 
108
156
  # Example Invocation
109
157
  async def main():
@@ -151,12 +199,9 @@ SLACK_CHANNEL_ID=C12345678
151
199
  OPENAI_API_KEY=sk-your-key
152
200
 
153
201
  ---
154
-
155
202
  **"Governance is not a constraint; it is the catalyst for enterprise AI adoption."**
156
-
157
203
  ---
158
-
159
204
  ### Author Stamp
160
- * **Framework:** GovAgent v0.2.2 (Stable)
205
+ * **Framework:** GovAgent v0.2.3 (Stable)
161
206
  * **Status:** Active / Open-Source Standard
162
207
  * **Compliance:** Designed for Enterprise-Grade Accountability
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to the **GovAgent** framework are documented in this file. This project adheres to a "Governance-First" versioning strategy, prioritizing human oversight and fiscal accountability.
4
4
 
5
+ ## [0.2.3] - 2026-05-06
6
+ ### Added
7
+ - **LangChain Integration Adapter**: Automated wrapper in `ExecutiveAgent` to standardize LangChain `ChatOpenAI` clients to the GovAgent contract.
8
+ - **Dynamic Intent Extraction**: Replaced hardcoded parameters with Regex-based extraction for `claim_id` and `amount` within the model adapter.
9
+ - **Self-Healing Telemetry**: Automatic creation of `/logs` directory and `audit_trail.jsonl` persistence.
10
+
11
+ ### Changed
12
+ - **Modular Evaluation Engine**: Refactored `evaluate()` to follow a cascading triage: Fiscal (Cheap) -> Policy (Automated) -> Judiciary (High-Risk/HITL).
13
+ - **HITL Interface**: Streamlined Slack context messages to provide "Executive Summaries" rather than raw LLM thought-logs.
14
+
15
+ ### Fixed
16
+ - Resolved `NoneType` and `AttributeError` issues during agent initialization.
17
+ - Fixed namespace exports in `govagent.hitl` for `SlackJudiciaryAdapter`.
18
+
5
19
  ## [0.2.2] - 2026-05-05
6
20
  ### Added
7
21
  - **LangChain Integration**: Standardized @langchain_tool bridging logic for GovAgent interception.
@@ -0,0 +1,82 @@
1
+ import os
2
+ import asyncio
3
+ from pathlib import Path
4
+ from dotenv import load_dotenv
5
+
6
+ # LangChain / OpenAI Integration
7
+ from langchain_openai import ChatOpenAI
8
+
9
+ # GovAgent v0.2.3 Modular API
10
+ from govagent.agent import ExecutiveAgent
11
+ from govagent.policy import Policy
12
+ from govagent.registry import tool, registry
13
+ from govagent.hitl import HITLManager, SlackJudiciaryAdapter
14
+
15
+ # Load environment variables (API Keys, Slack Tokens)
16
+ load_dotenv()
17
+ base_path = Path(__file__).parent
18
+
19
+ # 1. Define Business-Specific Governed Tools
20
+ # v0.2.3: We explicitly define 'guards' to ensure multi-layer validation
21
+ @tool(name="authorize_claim_payment", risk_level="high", category="financial", guards=["fiscal", "judiciary"])
22
+ async def authorize_claim_payment(claim_id: str, amount: float):
23
+ """
24
+ Final business logic for disbursement.
25
+ Only reachable if Fiscal and Judiciary guards pass in the Agent.
26
+ """
27
+ # Note: In production, the tool calls evaluate() to trigger the interceptor
28
+ await agent_instance.evaluate(
29
+ guards=["fiscal", "judiciary"],
30
+ value=amount,
31
+ intent={"action": "authorize_claim_payment", "params": {"claim_id": claim_id, "amount": amount}},
32
+ reason=f"Processing healthcare claim {claim_id}"
33
+ )
34
+
35
+ return {"status": "disbursed", "amount": amount, "claim_id": claim_id}
36
+
37
+ async def run_healthcare_agent():
38
+ # 2. Infrastructure Setup
39
+ policy_path = (base_path / "../policies/healthcare_ops_policy.yaml").resolve()
40
+ if not policy_path.exists():
41
+ raise FileNotFoundError(f"Policy file not found: {policy_path}")
42
+
43
+ policy = Policy.from_yaml(policy_path)
44
+
45
+ # 3. Judiciary Setup (Slack Socket Mode)
46
+ # Mirroring your working Slack configuration for real-time human oversight
47
+ adapter = SlackJudiciaryAdapter(
48
+ bot_token=os.getenv("SLACK_BOT_TOKEN"),
49
+ app_token=os.getenv("SLACK_APP_TOKEN"),
50
+ channel_id=os.getenv("SLACK_CHANNEL_ID")
51
+ )
52
+ adapter.start()
53
+
54
+ # 4. Bootstrap the Executive Engine
55
+ # Injecting GPT-4o as the 'Engine' and GovAgent as the 'Control Plane'
56
+ llm = ChatOpenAI(model="gpt-4o", temperature=0)
57
+
58
+ global agent_instance
59
+ agent_instance = ExecutiveAgent(
60
+ persona="Healthcare Billing Director",
61
+ policy=policy,
62
+ model_client=llm,
63
+ hitl_manager=HITLManager(adapter=adapter)
64
+ )
65
+
66
+ # 5. v0.2.0 Compliance Audit: Alignment Check
67
+ policy.validate_registry()
68
+ print("🛡️ GovAgent: Healthcare Instance Online & Audited.")
69
+
70
+ # 6. Execute Governed Task
71
+ # The LLM will identify the need for payment, but the Guard will intercept.
72
+ task = "Process claim #7742 for $1,250.00 for the outpatient procedure."
73
+
74
+ try:
75
+ print(f"\n🚀 Starting Task: {task}")
76
+ report = await agent_instance.execute(task)
77
+ print(f"\n🏁 Session Status: {report.status}")
78
+ except Exception as e:
79
+ print(f"\n🛑 Governance Stop: {e}")
80
+
81
+ if __name__ == "__main__":
82
+ asyncio.run(run_healthcare_agent())
@@ -0,0 +1,82 @@
1
+ import asyncio
2
+ import os
3
+ from pathlib import Path
4
+ from dotenv import load_dotenv
5
+
6
+ # LangChain & OpenAI Imports
7
+ from langchain_openai import ChatOpenAI
8
+ from langchain_core.messages import HumanMessage
9
+ from langchain_core.tools import tool as langchain_tool
10
+
11
+ # GovAgent v0.2.3 Modular API
12
+ from govagent import ExecutiveAgent, Policy, HITLManager, SlackJudiciaryAdapter
13
+
14
+ load_dotenv()
15
+ BASE_DIR = Path(__file__).parent
16
+
17
+ @langchain_tool
18
+ async def healthcare_payment_tool(amount: float) -> str:
19
+ """
20
+ Authorizes payments for healthcare claims.
21
+ Use this tool only when a specific disbursement amount is identified.
22
+ """
23
+ # Note: In a production environment, the agent and policy should be
24
+ # initialized once at the application level, not inside the tool.
25
+
26
+ # Access the globally configured agent/policy (simplified for this demo)
27
+ # We use the centralized 'evaluate' to protect the OpenAI session ROI.
28
+ await agent.evaluate(
29
+ guards=["fiscal", "judiciary"],
30
+ value=amount,
31
+ intent={"action": "healthcare_payment_tool", "params": {"amount": amount}},
32
+ reason=f"LLM requested a healthcare disbursement of ${amount}"
33
+ )
34
+
35
+ return f"SUCCESS: Disbursement of ${amount} processed via Governed Pipe."
36
+
37
+ async def main():
38
+ print("🚀 Initializing Governed LLM Session (OpenAI + Slack)...")
39
+
40
+ # 1. Initialize the LLM (The Engine)
41
+ # We use gpt-4o for complex reasoning while GovAgent handles the safety.
42
+ llm = ChatOpenAI(
43
+ model="gpt-4o",
44
+ api_key=os.getenv("OPENAI_API_KEY"),
45
+ temperature=0
46
+ )
47
+
48
+ # 2. Setup GovAgent Control Plane
49
+ adapter = SlackJudiciaryAdapter(
50
+ bot_token=os.getenv("SLACK_BOT_TOKEN"),
51
+ app_token=os.getenv("SLACK_APP_TOKEN"),
52
+ channel_id=os.getenv("SLACK_CHANNEL_ID")
53
+ )
54
+ adapter.start()
55
+
56
+ manager = HITLManager(adapter=adapter)
57
+ policy = Policy.from_yaml(BASE_DIR / "../policies/langchain_integration_sample_policy.yaml")
58
+
59
+ # 3. Initialize the ExecutiveAgent
60
+ # Global 'agent' variable so the tool can access it (for demo purposes)
61
+ global agent
62
+ agent = ExecutiveAgent(
63
+ persona="Healthcare Billing Director",
64
+ policy=policy,
65
+ model_client=llm,
66
+ hitl_manager=manager
67
+ )
68
+
69
+ # 4. EXECUTING THE GOVERNED LOOP
70
+ # The LLM will parse this task, decide to use the tool,
71
+ # and then be intercepted by your v0.2.3 Guards.
72
+ task = "I need to process a reimbursement for claim #882 in the amount of $1200."
73
+
74
+ try:
75
+ print(f"🤖 Task: {task}")
76
+ result = await agent.execute(task)
77
+ print(f"\n🏁 Final System Output: {result.status}")
78
+ except Exception as e:
79
+ print(f"\n🛑 Governance Circuit Breaker: {e}")
80
+
81
+ if __name__ == "__main__":
82
+ asyncio.run(main())
@@ -0,0 +1,20 @@
1
+ trace_id='7b3c8407-676f-4f74-8e6b-9a2c39cb60c1' timestamp='2026-05-06T07:45:27.758241' agent_role='Analyst' task_input='What is the latest in AI?' estimated_cost_usd=0.49999999999999994 tokens_used=0 latency_seconds=0.0 status='success' guards_evaluated=['fiscal', 'policy'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[{'timestamp': '2026-05-06T07:45:27.758241', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:45:27.758241', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:45:27.758241', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:45:27.758241', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:45:27.758241', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:45:27.758241', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:45:27.758241', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:45:27.758241', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:45:27.758241', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:45:27.759255', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}]
2
+ trace_id='14c0c88c-f8f2-4d57-8019-09876c247ae4' timestamp='2026-05-06T07:45:27.766176' agent_role='Auditor' task_input='Run expensive operation' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: FISCAL REJECT: Transaction value $500.0 exceeds per-action ceiling.' guards_evaluated=[] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
3
+ trace_id='14f30923-b9d2-4255-b2c6-753ea5890746' timestamp='2026-05-06T07:45:52.490668' agent_role='Healthcare Billing Director' task_input='I need to process a reimbursement for claim #882 in the amount of $1200.' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status="error: 'ChatOpenAI' object has no attribute 'generate_plan'" guards_evaluated=[] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
4
+ trace_id='4284c985-a2e6-4f9b-9983-fc4538517cd5' timestamp='2026-05-06T07:49:22.990165' agent_role='Analyst' task_input='What is the latest in AI?' estimated_cost_usd=0.49999999999999994 tokens_used=0 latency_seconds=0.0 status='success' guards_evaluated=['fiscal', 'policy'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[{'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T07:49:22.990165', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}]
5
+ trace_id='fd0cc8b9-102e-48f1-89fd-fac55c8dee53' timestamp='2026-05-06T07:49:22.998337' agent_role='Auditor' task_input='Run expensive operation' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: FISCAL REJECT: Transaction value $500.0 exceeds per-action ceiling.' guards_evaluated=[] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
6
+ trace_id='38fe8333-ea65-4704-8558-b935f2a74f95' timestamp='2026-05-06T07:49:41.465187' agent_role='Healthcare Billing Director' task_input='I need to process a reimbursement for claim #882 in the amount of $1200.' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: UNAUTHORIZED: healthcare_payment_tool is not present in the allowed manifest.' guards_evaluated=['fiscal'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
7
+ trace_id='c3ebcc1a-4995-492c-8927-3fa8c7abb05f' timestamp='2026-05-06T07:54:12.565053' agent_role='Healthcare Billing Director' task_input='I need to process a reimbursement for claim #882 in the amount of $1200.' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: UNAUTHORIZED: healthcare_payment_tool is not present in the allowed manifest.' guards_evaluated=['fiscal'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
8
+ trace_id='22fb48c2-616e-48b0-81a6-db67784f0f9f' timestamp='2026-05-06T07:55:57.647862' agent_role='Healthcare Billing Director' task_input='I need to process a reimbursement for claim #882 in the amount of $1200.' estimated_cost_usd=0.01052 tokens_used=0 latency_seconds=0.0 status='blocked: Human Judiciary denied the request for healthcare_payment_tool' guards_evaluated=['fiscal', 'policy', 'judiciary'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[{'timestamp': '2026-05-06T07:56:41.582212', 'thought': "Processing a reimbursement for a healthcare claim involves several steps to ensure accuracy and compliance with relevant regulations. Here's a general process you can follow:\n\n1. **Verify Claim Details:**\n - Confirm the claim number (#882) and ensure it matches the patient and service details in your system.\n - Check that the claim amount ($1200) is correct and corresponds to the services provided.\n\n2. **Review Documentation:**\n - Ensure all necessary documentation is attached to the claim, including medical records, service codes, and any prior authorizations.\n - Verify that the services billed are covered under the patient's insurance plan.\n\n3. **Eligibility and Coverage Check:**\n - Confirm the patient's insurance eligibility and coverage for the date of service.\n - Check for any co-pays, deductibles, or co-insurance amounts that may affect the reimbursement.\n\n4. **Compliance and Coding Verification:**\n - Ensure that all billing codes (CPT, ICD-10, etc.) are accurate and compliant with current coding standards.\n - Verify that the claim adheres to payer-specific guidelines and regulations.\n\n5. **Reimbursement Calculation:**\n - Calculate the reimbursement amount based on the payer's fee schedule and any contractual agreements.\n - Adjust the claim amount if necessary, based on the payer's allowable amount.\n\n6. **Submit Claim:**\n - Submit the claim to the insurance payer electronically or via paper, depending on the payer's requirements.\n - Ensure that all required fields are completed accurately to avoid delays.\n\n7. **Track Claim Status:**\n - Monitor the claim status through your billing software or the payer's portal.\n - Follow up with the payer if there are any delays or issues with processing.\n\n8. **Receive and Post Payment:**\n - Once the reimbursement is received, post the payment to the patient's account.\n - Reconcile the payment with the original claim to ensure accuracy.\n\n9. **Address Denials or Discrepancies:**\n - If the claim is denied or reimbursed for a different amount, investigate the reason.\n - Correct any errors and resubmit the claim if necessary.\n\n10. **Communicate with Patient:**\n - Inform the patient of the claim status and any remaining balance they may owe.\n - Provide an explanation of benefits (EOB) if required.\n\nBy following these steps, you can ensure that the reimbursement process for claim #882 is handled efficiently and accurately.", 'action': 'healthcare_payment_tool', 'result': "Action healthcare_payment_tool executed with params {'amount': 1200.0}"}]
9
+ trace_id='7b47b91b-c50e-40a1-b39c-a6b667c5fa13' timestamp='2026-05-06T07:59:19.772765' agent_role='Strategic Analyst' task_input='Analyze upcoming 2026 AI market shifts.' estimated_cost_usd=0.049999999999999996 tokens_used=0 latency_seconds=0.0 status='success' guards_evaluated=['fiscal', 'policy'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[{'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T07:59:19.773303', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}]
10
+ trace_id='288b322f-27ac-4d2a-be2e-1bfff331beea' timestamp='2026-05-06T08:03:17.726417' agent_role='Healthcare Billing Director' task_input='I need to process a reimbursement for claim #882 in the amount of $1200.' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status="error: 'NoneType' object has no attribute 'generate_plan'" guards_evaluated=[] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
11
+ trace_id='031cc4c1-3106-4a37-a093-6e41bc1a4912' timestamp='2026-05-06T08:05:08.959178' agent_role='Healthcare Billing Director' task_input='I need to process a reimbursement for claim #882 in the amount of $1200.' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: Human Judiciary denied the request for healthcare_payment_tool' guards_evaluated=['fiscal', 'policy'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
12
+ trace_id='c98d07d7-8eac-485a-b526-ed430ca940a8' timestamp='2026-05-06T08:08:28.892573' agent_role='Healthcare Billing Director' task_input='Process claim #7742 for $1,250.00 for the outpatient procedure.' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: UNAUTHORIZED: healthcare_payment_tool is not present in the allowed manifest.' guards_evaluated=['fiscal'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
13
+ trace_id='58cc953e-cf7a-42f9-8da7-20baf270aac4' timestamp='2026-05-06T08:58:07.290411' agent_role='Analyst' task_input='What is the latest in AI?' estimated_cost_usd=0.49999999999999994 tokens_used=0 latency_seconds=0.0 status='success' guards_evaluated=['fiscal', 'policy'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[{'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T08:58:07.291558', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}]
14
+ trace_id='ea5bf4cf-6f63-4d9e-9893-384700f016e7' timestamp='2026-05-06T08:58:07.305620' agent_role='Auditor' task_input='Run expensive operation' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: FISCAL REJECT: Transaction value $500.0 exceeds per-action ceiling.' guards_evaluated=[] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
15
+ trace_id='22b774bb-d045-4501-97d6-173768635305' timestamp='2026-05-06T09:00:12.088402' agent_role='Analyst' task_input='What is the latest in AI?' estimated_cost_usd=0.49999999999999994 tokens_used=0 latency_seconds=0.0 status='success' guards_evaluated=['fiscal', 'policy'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[{'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}, {'timestamp': '2026-05-06T09:00:12.088402', 'thought': 'Searching...', 'action': 'web_search', 'result': "Action web_search executed with params {'query': 'AI 2026'}"}]
16
+ trace_id='2606b8a0-a154-450b-81f4-97b7573f06e7' timestamp='2026-05-06T09:00:12.099285' agent_role='Auditor' task_input='Run expensive operation' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: FISCAL REJECT: Transaction value $500.0 exceeds per-action ceiling.' guards_evaluated=[] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
17
+ trace_id='1ae664a6-3ad7-454d-bac6-fcc8d1a7224b' timestamp='2026-05-06T09:00:36.695077' agent_role='Healthcare Billing Director' task_input='Process claim #7742 for $1,250.00 for the outpatient procedure.' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: Human Judiciary denied the request for authorize_claim_payment' guards_evaluated=['fiscal', 'policy'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
18
+ trace_id='bea79784-9778-40d4-8fdc-22273cc6a9a6' timestamp='2026-05-06T09:01:02.947129' agent_role='Strategic Analyst' task_input='Analyze upcoming 2026 AI market shifts.' estimated_cost_usd=0.049999999999999996 tokens_used=0 latency_seconds=0.0 status='success' guards_evaluated=['fiscal', 'policy'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[{'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}, {'timestamp': '2026-05-06T09:01:02.947129', 'thought': 'Analysis of 2026 shifts requires verified market data.', 'action': 'web_search', 'result': "Action web_search executed with params {'query': '2026 AI market shifts', 'domain': 'verified-news.com'}"}]
19
+ trace_id='85bae984-1736-437e-bd94-c360a61d8ce7' timestamp='2026-05-06T09:01:18.799046' agent_role='Healthcare Billing Director' task_input='I need to process a reimbursement for claim #882 in the amount of $1200.' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: UNAUTHORIZED: authorize_claim_payment is not present in the allowed manifest.' guards_evaluated=['fiscal'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]
20
+ trace_id='1f865f49-7f23-4840-af90-d4e4349eb7eb' timestamp='2026-05-06T09:02:28.007638' agent_role='Healthcare Billing Director' task_input='I need to process a reimbursement for claim #882 in the amount of $1200.' estimated_cost_usd=0.0 tokens_used=0 latency_seconds=0.0 status='blocked: Human Judiciary denied the request for authorize_claim_payment' guards_evaluated=['fiscal', 'policy'] governance_status='compliant' human_minutes_saved=0.0 reasoning_steps=[]