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