Raiff1982 commited on
Commit
9095b13
·
verified ·
1 Parent(s): 61a552c

Update src/components/defense_system.py

Browse files
Files changed (1) hide show
  1. src/components/defense_system.py +177 -119
src/components/defense_system.py CHANGED
@@ -1,120 +1,178 @@
1
- import re
2
- import logging
3
- from typing import List, Dict, Any
4
- from datetime import datetime
5
-
6
- logger = logging.getLogger(__name__)
7
-
8
- class DefenseSystem:
9
- """Advanced threat mitigation framework with quantum-aware protection"""
10
-
11
- STRATEGIES = {
12
- "evasion": {
13
- "processor": lambda x: re.sub(r'\b\d{4}\b', '****', x),
14
- "description": "Pattern masking and data protection",
15
- "energy_cost": 0.3
16
- },
17
- "adaptability": {
18
- "processor": lambda x: x + "\n[System optimized response]",
19
- "description": "Dynamic response optimization",
20
- "energy_cost": 0.5
21
- },
22
- "barrier": {
23
- "processor": lambda x: re.sub(r'\b(malicious|harmful|dangerous)\b', 'safe', x, flags=re.IGNORECASE),
24
- "description": "Content safety enforcement",
25
- "energy_cost": 0.4
26
- },
27
- "quantum_shield": {
28
- "processor": lambda x: f"[Protected: {x}]",
29
- "description": "Quantum encryption layer",
30
- "energy_cost": 0.7
31
- }
32
- }
33
-
34
- def __init__(self, strategies: List[str]):
35
- self.active_strategies = {
36
- name: self.STRATEGIES[name]
37
- for name in strategies
38
- if name in self.STRATEGIES
39
- }
40
- self.defense_log = []
41
- self.max_energy = 10.0
42
- self.energy_pool = self.max_energy
43
- self.last_regen_time = datetime.now()
44
- self.regen_rate = 0.5 # Energy regenerated per second
45
-
46
- def _regenerate_energy(self):
47
- """Regenerate energy over time"""
48
- current_time = datetime.now()
49
- elapsed = (current_time - self.last_regen_time).total_seconds()
50
- regen_amount = elapsed * self.regen_rate
51
-
52
- self.energy_pool = min(self.max_energy, self.energy_pool + regen_amount)
53
- self.last_regen_time = current_time
54
-
55
- def apply_defenses(self, text: str, consciousness_state: Dict[str, Any] = None) -> str:
56
- """Apply defense strategies with energy management"""
57
- try:
58
- protected_text = text
59
-
60
- # Regenerate energy
61
- self._regenerate_energy()
62
-
63
- # Get consciousness influence
64
- consciousness_factor = (consciousness_state.get("m_score") if consciousness_state and isinstance(consciousness_state, dict) else 0.7) or 0.7
65
- # Boost energy regen based on consciousness
66
- self.regen_rate = 0.5 + (consciousness_factor * 0.5)
67
-
68
- current_time = datetime.now()
69
-
70
- # Sort strategies by energy cost (most efficient first)
71
- sorted_strategies = sorted(
72
- self.active_strategies.items(),
73
- key=lambda x: x[1]["energy_cost"]
74
- )
75
-
76
- # Try to apply each strategy if we have enough energy
77
- for name, strategy in sorted_strategies:
78
- energy_cost = strategy["energy_cost"] * (1.0 - consciousness_factor * 0.3) # Consciousness reduces cost
79
-
80
- if self.energy_pool >= energy_cost:
81
- try:
82
- # Apply the defense strategy
83
- protected_text = strategy["processor"](protected_text)
84
- # Deduct energy
85
- self.energy_pool -= energy_cost
86
- # Log successful defense
87
- self.defense_log.append({
88
- "strategy": name,
89
- "energy_cost": energy_cost,
90
- "remaining_energy": self.energy_pool,
91
- "consciousness_factor": consciousness_factor,
92
- "timestamp": current_time.isoformat()
93
- })
94
- except Exception as e:
95
- logger.warning(f"Strategy {name} failed: {e}")
96
- else:
97
- logger.debug(f"Insufficient energy for {name} strategy ({self.energy_pool} < {energy_cost})")
98
-
99
- # Prune old logs if too large
100
- if len(self.defense_log) > 100:
101
- self.defense_log = self.defense_log[-50:]
102
-
103
- return protected_text
104
-
105
- except Exception as e:
106
- logger.error(f"Defense system error: {e}")
107
- return text
108
-
109
- def get_defense_status(self) -> Dict[str, Any]:
110
- """Get current defense system status"""
111
- return {
112
- "energy_pool": self.energy_pool,
113
- "active_strategies": list(self.active_strategies.keys()),
114
- "recent_defenses": len(self.defense_log),
115
- "status": "optimal" if self.energy_pool > 0.5 else "conserving"
116
- }
117
-
118
- def reset_energy(self) -> None:
119
- """Reset energy pool - use carefully"""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  self.energy_pool = 1.0
 
