feat: add collector launchd service and 98 vector store tests
- com.agentic.intel-collector.plist: launchd config for 24/7 data collection - scripts/collector-daemon.sh: start/stop/restart/status/logs control script - test_vector_store.py: 49 tests (98 with trio) covering all vector methods - store, semantic_search, find_similar, timeline, collection_stats - cross_domain_correlate, domain_summary, trend_detection - data_to_text, content_hash, domain_categories, extract_geo - All mocked (no Qdrant/FastEmbed runtime dependency) - Total: 284 tests passing
This commit is contained in:
Executable
+119
@@ -0,0 +1,119 @@
|
||||
#!/bin/bash
|
||||
# Intel Collector Daemon Control
|
||||
#
|
||||
# Manages the world-intel-mcp collector daemon that periodically
|
||||
# fetches global intelligence data across 30+ domains.
|
||||
#
|
||||
# Usage:
|
||||
# collector-daemon.sh start|stop|restart|status|logs
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
PLIST_SRC="/Volumes/SSDRAID0/agentic-system/mcp-servers/world-intel-mcp/com.agentic.intel-collector.plist"
|
||||
PLIST="$HOME/Library/LaunchAgents/com.agentic.intel-collector.plist"
|
||||
LABEL="com.agentic.intel-collector"
|
||||
LOG="/tmp/intel-collector.log"
|
||||
ERR_LOG="/tmp/intel-collector-error.log"
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m'
|
||||
|
||||
case "${1:-help}" in
|
||||
start)
|
||||
if launchctl list "$LABEL" &>/dev/null; then
|
||||
echo -e "${YELLOW}Intel collector already running${NC}"
|
||||
exit 0
|
||||
fi
|
||||
if [ ! -f "$PLIST" ]; then
|
||||
cp "$PLIST_SRC" "$PLIST"
|
||||
fi
|
||||
launchctl load "$PLIST"
|
||||
sleep 1
|
||||
if launchctl list "$LABEL" &>/dev/null; then
|
||||
echo -e "${GREEN}Intel collector started${NC} (interval: 300s)"
|
||||
else
|
||||
echo -e "${RED}Intel collector failed to start. Check:${NC} $ERR_LOG"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
stop)
|
||||
if ! launchctl list "$LABEL" &>/dev/null; then
|
||||
echo -e "${YELLOW}Intel collector not running${NC}"
|
||||
exit 0
|
||||
fi
|
||||
launchctl unload "$PLIST"
|
||||
echo -e "${GREEN}Intel collector stopped${NC}"
|
||||
;;
|
||||
|
||||
restart)
|
||||
"$0" stop
|
||||
sleep 2
|
||||
"$0" start
|
||||
;;
|
||||
|
||||
status)
|
||||
echo "=== Intel Collector Status ==="
|
||||
echo ""
|
||||
if launchctl list "$LABEL" &>/dev/null; then
|
||||
PID=$(launchctl list "$LABEL" 2>/dev/null | head -1 | awk '{print $1}')
|
||||
echo -e "State: ${GREEN}RUNNING${NC} (PID: ${PID:-unknown})"
|
||||
else
|
||||
echo -e "State: ${RED}STOPPED${NC}"
|
||||
fi
|
||||
|
||||
# Log file info
|
||||
if [ -f "$LOG" ]; then
|
||||
SIZE=$(du -h "$LOG" 2>/dev/null | awk '{print $1}')
|
||||
LAST=$(tail -1 "$LOG" 2>/dev/null | head -c 80)
|
||||
echo "Log size: $SIZE"
|
||||
echo "Last line: $LAST"
|
||||
else
|
||||
echo "Log: no output yet"
|
||||
fi
|
||||
|
||||
# Error log
|
||||
if [ -f "$ERR_LOG" ] && [ -s "$ERR_LOG" ]; then
|
||||
ERR_SIZE=$(du -h "$ERR_LOG" 2>/dev/null | awk '{print $1}')
|
||||
echo -e "Errors: ${YELLOW}${ERR_SIZE}${NC} ($ERR_LOG)"
|
||||
else
|
||||
echo -e "Errors: ${GREEN}none${NC}"
|
||||
fi
|
||||
;;
|
||||
|
||||
logs)
|
||||
MODE="${2:-stdout}"
|
||||
case "$MODE" in
|
||||
err|error|stderr)
|
||||
if [ -f "$ERR_LOG" ]; then
|
||||
tail -f "$ERR_LOG"
|
||||
else
|
||||
echo -e "${YELLOW}No error log yet: $ERR_LOG${NC}"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if [ -f "$LOG" ]; then
|
||||
tail -f "$LOG"
|
||||
else
|
||||
echo -e "${YELLOW}No log file yet: $LOG${NC}"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
help|*)
|
||||
echo "Intel Collector Daemon Control"
|
||||
echo ""
|
||||
echo "Usage: $0 {start|stop|restart|status|logs}"
|
||||
echo ""
|
||||
echo " start Start the intel collector daemon"
|
||||
echo " stop Stop the intel collector daemon"
|
||||
echo " restart Restart the intel collector daemon"
|
||||
echo " status Show daemon state and log info"
|
||||
echo " logs Tail stdout log (follow mode)"
|
||||
echo " logs err Tail stderr log (follow mode)"
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user