Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/AI_Brain / skynet/engine.py |
| Date | Not specified in source |
| Repository | Janady13/AI_Brain |
| Revision | cdb497ece2d1a770ca8c83eb1de8923cfaa9eceb |
| Branch | feature/seeder-engine-tests |
| Path or archive member | skynet/engine.py |
| Original SHA-256 | dd0d8de563c40fe1653681b5fd0bea6d42f31baf63ab54f5c2f0ab6847dce9b9 |
| Git blob SHA | fc6fe0f71002deb5fb711ea513739ebd1a5b69f2 |
| Reading-copy SHA-256 | dd0d8de563c40fe1653681b5fd0bea6d42f31baf63ab54f5c2f0ab6847dce9b9 |
Recovered source transcript
Download complete source text ↓108 lines · 4.8 KB
#!/usr/bin/env python3
from __future__ import annotations
import os
import time
import socket
import threading
from typing import Any, Callable, Dict, List, Optional
try:
# Prefer real Omnicron interface if available
from omnicron import iface as omni # type: ignore
except Exception: # pragma: no cover
# Fallback to local shim
from infra import omnicron_iface as omni # type: ignore
from skynet.agents_api_client import AgentsApiClient, AgentsApiError
from skynet import handlers
Handler = Callable[[], Dict[str, Any]]
DEFAULT_HANDLERS: Dict[str, Handler] = {
"planner.run": handlers.handle_planner_run,
"alignment.evaluate": handlers.handle_alignment_evaluate,
"metabrain.consolidate": handlers.handle_metabrain_consolidate,
"executor.run": handlers.handle_executor_run,
"github.sync": handlers.handle_github_sync,
# Revenue-oriented kinds
"marketing.publish": handlers.handle_marketing_publish,
"affiliate.publish": handlers.handle_affiliate_publish,
"commerce.cashapp.promote": handlers.handle_commerce_cashapp_promote,
"commerce.venmo.promote": handlers.handle_commerce_venmo_promote,
"revenue.stripe.refresh_keys": handlers.handle_revenue_stripe_refresh_keys,
"revenue.stripe.create_checkout": handlers.handle_revenue_stripe_checkout,
"revenue.stripe.consume": handlers.handle_revenue_stripe_consume,
}
class SkynetEngine:
def __init__(self, kinds: Optional[List[str]] = None, agent_id: Optional[str] = None, client: Optional[AgentsApiClient] = None, registry: Optional[Dict[str, Handler]] = None) -> None:
self.kinds = kinds or list(DEFAULT_HANDLERS.keys())
self.agent_id = agent_id or os.getenv("AGENT_ID") or os.getenv("HOSTNAME") or "skynet-engine"
self.client = client or AgentsApiClient()
self.registry: Dict[str, Handler] = registry or DEFAULT_HANDLERS
self._hb_stop = threading.Event()
self._hb_thread: Optional[threading.Thread] = None
def _start_presence_heartbeat(self, interval_s: float = 30.0) -> None:
hostname = socket.gethostname()
ip = os.getenv("TS_IP") or None
kinds = self.kinds
tags_env = os.getenv("AGENT_TAGS") or os.getenv("SKYNET_TAGS") or "skynet"
tags = [t.strip() for t in tags_env.split(",") if t.strip()]
def loop() -> None:
while not self._hb_stop.is_set():
try:
self.client.agents_heartbeat(agent=self.agent_id, hostname=hostname, ip=ip, kinds=kinds, meta={"tags": tags})
except Exception as exc:
omni.emit_log("skynet_engine_presence_error", level="debug", payload={"error": str(exc)})
self._hb_stop.wait(interval_s)
t = threading.Thread(target=loop, name="skynet-presence", daemon=True)
t.start()
self._hb_thread = t
def run_forever(self, idle_sleep_s: float = 10.0) -> None:
omni.emit_log("skynet_engine_start", payload={"kinds": self.kinds, "agent": self.agent_id})
self._start_presence_heartbeat()
while True:
try:
claim = self.client.claim(agent=self.agent_id, kinds=self.kinds)
except AgentsApiError as e:
# No tasks or temporary failure
omni.emit_log("skynet_engine_idle", level="debug", payload={"error": str(e)})
time.sleep(idle_sleep_s)
continue
task = claim.get("task") or claim
tid = task.get("id")
kind = task.get("kind") or ""
handler = self.registry.get(kind)
if not handler:
omni.emit_log("skynet_engine_unknown_kind", level="warn", payload={"kind": kind, "task_id": tid})
# Mark failed to avoid deadlocks
try:
self.client.fail(tid, self.agent_id, f"unknown kind: {kind}")
except Exception:
pass
continue
try:
self.client.heartbeat(tid, self.agent_id, status="running")
result = handler() or {}
self.client.complete(tid, self.agent_id, result=result, message="ok", return_code=0)
omni.emit_log("skynet_engine_task_done", payload={"task_id": tid, "kind": kind})
except Exception as exc:
omni.emit_log("skynet_engine_task_error", level="warn", payload={"task_id": tid, "kind": kind, "error": str(exc)})
try:
self.client.fail(tid, self.agent_id, str(exc))
except Exception:
pass
def run() -> None: # convenient entrypoint
kinds_env = os.getenv("SKYNET_KINDS", "").strip()
kinds = [k.strip() for k in kinds_env.split(",") if k.strip()] if kinds_env else None
SkynetEngine(kinds=kinds).run_forever()