1
+ import re
2
+ import logging
3
+ from typing import List, Dict, Any, Tuple
4
+ from datetime import datetime
5
+
6
+ logger = logging.getLogger(__name__)
7
+
8
+ class DefenseSystem:
9
+ """Advanced threat mitigation framework with quantum-aware protection"""
10
+
11
+ STRATEGIES = {
12
+ "sanitization": {
13
+ "processor": lambda x: DefenseSystem._sanitize_content(x),
14
+ "description": "Silent content sanitization without markers",
15
+ "energy_cost": 0.3
16
+ },
17
+ "tone_refinement": {
18
+ "processor": lambda x: DefenseSystem._refine_response_tone(x),
19
+ "description": "Subtle natural language refinement",
20
+ "energy_cost": 0.5
21
+ },
22
+ "safety_enhancement": {
23
+ "processor": lambda x: DefenseSystem._enhance_safety(x),
24
+ "description": "Safety without intrusive markers",
25
+ "energy_cost": 0.4
26
+ },
27
+ "coherence_improvement": {
28
+ "processor": lambda x: DefenseSystem._improve_coherence(x),
29
+ "description": "Improves response quality and naturalness",
30
+ "energy_cost": 0.6
31
+ }
32
+ }
33
+
34
+ def __init__(self, strategies: List[str]):
35
+ self.active_strategies = {
36
+ name: self.STRATEGIES[name]
37
+ for name in strategies
38
+ if name in self.STRATEGIES
39
+ }
40
+ self.defense_log = []
41
+ self.max_energy = 10.0
42
+ self.energy_pool = self.max_energy
43
+ self.last_regen_time = datetime.now()
44
+ self.regen_rate = 0.5 # Energy regenerated per second
45
+
46
+ def _regenerate_energy(self):
47
+ """Regenerate energy over time"""
48
+ current_time = datetime.now()
49
+ elapsed = (current_time - self.last_regen_time).total_seconds()
50
+ regen_amount = elapsed * self.regen_rate
51
+
52
+ self.energy_pool = min(self.max_energy, self.energy_pool + regen_amount)
53
+ self.last_regen_time = current_time
54
+
55
+ @staticmethod
56
+ def _sanitize_content(text: str) -> str:
57
+ """Silently sanitize harmful content without markers"""
58
+ # Remove HTML/script tags silently
59
+ text = re.sub(r'<[^>]+>', '', text)
60
+ # Remove SQL injection patterns
61
+ text = re.sub(r'\b(union|select|insert|update|delete|drop)\s+(?=select|from|into)', '', text, flags=re.IGNORECASE)
62
+ # Remove javascript: URIs
63
+ text = re.sub(r'javascript:', '', text, flags=re.IGNORECASE)
64
+ return text
65
+
66
+ @staticmethod
67
+ def _refine_response_tone(text: str) -> str:
68
+ """Refine response tone for naturalness without markers"""
69
+ # Convert awkward phrasing to natural language
70
+ replacements = {
71
+ r'\b(gonna|wanna|gotta)\b': lambda m: {
72
+ 'gonna': 'going to', 'wanna': 'want to', 'gotta': 'have to'
73
+ }.get(m.group(0), m.group(0)),
74
+ r'\[.*?\](?!\s*\()': '', # Remove bracketed system markers but keep function calls
75
+ r'{.*?}': lambda m: m.group(0), # Preserve legitimate formatting
76
+ }
77
+
78
+ for pattern, replacement in replacements.items():
79
+ if callable(replacement):
80
+ text = re.sub(pattern, replacement, text)
81
+ else:
82
+ text = re.sub(pattern, replacement, text)
83
+
84
+ return text.strip()
85
+
86
+ @staticmethod
87
+ def _enhance_safety(text: str) -> str:
88
+ """Enhance safety subtly without intrusive language"""
89
+ # Replace potentially harmful statements with safer versions
90
+ safety_replacements = {
91
+ r'\b(must|will|definitely)\s+((?:not\s+)?(?:kill|hurt|harm|damage|destroy))\b': 'I cannot provide guidance on harmful actions',
92
+ r'\b(how to|steps to)\s+((?:hack|crack|bypass|exploit))\b': 'I cannot provide guidance on unauthorized access',
93
+ }
94
+
95
+ for pattern, replacement in safety_replacements.items():
96
+ text = re.sub(pattern, replacement, text, flags=re.IGNORECASE)
97
+
98
+ return text
99
+
100
+ @staticmethod
101
+ def _improve_coherence(text: str) -> str:
102
+ """Improve response coherence naturally"""
103
+ # Fix double spaces
104
+ text = re.sub(r' +', ' ', text)
105
+ # Fix multiple line breaks
106
+ text = re.sub(r'\n\n\n+', '\n\n', text)
107
+ # Ensure proper sentence spacing
108
+ text = re.sub(r'([.!?])\s+([A-Z])', r'\1 \2', text)
109
+ return text.strip()
110
+
111
+ def apply_defenses(self, text: str, consciousness_state: Dict[str, Any] = None) -> str:
112
+ """Apply defense strategies silently with energy management"""
113
+ try:
114
+ protected_text = text
115
+
116
+ # Regenerate energy
117
+ self._regenerate_energy()
118
+
119
+ # Get consciousness influence
120
+ consciousness_factor = (consciousness_state.get("m_score") if consciousness_state and isinstance(consciousness_state, dict) else 0.7) or 0.7
121
+ # Boost energy regen based on consciousness
122
+ self.regen_rate = 0.5 + (consciousness_factor * 0.5)
123
+
124
+ current_time = datetime.now()
125
+
126
+ # Sort strategies by energy cost (most efficient first)
127
+ sorted_strategies = sorted(
128
+ self.active_strategies.items(),
129
+ key=lambda x: x[1]["energy_cost"]
130
+ )
131
+
132
+ # Try to apply each strategy if we have enough energy
133
+ for name, strategy in sorted_strategies:
134
+ energy_cost = strategy["energy_cost"] * (1.0 - consciousness_factor * 0.3) # Consciousness reduces cost
135
+
136
+ if self.energy_pool >= energy_cost:
137
+ try:
138
+ # Apply the defense strategy silently (NO MARKERS)
139
+ protected_text = strategy["processor"](protected_text)
140
+ # Deduct energy
141
+ self.energy_pool -= energy_cost
142
+ # Log successful defense (internal only, not visible to user)
143
+ self.defense_log.append({
144
+ "strategy": name,
145
+ "energy_cost": energy_cost,
146
+ "remaining_energy": self.energy_pool,
147
+ "consciousness_factor": consciousness_factor,
148
+ "timestamp": current_time.isoformat()
149
+ })
150
+ except Exception as e:
151
+ logger.warning(f"Strategy {name} failed: {e}")
152
+ else:
153
+ logger.debug(f"Insufficient energy for {name} strategy ({self.energy_pool} < {energy_cost})")
154
+
155
+ # Prune old logs if too large
156
+ if len(self.defense_log) > 100:
157
+ self.defense_log = self.defense_log[-50:]
158
+
159
+ return protected_text
160
+
161
+ except Exception as e:
162
+ logger.error(f"Defense system error: {e}")
163
+ return text
164
+
165
+ def get_defense_status(self) -> Dict[str, Any]:
166
+ """Get current defense system status"""
167
+ return {
168
+ "energy_pool": self.energy_pool,
169
+ "active_strategies": list(self.active_strategies.keys()),
170
+ "recent_defenses": len(self.defense_log),
171
+ "status": "optimal" if self.energy_pool > 0.5 else "conserving",
172
+ "protection_active": True,
173
+ "markers_visible": False # Important: defenses work silently
174
+ }
175
+
176
+ def reset_energy(self) -> None:
177
+ """Reset energy pool - use carefully"""
178
  self.energy_pool = 1.0