kernhell 0.1.0__tar.gz → 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kernhell-0.1.0 → kernhell-0.1.1}/PKG-INFO +22 -2
- {kernhell-0.1.0 → kernhell-0.1.1}/README.md +21 -1
- {kernhell-0.1.0 → kernhell-0.1.1}/pyproject.toml +1 -1
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/__init__.py +1 -1
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/analyzer/analyzer.py +19 -11
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/analyzer/healer.py +19 -11
- {kernhell-0.1.0 → kernhell-0.1.1}/.gitignore +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/.kernhellrc.toml +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/LICENSE +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/__main__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/analyzer/prompts.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/api/__init__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/api/server.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cache/__init__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cache/cache_manager.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cache/embedder.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cache/schemas.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cli/__init__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cli/app.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cli/commands/__init__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cli/commands/cache.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cli/commands/config.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cli/commands/dashboard.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cli/commands/heal.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cli/commands/scan.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/cli/ui.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/core/__init__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/core/config.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/core/exceptions.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/core/models.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/core/orchestrator.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/patcher/patcher.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/patcher/verifier.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/pruner/__init__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/pruner/dom_pruner.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/reporter/__init__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/reporter/reporter.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/scanner/__init__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/scanner/parser.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/scanner/runner.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/utils/__init__.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/utils/file_utils.py +0 -0
- {kernhell-0.1.0 → kernhell-0.1.1}/src/kernhell/utils/logger.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: kernhell
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: AI-Powered Autonomous Self-Healing Testing Engine — The Heart of Your System Where Innovation Meets Precision
|
|
5
5
|
Project-URL: Homepage, https://github.com/riteshkumar072/KernHell
|
|
6
6
|
Project-URL: Documentation, https://github.com/riteshkumar072/KernHell#readme
|
|
@@ -116,12 +116,32 @@ flowchart TD
|
|
|
116
116
|
|
|
117
117
|
## 📦 Installation
|
|
118
118
|
|
|
119
|
+
### Quick Install (from PyPI)
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pip install kernhell
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
That's it! Now run `kernhell --help` to get started.
|
|
126
|
+
|
|
127
|
+
### With Optional Dependencies
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Install with dashboard support
|
|
131
|
+
pip install kernhell[dashboard]
|
|
132
|
+
|
|
133
|
+
# Install everything (dev + dashboard)
|
|
134
|
+
pip install kernhell[all]
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 🔧 Developer Setup (Contributing)
|
|
138
|
+
|
|
119
139
|
```bash
|
|
120
140
|
# Clone the repository
|
|
121
141
|
git clone https://github.com/riteshkumar072/KernHell.git
|
|
122
142
|
cd KernHell
|
|
123
143
|
|
|
124
|
-
# Install
|
|
144
|
+
# Install in editable mode with all dev dependencies
|
|
125
145
|
pip install -e ".[all]"
|
|
126
146
|
|
|
127
147
|
# Install Mission Control dashboard dependencies
|
|
@@ -55,12 +55,32 @@ flowchart TD
|
|
|
55
55
|
|
|
56
56
|
## 📦 Installation
|
|
57
57
|
|
|
58
|
+
### Quick Install (from PyPI)
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install kernhell
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
That's it! Now run `kernhell --help` to get started.
|
|
65
|
+
|
|
66
|
+
### With Optional Dependencies
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Install with dashboard support
|
|
70
|
+
pip install kernhell[dashboard]
|
|
71
|
+
|
|
72
|
+
# Install everything (dev + dashboard)
|
|
73
|
+
pip install kernhell[all]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 🔧 Developer Setup (Contributing)
|
|
77
|
+
|
|
58
78
|
```bash
|
|
59
79
|
# Clone the repository
|
|
60
80
|
git clone https://github.com/riteshkumar072/KernHell.git
|
|
61
81
|
cd KernHell
|
|
62
82
|
|
|
63
|
-
# Install
|
|
83
|
+
# Install in editable mode with all dev dependencies
|
|
64
84
|
pip install -e ".[all]"
|
|
65
85
|
|
|
66
86
|
# Install Mission Control dashboard dependencies
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "kernhell"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.1"
|
|
8
8
|
description = "AI-Powered Autonomous Self-Healing Testing Engine — The Heart of Your System Where Innovation Meets Precision"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -136,17 +136,25 @@ class FailureAnalyzer:
|
|
|
136
136
|
|
|
137
137
|
model_name = self.llm_cfg.get_litellm_model_name()
|
|
138
138
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
139
|
+
try:
|
|
140
|
+
response = litellm.completion(
|
|
141
|
+
model=model_name,
|
|
142
|
+
api_key=api_key,
|
|
143
|
+
temperature=self.llm_cfg.temperature,
|
|
144
|
+
max_tokens=self.llm_cfg.max_tokens,
|
|
145
|
+
messages=[
|
|
146
|
+
{"role": "system", "content": system_prompt},
|
|
147
|
+
{"role": "user", "content": user_prompt},
|
|
148
|
+
],
|
|
149
|
+
)
|
|
150
|
+
return response.choices[0].message.content or ""
|
|
151
|
+
except Exception as exc:
|
|
152
|
+
logger.warning(
|
|
153
|
+
"analyzer.llm_call_failed.falling_back_to_heuristic",
|
|
154
|
+
model=model_name,
|
|
155
|
+
error=str(exc),
|
|
156
|
+
)
|
|
157
|
+
return self._heuristic_diagnosis_fallback(user_prompt)
|
|
150
158
|
|
|
151
159
|
def _heuristic_diagnosis_fallback(self, user_prompt: str) -> str:
|
|
152
160
|
"""Deterministic heuristic for offline testing without LLM API key."""
|
|
@@ -207,17 +207,25 @@ class SelectorHealer:
|
|
|
207
207
|
|
|
208
208
|
model_name = self.llm_cfg.get_litellm_model_name()
|
|
209
209
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
210
|
+
try:
|
|
211
|
+
response = litellm.completion(
|
|
212
|
+
model=model_name,
|
|
213
|
+
api_key=api_key,
|
|
214
|
+
temperature=self.llm_cfg.temperature,
|
|
215
|
+
max_tokens=self.llm_cfg.max_tokens,
|
|
216
|
+
messages=[
|
|
217
|
+
{"role": "system", "content": system_prompt},
|
|
218
|
+
{"role": "user", "content": user_prompt},
|
|
219
|
+
],
|
|
220
|
+
)
|
|
221
|
+
return response.choices[0].message.content or ""
|
|
222
|
+
except Exception as exc:
|
|
223
|
+
logger.warning(
|
|
224
|
+
"healer.llm_call_failed.falling_back_to_heuristic",
|
|
225
|
+
model=model_name,
|
|
226
|
+
error=str(exc),
|
|
227
|
+
)
|
|
228
|
+
return self._heuristic_healing_fallback(user_prompt)
|
|
221
229
|
|
|
222
230
|
def _heuristic_healing_fallback(self, user_prompt: str) -> str:
|
|
223
231
|
"""Deterministic heuristic fallback when running offline."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|