File size: 1,833 Bytes
43fcf37 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import time
from datetime import datetime
from src.protocol.symbiont.symbiont_introspect import SymbiontIntrospect
from src.protocol.permanent_memory import PermanentMemory
from src.protocol.decentralized_comm.ipfs_client import IPFSClient
from src.protocol.security.alert_webhook import WebhookAlerter
# === Configuration ===
INTROSPECTION_INTERVAL = 3600 # Run every hour (in seconds)
WEBHOOK_URL = "https://discord.com/api/webhooks/xxx/yyy" # Replace with your actual webhook
# === Initialize Components ===
memory = PermanentMemory(log_dir="./symbiont_logs")
ipfs = IPFSClient()
introspect = SymbiontIntrospect(memory=memory, ipfs_client=ipfs)
alerter = WebhookAlerter(WEBHOOK_URL)
def main():
print("π Symbiont Introspection Scheduler Started")
print(f"β± Interval set to every {INTROSPECTION_INTERVAL / 60:.0f} minutes\n")
while True:
print(f"β³ Starting introspection cycle: {datetime.now().isoformat()}")
try:
introspect.run_introspection()
print("β
Introspection complete.\n")
except Exception as e:
error_msg = f"β Introspection failed at {datetime.now().isoformat()}:\n{str(e)}"
memory.log_event("IntrospectionError", error_msg)
alerter.send_alert("Symbiont Introspection Failure", error_msg)
print(error_msg + "\n")
time.sleep(INTROSPECTION_INTERVAL)
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("π Scheduler interrupted by user. Exiting gracefully.")
except Exception as critical_failure:
failure_msg = f"π₯ Critical failure in scheduler loop: {str(critical_failure)}"
memory.log_event("SchedulerCriticalError", failure_msg)
alerter.send_alert("Critical Scheduler Crash", failure_msg)
raise
|