diff --git a/pkg/node/dispatcher.go b/pkg/node/dispatcher.go new file mode 100644 index 0000000..f6b4124 --- /dev/null +++ b/pkg/node/dispatcher.go @@ -0,0 +1,34 @@ +// pkg/node/dispatcher.go + +func (n *NodeManager) DispatchUEPS(pkt *ueps.ParsedPacket) error { + // 1. The "Threat" Circuit Breaker (L5 Guard) + if pkt.Header.ThreatScore > 50000 { + // High threat? Drop it. Don't even parse the payload. + // This protects the Agent from "semantic viruses" + return fmt.Errorf("packet rejected: threat score %d exceeds safety limit", pkt.Header.ThreatScore) + } + + // 2. The "Intent" Router (L9 Semantic) + switch pkt.Header.IntentID { + + case 0x01: // Handshake / Hello + return n.handleHandshake(pkt) + + case 0x20: // Compute / Job Request + // "Hey, can you run this Docker container?" + // Check local resources first (Self-Validation) + return n.handleComputeRequest(pkt.Payload) + + case 0x30: // Rehab / Intervention + // "Violet says you are hallucinating. Pause execution." + // This is the "Benevolent Intervention" Axiom. + return n.enterRehabMode(pkt.Payload) + + case 0xFF: // Extended / Custom + // Check the payload for specific sub-protocols (e.g. your JSON blobs) + return n.handleApplicationData(pkt.Payload) + + default: + return fmt.Errorf("unknown intent ID: 0x%X", pkt.Header.IntentID) + } +}