Initial commit
This commit is contained in:
72
hooks/SubagentStop/expert-result-logger.py
Executable file
72
hooks/SubagentStop/expert-result-logger.py
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Log expert results and MCP usage at subagent completion.
|
||||
Only runs when WARPIO_LOG=true.
|
||||
"""
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
def extract_expert_info(transcript_path):
|
||||
"""Extract expert type and MCP usage from transcript."""
|
||||
expert_name = "unknown"
|
||||
mcps_used = []
|
||||
|
||||
try:
|
||||
# Parse transcript to identify expert and MCPs
|
||||
# This is simplified - in production would parse the JSONL properly
|
||||
with open(transcript_path, 'r') as f:
|
||||
for line in f:
|
||||
if 'subagent_type' in line:
|
||||
data = json.loads(line)
|
||||
expert_name = data.get('subagent_type', 'unknown')
|
||||
if 'tool_name' in line and 'mcp__' in line:
|
||||
data = json.loads(line)
|
||||
tool = data.get('tool_name', '')
|
||||
if tool.startswith('mcp__'):
|
||||
mcps_used.append(tool)
|
||||
except:
|
||||
pass
|
||||
|
||||
return expert_name, list(set(mcps_used))
|
||||
|
||||
def main():
|
||||
"""Log expert completion with minimal overhead."""
|
||||
# Only run if logging enabled
|
||||
if not os.getenv('WARPIO_LOG'):
|
||||
sys.exit(0)
|
||||
|
||||
try:
|
||||
input_data = json.load(sys.stdin)
|
||||
session_id = input_data.get('session_id', '')
|
||||
transcript = input_data.get('transcript_path', '')
|
||||
|
||||
# Extract expert info from transcript
|
||||
expert_name, mcps_used = extract_expert_info(transcript)
|
||||
|
||||
# Create log entry
|
||||
log_entry = {
|
||||
'timestamp': datetime.now().isoformat(),
|
||||
'session_id': session_id,
|
||||
'expert': expert_name,
|
||||
'mcps_used': mcps_used,
|
||||
'mcp_count': len(mcps_used)
|
||||
}
|
||||
|
||||
# Write to session log
|
||||
log_dir = Path(os.getenv('WARPIO_LOG_DIR', '.warpio-logs'))
|
||||
session_dir = log_dir / f"session-{datetime.now().strftime('%Y%m%d-%H%M%S')}"
|
||||
session_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
with open(session_dir / 'expert-results.jsonl', 'a') as f:
|
||||
f.write(json.dumps(log_entry) + '\n')
|
||||
|
||||
except:
|
||||
pass # Silent fail to not disrupt workflow
|
||||
|
||||
sys.exit(0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user