Files
personal-agent-os/memory-systems/agent-os/My-Brain-Is-Full-Crew/orchestra/contact-lookup
T
2026-09-16 00:00:30 -07:00

60 lines
1.7 KiB
Bash

#!/usr/bin/env bash
# Search Hey tracker for all emails from a specific person
# Usage: contact-lookup <name or email>
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
VAULT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
TRACKER="$VAULT_DIR/Meta/hey-tracker.jsonl"
if [[ ! -f "$TRACKER" ]]; then
echo "Tracker not found at $TRACKER" >&2
exit 1
fi
if [[ -z "${1:-}" ]]; then
echo "Usage: contact-lookup <name or email>" >&2
exit 1
fi
python3 - "$TRACKER" "$1" <<'PYEOF'
import json, sys
tracker_path, query = sys.argv[1], sys.argv[2].lower()
results = []
with open(tracker_path) as f:
for line in f:
try:
e = json.loads(line)
except Exception:
continue
if query in e.get("sender_name", "").lower() or query in e.get("sender_email", "").lower():
results.append(e)
# Dedupe by topic_id, keep latest (skip entries with no topic_id)
seen = {}
for e in results:
tid = e.get("topic_id")
if not tid:
continue
seen[tid] = e
results = sorted(seen.values(), key=lambda x: x.get("active_at", ""), reverse=True)
if not results:
print(f'No emails found from "{query}"')
else:
emails = set(e.get("sender_email", "") for e in results if e.get("sender_email"))
names = set(e.get("sender_name", "") for e in results if e.get("sender_name"))
print(f'Found {len(results)} threads from: {", ".join(names)}')
print(f'Email(s): {", ".join(emails)}')
print()
for e in results[:20]:
date = e.get("active_at", "")[:10]
mb = e.get("mailbox", "")
subj = e.get("subject", "")[:60]
tid = e.get("topic_id", "")
print(f"{date} | {mb:8} | {subj} | {tid}")
if len(results) > 20:
print(f" ... and {len(results) - 20} more")
PYEOF