uneven-ai 0.11.1 → 0.12.1
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.
Potentially problematic release.
This version of uneven-ai might be problematic. Click here for more details.
- package/CHANGELOG.md +14 -0
- package/README.md +31 -18
- package/dist/{core → application/analysis}/active-scanner.d.ts +1 -1
- package/dist/application/analysis/active-scanner.d.ts.map +1 -0
- package/dist/application/analysis/dashboard-generator.d.ts.map +1 -0
- package/dist/{core → application/analysis}/data-analyst.d.ts +1 -1
- package/dist/application/analysis/data-analyst.d.ts.map +1 -0
- package/dist/{core → application/analysis}/data-analyst.js +2 -2
- package/dist/application/analysis/data-security-context.d.ts.map +1 -0
- package/dist/application/analysis/excel-exporter.d.ts.map +1 -0
- package/dist/{core → application/analysis}/llm-security-reviewer.d.ts +1 -1
- package/dist/application/analysis/llm-security-reviewer.d.ts.map +1 -0
- package/dist/{core → application/analysis}/malware-scanner.d.ts +1 -1
- package/dist/application/analysis/malware-scanner.d.ts.map +1 -0
- package/dist/{core → application/analysis}/malware-scanner.js +1 -1
- package/dist/application/analysis/pentest-security-context.d.ts.map +1 -0
- package/dist/application/analysis/report-packager.d.ts.map +1 -0
- package/dist/{core → application/analysis}/sbom-generator.d.ts +1 -1
- package/dist/application/analysis/sbom-generator.d.ts.map +1 -0
- package/dist/{core → application/analysis}/security-analyzer.d.ts +1 -1
- package/dist/application/analysis/security-analyzer.d.ts.map +1 -0
- package/dist/{core → application/analysis}/security-analyzer.js +1 -1
- package/dist/application/analysis/security-reporter.d.ts.map +1 -0
- package/dist/{core → application/analysis}/supply-chain-auditor.d.ts +1 -1
- package/dist/application/analysis/supply-chain-auditor.d.ts.map +1 -0
- package/dist/{core → application/development}/analyst-job-manager.d.ts +1 -1
- package/dist/application/development/analyst-job-manager.d.ts.map +1 -0
- package/dist/{core → application/development}/fix-engine.d.ts +3 -3
- package/dist/application/development/fix-engine.d.ts.map +1 -0
- package/dist/{core → application/development}/fix-engine.js +5 -5
- package/dist/{core → application/development}/test-runner.d.ts +1 -1
- package/dist/application/development/test-runner.d.ts.map +1 -0
- package/dist/application/index.d.ts +20 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +19 -0
- package/dist/{core → application/orchestration}/engine.d.ts +3 -3
- package/dist/application/orchestration/engine.d.ts.map +1 -0
- package/dist/{core → application/orchestration}/engine.js +36 -28
- package/dist/application/orchestration/incremental-index.d.ts.map +1 -0
- package/dist/{core → application/orchestration}/knowledge-retriever.d.ts +2 -2
- package/dist/application/orchestration/knowledge-retriever.d.ts.map +1 -0
- package/dist/{core → application/orchestration}/knowledge-retriever.js +1 -1
- package/dist/cli/commands/analyze.js +14 -14
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +26 -7
- package/dist/cli/commands/askf.d.ts.map +1 -1
- package/dist/cli/commands/askf.js +16 -13
- package/dist/cli/commands/ci.js +9 -9
- package/dist/cli/commands/index.js +4 -4
- package/dist/cli/commands/info.js +3 -3
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +40 -19
- package/dist/cli/commands/license.d.ts.map +1 -1
- package/dist/cli/commands/license.js +2 -1
- package/dist/cli/commands/pentest.d.ts.map +1 -1
- package/dist/cli/commands/pentest.js +10 -8
- package/dist/cli/commands/reset.js +3 -3
- package/dist/cli/commands/restore.js +1 -1
- package/dist/cli/commands/scan.d.ts.map +1 -1
- package/dist/cli/commands/scan.js +9 -7
- package/dist/cli/commands/start.js +1 -1
- package/dist/cli/commands/test-cmd.js +2 -2
- package/dist/cli/commands/undo.js +2 -2
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +7 -8
- package/dist/cli/index.js +6 -2
- package/dist/cli/theme.js +1 -1
- package/dist/core/index.d.ts +10 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/domain/entities/session.d.ts.map +1 -0
- package/dist/domain/entities/snapshot.d.ts.map +1 -0
- package/dist/domain/index.d.ts +8 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +8 -0
- package/dist/domain/services/chunker.d.ts.map +1 -0
- package/dist/domain/services/hardware-detector.d.ts +34 -0
- package/dist/domain/services/hardware-detector.d.ts.map +1 -0
- package/dist/{core → domain/services}/hardware-detector.js +37 -5
- package/dist/{core → domain/services}/index-planner.d.ts +1 -1
- package/dist/domain/services/index-planner.d.ts.map +1 -0
- package/dist/domain/services/resource-guardian.d.ts +39 -0
- package/dist/domain/services/resource-guardian.d.ts.map +1 -0
- package/dist/domain/services/resource-guardian.js +105 -0
- package/dist/{core → domain/services}/safety-guard.d.ts +1 -1
- package/dist/domain/services/safety-guard.d.ts.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/{core → infrastructure/adapters}/bridge.d.ts +10 -7
- package/dist/infrastructure/adapters/bridge.d.ts.map +1 -0
- package/dist/{core → infrastructure/adapters}/bridge.js +24 -12
- package/dist/{core → infrastructure/adapters}/external-providers.d.ts +2 -2
- package/dist/infrastructure/adapters/external-providers.d.ts.map +1 -0
- package/dist/{core → infrastructure/adapters}/external-providers.js +38 -16
- package/dist/infrastructure/index.d.ts +15 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +15 -0
- package/dist/{core → infrastructure/io}/db-loader.d.ts +1 -1
- package/dist/infrastructure/io/db-loader.d.ts.map +1 -0
- package/dist/infrastructure/io/file-watcher.d.ts.map +1 -0
- package/dist/infrastructure/io/git-manager.d.ts.map +1 -0
- package/dist/{core → infrastructure/io}/logger/index.d.ts +1 -1
- package/dist/infrastructure/io/logger/index.d.ts.map +1 -0
- package/dist/{core → infrastructure/io}/logger/index.js +2 -2
- package/dist/{core → infrastructure/io}/process-watcher.d.ts +1 -1
- package/dist/infrastructure/io/process-watcher.d.ts.map +1 -0
- package/dist/{core → infrastructure/io}/process-watcher.js +1 -1
- package/dist/infrastructure/io/web-scraper.d.ts.map +1 -0
- package/dist/infrastructure/license/fingerprint.d.ts.map +1 -0
- package/dist/infrastructure/license/gate.d.ts.map +1 -0
- package/dist/{core → infrastructure}/license/index.d.ts +2 -0
- package/dist/infrastructure/license/index.d.ts.map +1 -0
- package/dist/{core → infrastructure}/license/index.js +2 -0
- package/dist/infrastructure/license/manager.d.ts.map +1 -0
- package/dist/{core → infrastructure}/license/manager.js +7 -17
- package/dist/infrastructure/license/storage.d.ts.map +1 -0
- package/dist/infrastructure/license/verifier.d.ts.map +1 -0
- package/dist/{core → infrastructure/utils}/config-loader.d.ts +1 -1
- package/dist/infrastructure/utils/config-loader.d.ts.map +1 -0
- package/dist/infrastructure/utils/error-parser.d.ts.map +1 -0
- package/dist/{core → infrastructure/utils}/error-parser.js +55 -0
- package/dist/infrastructure/utils/migration.d.ts +10 -0
- package/dist/infrastructure/utils/migration.d.ts.map +1 -0
- package/dist/infrastructure/utils/migration.js +63 -0
- package/dist/infrastructure/utils/process-lock.d.ts.map +1 -0
- package/dist/infrastructure/utils/timeout.d.ts.map +1 -0
- package/examples/demo.sh +10 -10
- package/examples/demo.ts +17 -17
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/uneven_core.node +0 -0
- package/prebuilds/darwin-x64/uneven_core.node +0 -0
- package/prebuilds/linux-arm64/uneven_core.node +0 -0
- package/prebuilds/linux-x64/uneven_core.node +0 -0
- package/prebuilds/win32-x64/uneven_core.node +0 -0
- package/dist/core/active-scanner.d.ts.map +0 -1
- package/dist/core/analyst-job-manager.d.ts.map +0 -1
- package/dist/core/bridge.d.ts.map +0 -1
- package/dist/core/chunker.d.ts.map +0 -1
- package/dist/core/config-loader.d.ts.map +0 -1
- package/dist/core/dashboard-generator.d.ts.map +0 -1
- package/dist/core/data-analyst.d.ts.map +0 -1
- package/dist/core/data-security-context.d.ts.map +0 -1
- package/dist/core/db-loader.d.ts.map +0 -1
- package/dist/core/engine.d.ts.map +0 -1
- package/dist/core/error-parser.d.ts.map +0 -1
- package/dist/core/excel-exporter.d.ts.map +0 -1
- package/dist/core/external-providers.d.ts.map +0 -1
- package/dist/core/file-watcher.d.ts.map +0 -1
- package/dist/core/fix-engine.d.ts.map +0 -1
- package/dist/core/git-manager.d.ts.map +0 -1
- package/dist/core/hardware-detector.d.ts +0 -23
- package/dist/core/hardware-detector.d.ts.map +0 -1
- package/dist/core/incremental-index.d.ts.map +0 -1
- package/dist/core/index-planner.d.ts.map +0 -1
- package/dist/core/knowledge-retriever.d.ts.map +0 -1
- package/dist/core/license/fingerprint.d.ts.map +0 -1
- package/dist/core/license/gate.d.ts.map +0 -1
- package/dist/core/license/index.d.ts.map +0 -1
- package/dist/core/license/manager.d.ts.map +0 -1
- package/dist/core/license/storage.d.ts.map +0 -1
- package/dist/core/license/verifier.d.ts.map +0 -1
- package/dist/core/llm-security-reviewer.d.ts.map +0 -1
- package/dist/core/logger/index.d.ts.map +0 -1
- package/dist/core/malware-scanner.d.ts.map +0 -1
- package/dist/core/pentest-security-context.d.ts.map +0 -1
- package/dist/core/process-lock.d.ts.map +0 -1
- package/dist/core/process-watcher.d.ts.map +0 -1
- package/dist/core/report-packager.d.ts.map +0 -1
- package/dist/core/safety-guard.d.ts.map +0 -1
- package/dist/core/sbom-generator.d.ts.map +0 -1
- package/dist/core/security-analyzer.d.ts.map +0 -1
- package/dist/core/security-reporter.d.ts.map +0 -1
- package/dist/core/session.d.ts.map +0 -1
- package/dist/core/snapshot.d.ts.map +0 -1
- package/dist/core/supply-chain-auditor.d.ts.map +0 -1
- package/dist/core/test-runner.d.ts.map +0 -1
- package/dist/core/timeout.d.ts.map +0 -1
- package/dist/core/web-scraper.d.ts.map +0 -1
- /package/dist/{core → application/analysis}/active-scanner.js +0 -0
- /package/dist/{core → application/analysis}/dashboard-generator.d.ts +0 -0
- /package/dist/{core → application/analysis}/dashboard-generator.js +0 -0
- /package/dist/{core → application/analysis}/data-security-context.d.ts +0 -0
- /package/dist/{core → application/analysis}/data-security-context.js +0 -0
- /package/dist/{core → application/analysis}/excel-exporter.d.ts +0 -0
- /package/dist/{core → application/analysis}/excel-exporter.js +0 -0
- /package/dist/{core → application/analysis}/llm-security-reviewer.js +0 -0
- /package/dist/{core → application/analysis}/pentest-security-context.d.ts +0 -0
- /package/dist/{core → application/analysis}/pentest-security-context.js +0 -0
- /package/dist/{core → application/analysis}/report-packager.d.ts +0 -0
- /package/dist/{core → application/analysis}/report-packager.js +0 -0
- /package/dist/{core → application/analysis}/sbom-generator.js +0 -0
- /package/dist/{core → application/analysis}/security-reporter.d.ts +0 -0
- /package/dist/{core → application/analysis}/security-reporter.js +0 -0
- /package/dist/{core → application/analysis}/supply-chain-auditor.js +0 -0
- /package/dist/{core → application/development}/analyst-job-manager.js +0 -0
- /package/dist/{core → application/development}/test-runner.js +0 -0
- /package/dist/{core → application/orchestration}/incremental-index.d.ts +0 -0
- /package/dist/{core → application/orchestration}/incremental-index.js +0 -0
- /package/dist/{core → domain/entities}/session.d.ts +0 -0
- /package/dist/{core → domain/entities}/session.js +0 -0
- /package/dist/{core → domain/entities}/snapshot.d.ts +0 -0
- /package/dist/{core → domain/entities}/snapshot.js +0 -0
- /package/dist/{core → domain/services}/chunker.d.ts +0 -0
- /package/dist/{core → domain/services}/chunker.js +0 -0
- /package/dist/{core → domain/services}/index-planner.js +0 -0
- /package/dist/{core → domain/services}/safety-guard.js +0 -0
- /package/dist/{core → infrastructure/io}/db-loader.js +0 -0
- /package/dist/{core → infrastructure/io}/file-watcher.d.ts +0 -0
- /package/dist/{core → infrastructure/io}/file-watcher.js +0 -0
- /package/dist/{core → infrastructure/io}/git-manager.d.ts +0 -0
- /package/dist/{core → infrastructure/io}/git-manager.js +0 -0
- /package/dist/{core → infrastructure/io}/web-scraper.d.ts +0 -0
- /package/dist/{core → infrastructure/io}/web-scraper.js +0 -0
- /package/dist/{core → infrastructure}/license/fingerprint.d.ts +0 -0
- /package/dist/{core → infrastructure}/license/fingerprint.js +0 -0
- /package/dist/{core → infrastructure}/license/gate.d.ts +0 -0
- /package/dist/{core → infrastructure}/license/gate.js +0 -0
- /package/dist/{core → infrastructure}/license/manager.d.ts +0 -0
- /package/dist/{core → infrastructure}/license/storage.d.ts +0 -0
- /package/dist/{core → infrastructure}/license/storage.js +0 -0
- /package/dist/{core → infrastructure}/license/verifier.d.ts +0 -0
- /package/dist/{core → infrastructure}/license/verifier.js +0 -0
- /package/dist/{core → infrastructure/utils}/config-loader.js +0 -0
- /package/dist/{core → infrastructure/utils}/error-parser.d.ts +0 -0
- /package/dist/{core → infrastructure/utils}/process-lock.d.ts +0 -0
- /package/dist/{core → infrastructure/utils}/process-lock.js +0 -0
- /package/dist/{core → infrastructure/utils}/timeout.d.ts +0 -0
- /package/dist/{core → infrastructure/utils}/timeout.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,20 @@ All notable changes to Uneven AI will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.12.0] - 2026-04-12
|
|
9
|
+
|
|
10
|
+
### Changed — Pure Clean Architecture Refactor (Stages 1 & 2)
|
|
11
|
+
|
|
12
|
+
- **TypeScript Layer**: Complete migration of `src/core` to a modular 3-layer architecture:
|
|
13
|
+
- `src/domain/`: Core business entities, index planners, and safety guards.
|
|
14
|
+
- `src/application/`: High-level orchestration, security analyzers, and fix engines.
|
|
15
|
+
- `src/infrastructure/`: Low-level adapters including IO, DB loaders, terminal watchers, and the native bridge.
|
|
16
|
+
- **Rust Core**: Refactored `crates/uneven-core` into modular domain, application, and infrastructure modules for enhanced maintainability and feature isolation.
|
|
17
|
+
- **Barrels**: Introduced central entry points (`index.ts`) for each layer to standardize internal imports and discourage deep module coupling.
|
|
18
|
+
- **Licensing**: Refined the license gate with refined error reporting and direct exports for core verification functions.
|
|
19
|
+
- **Stability**: Fixed over 100 broken relative imports across the CLI and core engine caused by the directory structure changes.
|
|
20
|
+
- **Build System**: Standardized on absolute paths for internal tooling stability across various Node.js environments.
|
|
21
|
+
|
|
8
22
|
## [0.7.3] - 2026-04-09
|
|
9
23
|
|
|
10
24
|
### Fixed — complete audit of unreviewed modules
|
package/README.md
CHANGED
|
@@ -11,7 +11,18 @@
|
|
|
11
11
|
>
|
|
12
12
|
> Embeds a **local LLM**, indexes your entire codebase, watches running terminals in real time, **autonomously fixes errors**, scans for **malicious code and compromised dependencies**, runs a built-in **AI data analyst**, performs **scoped security testing**, and generates **shareable reports** — all from a single CLI.
|
|
13
13
|
>
|
|
14
|
-
> **Rust-powered high-performance engine** with **
|
|
14
|
+
> **Rust-powered high-performance engine** with **Modular Clean Architecture**. Zero network dependencies.
|
|
15
|
+
|
|
16
|
+
## 🏗️ Architecture
|
|
17
|
+
|
|
18
|
+
Starting with **v0.12.1**, Uneven AI is built on a robust modular architecture that ensures stability, privacy, and performance. The system is divided into clear layers of responsibility:
|
|
19
|
+
|
|
20
|
+
- **🌍 Domain**: Pure business logic and safety rules (the "Brain").
|
|
21
|
+
- **⚙️ Application**: Orchestrates analysis, terminal watching, and fix application.
|
|
22
|
+
- **🔌 Infrastructure**: High-performance adapters for local vector search, Rust core bridge, and I/O.
|
|
23
|
+
- **🖥️ CLI Layer**: Premium terminal user experience with rich visual feedback.
|
|
24
|
+
|
|
25
|
+
This design ensures that your code and credentials stay strictly local, only interacting with the necessary technical adapters in a controlled, auditable way.
|
|
15
26
|
|
|
16
27
|
## Features
|
|
17
28
|
|
|
@@ -37,7 +48,7 @@ Requirements vary significantly depending on the **brain provider** you choose.
|
|
|
37
48
|
| Node.js | v18 (ESM required) | v20+ recommended |
|
|
38
49
|
| RAM | 256 MB | Only embeddings model loaded (~300 MB peak) |
|
|
39
50
|
| Disk | 200 MB | Embeddings model only |
|
|
40
|
-
| OS | Linux, macOS, Windows (
|
|
51
|
+
| OS | Linux, macOS, Windows 11 (Native) | |
|
|
41
52
|
|
|
42
53
|
> API providers delegate processing to verified cloud endpoints. Uneven AI maintains a local semantic index for lightning-fast search while the core intelligence runs remotely. This is the optimal mode for low-resource environments.
|
|
43
54
|
|
|
@@ -48,7 +59,7 @@ Requirements vary significantly depending on the **brain provider** you choose.
|
|
|
48
59
|
| Node.js | v18 (ESM required) | v20+ recommended |
|
|
49
60
|
| RAM | 512 MB (Uneven AI) | Ollama manages model memory separately |
|
|
50
61
|
| Disk | 200 MB + model size | Ollama stores models in its own directory |
|
|
51
|
-
| OS | Linux, macOS, Windows (
|
|
62
|
+
| OS | Linux, macOS, Windows 11 (Native) | |
|
|
52
63
|
|
|
53
64
|
> Uneven AI itself uses ~512 MB. The Ollama daemon handles model memory independently — RAM required depends on the model you pull (e.g. `llama3.2` ~2 GB).
|
|
54
65
|
|
|
@@ -59,7 +70,7 @@ Requirements vary significantly depending on the **brain provider** you choose.
|
|
|
59
70
|
| Node.js | v18 (ESM required) | v20+ |
|
|
60
71
|
| RAM | 4 GB | 8 GB+ |
|
|
61
72
|
| Disk | 200 MB (embeddings) | 2 GB+ (local LLM) |
|
|
62
|
-
| OS | Linux, macOS, Windows (
|
|
73
|
+
| OS | Linux, macOS, Windows 11 (Native) | Linux / macOS |
|
|
63
74
|
|
|
64
75
|
> The independent local mode loads a high-precision neural model directly into system memory. This ensures 100% offline operation and absolute data sovereignty with zero external dependencies.
|
|
65
76
|
|
|
@@ -125,8 +136,8 @@ uneven-ai ci
|
|
|
125
136
|
If you are on a machine with limited RAM (VPS, CI, container, low-end laptop), use an API provider. Uneven AI in API mode loads only the embeddings model and stays well under 512 MB:
|
|
126
137
|
|
|
127
138
|
```typescript
|
|
128
|
-
// uneven
|
|
129
|
-
const config:
|
|
139
|
+
// uneven.config.ts — optimized for API + low memory
|
|
140
|
+
const config: UnevenConfig = {
|
|
130
141
|
brain: {
|
|
131
142
|
provider: 'claude', // or 'openai' / 'gemini'
|
|
132
143
|
model: 'claude-haiku-4-5-20251001', // smaller/cheaper model = lower latency
|
|
@@ -153,7 +164,7 @@ const config: Uneven AIConfig = {
|
|
|
153
164
|
|
|
154
165
|
## Configuration
|
|
155
166
|
|
|
156
|
-
Create `uneven
|
|
167
|
+
Create `uneven.config.ts` in your project root:
|
|
157
168
|
|
|
158
169
|
```typescript
|
|
159
170
|
import { UnevenConfig } from 'uneven-ai'
|
|
@@ -186,7 +197,7 @@ const config: UnevenConfig = {
|
|
|
186
197
|
target: 'http://localhost:3000',
|
|
187
198
|
},
|
|
188
199
|
log: {
|
|
189
|
-
path: './.uneven
|
|
200
|
+
path: './.uneven/log.md',
|
|
190
201
|
},
|
|
191
202
|
}
|
|
192
203
|
|
|
@@ -298,14 +309,14 @@ Pipeline steps:
|
|
|
298
309
|
2. **Malware scan** — `uneven-ai scan --json`
|
|
299
310
|
3. **Test suite** — `npm test`
|
|
300
311
|
|
|
301
|
-
Exit code 0 = pass, exit code 1 = fail. Writes `.uneven
|
|
312
|
+
Exit code 0 = pass, exit code 1 = fail. Writes `.uneven/ci-summary.json`.
|
|
302
313
|
|
|
303
314
|
## Programmatic API
|
|
304
315
|
|
|
305
316
|
```typescript
|
|
306
|
-
import { Uneven
|
|
317
|
+
import { Uneven } from 'uneven-ai'
|
|
307
318
|
|
|
308
|
-
const ai = new Uneven
|
|
319
|
+
const ai = new Uneven({
|
|
309
320
|
brain: { provider: 'local', model: 'llama-3.2-1b-q8' },
|
|
310
321
|
knowledge: { dirs: ['./src'] },
|
|
311
322
|
watch: { terminal: 'npm run dev', autoFix: true },
|
|
@@ -335,6 +346,8 @@ await ai.stop()
|
|
|
335
346
|
| Java | ✅ | ✅ |
|
|
336
347
|
| PHP | ✅ | ✅ |
|
|
337
348
|
| Ruby | ✅ | ✅ |
|
|
349
|
+
| COBOL | ✅ | ✅ |
|
|
350
|
+
| Assembly (x86/ARM) | ✅ | ✅ |
|
|
338
351
|
|
|
339
352
|
## Knowledge Sources
|
|
340
353
|
|
|
@@ -379,7 +392,7 @@ Privacy is not a feature; it's our foundation.
|
|
|
379
392
|
## Production Mode
|
|
380
393
|
|
|
381
394
|
```typescript
|
|
382
|
-
const config:
|
|
395
|
+
const config: UnevenConfig = {
|
|
383
396
|
watch: {
|
|
384
397
|
terminal: 'node dist/server.js',
|
|
385
398
|
autoFix: false, // NEVER auto-fix in production
|
|
@@ -396,7 +409,7 @@ Uneven AI becomes a **monitoring agent** — detects issues but never modifies c
|
|
|
396
409
|
|
|
397
410
|
## Log Format
|
|
398
411
|
|
|
399
|
-
All findings are logged to `.uneven
|
|
412
|
+
All findings are logged to `.uneven/log.md`:
|
|
400
413
|
|
|
401
414
|
```markdown
|
|
402
415
|
## [10:32:14] Error Detected
|
|
@@ -446,8 +459,8 @@ New to Uneven AI? Follow the step-by-step guide to verify each feature works cor
|
|
|
446
459
|
## Contributing
|
|
447
460
|
|
|
448
461
|
```bash
|
|
449
|
-
git clone https://github.com/kreivesler/uneven
|
|
450
|
-
cd uneven
|
|
462
|
+
git clone https://github.com/kreivesler/uneven
|
|
463
|
+
cd uneven
|
|
451
464
|
npm install
|
|
452
465
|
npm run build
|
|
453
466
|
npm test
|
|
@@ -457,15 +470,15 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md) for the full guide.
|
|
|
457
470
|
|
|
458
471
|
## Support & Issues
|
|
459
472
|
|
|
460
|
-
- 🐛 [Report issues](https://github.com/kreivesler/uneven
|
|
473
|
+
- 🐛 [Report issues](https://github.com/kreivesler/uneven/issues)
|
|
461
474
|
- 📧 [Email support](mailto:contato@rileysolucoes.com.br)
|
|
462
|
-
- 💬 [Discussions](https://github.com/kreivesler/uneven
|
|
475
|
+
- 💬 [Discussions](https://github.com/kreivesler/uneven/discussions)
|
|
463
476
|
|
|
464
477
|
---
|
|
465
478
|
|
|
466
479
|
Built by **KR Riley Soluções** — a software engineering consultancy in Brazil.
|
|
467
480
|
|
|
468
|
-
- 🌐 [uneven
|
|
481
|
+
- 🌐 [uneven.dev](https://uneven.dev)
|
|
469
482
|
- 📧 [contact@rileysolucoes.com.br](mailto:contato@rileysolucoes.com.br)
|
|
470
483
|
- 🐙 [GitHub](https://github.com/kreivesler)
|
|
471
484
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* Every probe is guarded by PentestSecurityContext.checkTarget() before execution.
|
|
15
15
|
* All results are written to .uneven/pentest-audit.log.
|
|
16
16
|
*/
|
|
17
|
-
import { Logger } from '
|
|
17
|
+
import { Logger } from '../../infrastructure/index.js';
|
|
18
18
|
import { PentestSecurityContext } from './pentest-security-context.js';
|
|
19
19
|
import { type SecurityFinding } from './security-analyzer.js';
|
|
20
20
|
export declare class ActiveScanner {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-scanner.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/active-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAyI7D,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,GAAG,CAAwB;IACnC,OAAO,CAAC,QAAQ,CAAe;gBAEnB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB;IAOjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA8CrD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA8GxD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA4EpD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAoEpD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA0ChE,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAwBlE,OAAO,CAAC,KAAK;YAKC,aAAa;CAQ5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-generator.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/dashboard-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAA;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,cAAc,CAAC,EAAE,SAAS,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,qBAAa,kBAAkB;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CAazF"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Credentials are never logged (sanitized URLs only)
|
|
9
9
|
* - All destructive SQL is blocked even if user manually edits the query
|
|
10
10
|
*/
|
|
11
|
-
import { Logger } from '
|
|
11
|
+
import { Logger } from '../../infrastructure/index.js';
|
|
12
12
|
import { DataSecurityContext, SecurityPolicy } from './data-security-context.js';
|
|
13
13
|
export type DbType = 'postgresql' | 'mysql' | 'sqlite' | 'mongodb';
|
|
14
14
|
export interface ColumnInfo {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-analyst.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/data-analyst.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAEtD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAUhF,MAAM,MAAM,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;AAElE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,gEAAgE;IAChE,cAAc,EAAE,OAAO,CAAA;CACxB;AAOD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAoB;IAClC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;gBAE1B,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAO9D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+CrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;;;;;;OAOG;IACG,gBAAgB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAoDxE;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAqC7C;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YA2B5B,kBAAkB;YAqBlB,eAAe;YAqBf,gBAAgB;YA4BhB,eAAe;IAwB7B;;;OAGG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgE/D;;;OAGG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAiFpF,SAAS,IAAI,WAAW,EAAE;IAC1B,SAAS,IAAI,MAAM,GAAG,IAAI;CAC3B;AAID,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOhD"}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* - Credentials are never logged (sanitized URLs only)
|
|
9
9
|
* - All destructive SQL is blocked even if user manually edits the query
|
|
10
10
|
*/
|
|
11
|
-
import { llmInfer, isNativeAvailable } from '
|
|
11
|
+
import { llmInfer, isNativeAvailable } from '../../infrastructure/index.js';
|
|
12
12
|
import { DataSecurityContext } from './data-security-context.js';
|
|
13
|
-
import { withTimeout, TimeoutError } from '
|
|
13
|
+
import { withTimeout, TimeoutError } from '../../infrastructure/index.js';
|
|
14
14
|
// ─── Timeout budgets ──────────────────────────────────────────────────────────
|
|
15
15
|
const DB_CONNECT_TIMEOUT_MS = 10_000; // initial connection + ping
|
|
16
16
|
const DB_QUERY_TIMEOUT_MS = 30_000; // any single SELECT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-security-context.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/data-security-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAIjE,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IAEzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IAExB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IAEjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,UAAU,EAAE,OAAO,CAAA;IACnB,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAID;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,cAAc,CAmDnD,CAAA;AAID,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA0B;IACxC,kEAAkE;IAClE,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,aAAa,CAA2C;gBAEpD,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAiChD;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE;IA6BpF;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAuClC;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE;IA8C5E;;;OAGG;IACH,gBAAgB,IAAI,MAAM;IAiB1B,SAAS,IAAI,QAAQ,CAAC,cAAc,CAAC;IAIrC,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,cAAc;CAGvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excel-exporter.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/excel-exporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAIpD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,aAAa;IACxB;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBtF;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,EAC1D,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC;IA2BxB,OAAO,CAAC,UAAU;CAwEnB"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Skips review if no brain is configured or inference fails.
|
|
14
14
|
*/
|
|
15
15
|
import { type SecurityFinding } from './security-analyzer.js';
|
|
16
|
-
import { Logger } from '
|
|
16
|
+
import { Logger } from '../../infrastructure/index.js';
|
|
17
17
|
export interface ReviewedFinding extends SecurityFinding {
|
|
18
18
|
llmVerdict?: 'confirmed' | 'false_positive' | 'uncertain';
|
|
19
19
|
llmNote?: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-security-reviewer.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/llm-security-reviewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAEtD,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,UAAU,CAAC,EAAE,WAAW,GAAG,gBAAgB,GAAG,WAAW,CAAA;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAgBD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAqC;IAEpD;;OAEG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IAKlE,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAiD/D,cAAc;IAe5B;;OAEG;IACH,OAAO,CAAC,eAAe;YAqBT,MAAM;IA+BpB,OAAO,CAAC,YAAY;CASrB"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* The LLM layer only activates for findings that pass static filters but have
|
|
13
13
|
* a confidence < SEMANTIC_THRESHOLD. This keeps scan time low for clean projects.
|
|
14
14
|
*/
|
|
15
|
-
import { Logger } from '
|
|
15
|
+
import { Logger } from '../../infrastructure/index.js';
|
|
16
16
|
export type MalwareCategory = 'remote-shell' | 'data-exfiltration' | 'obfuscation' | 'supply-chain' | 'credential-theft' | 'persistence' | 'crypto-mining' | 'typosquatting';
|
|
17
17
|
export interface MaliciousFinding {
|
|
18
18
|
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"malware-scanner.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/malware-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAKtD,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,mBAAmB,GACnB,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,aAAa,GACb,eAAe,GACf,eAAe,CAAA;AAEnB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IAChD,QAAQ,EAAE,eAAe,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAA;IACpB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;CAC3D;AA8KD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAgCpF,OAAO,CAAC,aAAa,CAAI;YAEX,eAAe;YAkBf,eAAe;IA8E7B,OAAO,CAAC,YAAY,CAAI;YAEV,gBAAgB;YAmFhB,oBAAoB;IAwDlC;;;;;;OAMG;YACW,kBAAkB;YAmClB,YAAY;IAkC1B,OAAO,CAAC,gBAAgB;CAOzB"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import * as fs from 'fs/promises';
|
|
16
16
|
import * as path from 'path';
|
|
17
|
-
import { llmInfer, isNativeAvailable } from '
|
|
17
|
+
import { llmInfer, isNativeAvailable } from '../../infrastructure/index.js';
|
|
18
18
|
const STATIC_RULES = [
|
|
19
19
|
// ── Remote shell / RCE ─────────────────────────────────────────────────────
|
|
20
20
|
{
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pentest-security-context.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/pentest-security-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAA;IACpB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAA;IACjB,yBAAyB;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,yBAAyB;IACzB,YAAY,EAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAA;IACxC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,IAAI,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,KAAK,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,SAAS,CAAA;AAuFnD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,KAAK,CAA4B;gBAE7B,WAAW,GAAE,MAAsB;IAO/C;;;OAGG;IACG,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,YAAY,GAAE,YAAY,CAAC,cAAc,CAAc,EACvD,YAAY,GAAE,MAAiB,GAC9B,OAAO,CAAC,YAAY,CAAC;IAqBxB;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA0B/C,mCAAmC;IAC7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiDtD;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBhF;;;OAGG;IACH,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM;IAkCzD,QAAQ,IAAI,YAAY,GAAG,IAAI;IAE/B,cAAc,IAAI;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;YAajF,KAAK;IASnB,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-packager.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/report-packager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,CAAA;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,QAAQ,GAAE,MAAqD;IAI3E;;OAEG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAqCpF;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAgC5E,OAAO,CAAC,iBAAiB;IA4FzB,OAAO,CAAC,MAAM;YAoCA,YAAY;CAyB3B"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - Linked vulnerabilities from SecurityFinding list
|
|
14
14
|
* - Metadata: project name, timestamp, Uneven version, component counts
|
|
15
15
|
*/
|
|
16
|
-
import { Logger } from '
|
|
16
|
+
import { Logger } from '../../infrastructure/index.js';
|
|
17
17
|
import { type SecurityFinding } from './security-analyzer.js';
|
|
18
18
|
export declare class SBOMGenerator {
|
|
19
19
|
private logger;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sbom-generator.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/sbom-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAoE7D,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,SAAS,CAAQ;gBAEb,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,EAAE,SAAS,GAAE,MAAkB;IAMhF,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAqK9C,YAAY;CAG3B"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Expanded CVE database: +20 entries, Python requirements.txt, Cargo.toml support
|
|
9
9
|
* - npm audit integration already in Phase 1
|
|
10
10
|
*/
|
|
11
|
-
import { Logger } from '
|
|
11
|
+
import { Logger } from '../../infrastructure/index.js';
|
|
12
12
|
export interface SecurityFinding {
|
|
13
13
|
severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
14
14
|
type: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-analyzer.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/security-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAItD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;IACzD,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAmFD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAMpB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA4IvD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA2LrD,gBAAgB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAoJ9C,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAyHzC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAoE1D,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA2E9D,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAgL9D,wBAAwB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAmFtD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YA2BhD,YAAY;CAe3B"}
|
|
@@ -483,7 +483,7 @@ export class SecurityAnalyzer {
|
|
|
483
483
|
// If npm audit --json is available, also surface its findings
|
|
484
484
|
try {
|
|
485
485
|
const { execSync } = await import('child_process');
|
|
486
|
-
const auditOutput = execSync('npm audit --json
|
|
486
|
+
const auditOutput = execSync('npm audit --json', {
|
|
487
487
|
cwd: process.cwd(),
|
|
488
488
|
timeout: 15000,
|
|
489
489
|
encoding: 'utf-8',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-reporter.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/security-reporter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;AAEjD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AA0BD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAQ;gBAEb,SAAS,GAAE,MAAkB;IAInC,QAAQ,CACZ,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAkCxB,OAAO,CAAC,aAAa;IA4FrB,OAAO,CAAC,SAAS;IAgJjB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,GAAG;CAQZ"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* 4. Integrity mismatch — package-lock.json integrity hash vs installed package hash
|
|
10
10
|
* 5. Typosquatting — package names within edit-distance 2 of popular packages
|
|
11
11
|
*/
|
|
12
|
-
import { Logger } from '
|
|
12
|
+
import { Logger } from '../../infrastructure/index.js';
|
|
13
13
|
import { type SecurityFinding } from './security-analyzer.js';
|
|
14
14
|
export declare class SupplyChainAuditor {
|
|
15
15
|
private logger;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supply-chain-auditor.d.ts","sourceRoot":"","sources":["../../../src/application/analysis/supply-chain-auditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AA2D7D,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,GAAG,CAAQ;gBAEP,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB;IAKjD,KAAK,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAwD3B,YAAY;CAuG3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyst-job-manager.d.ts","sourceRoot":"","sources":["../../../src/application/development/analyst-job-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAsB;IAK3D;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqB/F;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAQpF;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAU7D;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAY7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;YAerB,cAAc;CAG7B"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Generates and applies fixes for detected errors
|
|
5
5
|
*/
|
|
6
|
-
import { Logger } from '
|
|
7
|
-
import { ParsedError } from '
|
|
6
|
+
import { Logger } from '../../infrastructure/io/logger/index.js';
|
|
7
|
+
import { ParsedError } from '../../infrastructure/utils/error-parser.js';
|
|
8
8
|
import { TestResult } from './test-runner.js';
|
|
9
|
-
import { KnowledgeRetriever } from '
|
|
9
|
+
import { KnowledgeRetriever } from '../orchestration/knowledge-retriever.js';
|
|
10
10
|
export interface FixSuggestion {
|
|
11
11
|
error: ParsedError;
|
|
12
12
|
explanation: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-engine.d.ts","sourceRoot":"","sources":["../../../src/application/development/fix-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAyB,MAAM,4CAA4C,CAAA;AAG/F,OAAO,EAAc,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAoB,MAAM,yCAAyC,CAAA;AAI9F,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IAC7B,aAAa,EAAE,OAAO,CAAA;IACtB,oBAAoB,EAAE,OAAO,CAAA;CAC9B;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAI;IAChC,OAAO,CAAC,WAAW,CAAa;gBAEpB,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,kBAAkB;IAS1D;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA2CnE;;;;;;;;;;OAUG;YACW,aAAa;IA4F3B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAoBlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4C5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqEpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgFtB;;OAEG;IACH,OAAO,CAAC,aAAa;IA8DrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuEtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0CzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;;OAGG;IACG,QAAQ,CACZ,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,cAAc,CAAC;YAyIZ,cAAc;IAe5B,OAAO,CAAC,aAAa;CAYtB"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Generates and applies fixes for detected errors
|
|
5
5
|
*/
|
|
6
|
-
import { readCodeBlockFromFile } from '
|
|
7
|
-
import { SnapshotManager } from '
|
|
8
|
-
import { GitManager } from '
|
|
6
|
+
import { readCodeBlockFromFile } from '../../infrastructure/utils/error-parser.js';
|
|
7
|
+
import { SnapshotManager } from '../../domain/entities/snapshot.js';
|
|
8
|
+
import { GitManager } from '../../infrastructure/io/git-manager.js';
|
|
9
9
|
import { TestRunner } from './test-runner.js';
|
|
10
|
-
import { llmInfer, isNativeAvailable } from '
|
|
11
|
-
import { SafetyGuard } from '
|
|
10
|
+
import { llmInfer, isNativeAvailable } from '../../infrastructure/adapters/bridge.js';
|
|
11
|
+
import { SafetyGuard } from '../../domain/services/safety-guard.js';
|
|
12
12
|
export class FixEngine {
|
|
13
13
|
logger;
|
|
14
14
|
snapshots;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Used by the fix engine to confirm fixes don't break existing tests.
|
|
9
9
|
*/
|
|
10
|
-
import { Logger } from '
|
|
10
|
+
import { Logger } from '../../infrastructure/index.js';
|
|
11
11
|
export type TestFramework = 'jest' | 'vitest' | 'mocha' | 'jasmine' | 'pytest' | 'cargo-test' | 'go-test' | 'phpunit' | 'rspec' | 'unknown';
|
|
12
12
|
export interface TestResult {
|
|
13
13
|
framework: TestFramework;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../src/application/development/test-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAItD,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,CAAA;AAEb,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,aAAa,CAAA;IACxB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7B;AA6FD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,WAAW,CAAQ;gBAEf,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB;IAK/D;;OAEG;IACH,MAAM,IAAI;QAAE,SAAS,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAUvD;;OAEG;IACG,GAAG,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmF7D;;;OAGG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,gBAAqB,GAC5B,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0BvE,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,aAAa;CAatB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export * from './orchestration/engine.js';
|
|
2
|
+
export * from './orchestration/incremental-index.js';
|
|
3
|
+
export * from './orchestration/knowledge-retriever.js';
|
|
4
|
+
export * from './analysis/security-analyzer.js';
|
|
5
|
+
export * from './analysis/active-scanner.js';
|
|
6
|
+
export * from './analysis/malware-scanner.js';
|
|
7
|
+
export * from './analysis/data-analyst.js';
|
|
8
|
+
export * from './analysis/data-security-context.js';
|
|
9
|
+
export * from './analysis/pentest-security-context.js';
|
|
10
|
+
export * from './analysis/llm-security-reviewer.js';
|
|
11
|
+
export * from './analysis/supply-chain-auditor.js';
|
|
12
|
+
export * from './analysis/sbom-generator.js';
|
|
13
|
+
export * from './analysis/dashboard-generator.js';
|
|
14
|
+
export * from './analysis/excel-exporter.js';
|
|
15
|
+
export * from './analysis/report-packager.js';
|
|
16
|
+
export * from './analysis/security-reporter.js';
|
|
17
|
+
export * from './development/fix-engine.js';
|
|
18
|
+
export * from './development/test-runner.js';
|
|
19
|
+
export * from './development/analyst-job-manager.js';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/application/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,sCAAsC,CAAA;AACpD,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qCAAqC,CAAA;AACnD,cAAc,wCAAwC,CAAA;AACtD,cAAc,qCAAqC,CAAA;AACnD,cAAc,oCAAoC,CAAA;AAClD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mCAAmC,CAAA;AACjD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sCAAsC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from './orchestration/engine.js';
|
|
2
|
+
export * from './orchestration/incremental-index.js';
|
|
3
|
+
export * from './orchestration/knowledge-retriever.js';
|
|
4
|
+
export * from './analysis/security-analyzer.js';
|
|
5
|
+
export * from './analysis/active-scanner.js';
|
|
6
|
+
export * from './analysis/malware-scanner.js';
|
|
7
|
+
export * from './analysis/data-analyst.js';
|
|
8
|
+
export * from './analysis/data-security-context.js';
|
|
9
|
+
export * from './analysis/pentest-security-context.js';
|
|
10
|
+
export * from './analysis/llm-security-reviewer.js';
|
|
11
|
+
export * from './analysis/supply-chain-auditor.js';
|
|
12
|
+
export * from './analysis/sbom-generator.js';
|
|
13
|
+
export * from './analysis/dashboard-generator.js';
|
|
14
|
+
export * from './analysis/excel-exporter.js';
|
|
15
|
+
export * from './analysis/report-packager.js';
|
|
16
|
+
export * from './analysis/security-reporter.js';
|
|
17
|
+
export * from './development/fix-engine.js';
|
|
18
|
+
export * from './development/test-runner.js';
|
|
19
|
+
export * from './development/analyst-job-manager.js';
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Coordinates all components: LLM, knowledge base, watchers, pentester
|
|
5
5
|
*/
|
|
6
6
|
import { EventEmitter } from 'events';
|
|
7
|
-
import type { UnevenConfig, UnevenEventHandler, EventType } from '
|
|
8
|
-
import { Logger } from '
|
|
7
|
+
import type { UnevenConfig, UnevenEventHandler, EventType } from '../../../types/index.js';
|
|
8
|
+
import { Logger } from '../../infrastructure/io/logger/index.js';
|
|
9
9
|
export declare class Uneven extends EventEmitter {
|
|
10
10
|
private config;
|
|
11
11
|
private logger;
|
|
@@ -40,7 +40,7 @@ export declare class Uneven extends EventEmitter {
|
|
|
40
40
|
* Does NOT read or embed anything — pure stat() calls.
|
|
41
41
|
* Use this to show a cost/time preview before running index().
|
|
42
42
|
*/
|
|
43
|
-
planIndex(maxFileBytes?: number): Promise<import("
|
|
43
|
+
planIndex(maxFileBytes?: number): Promise<import("../../domain/services/index-planner.js").IndexPlan>;
|
|
44
44
|
/**
|
|
45
45
|
* Index all knowledge sources
|
|
46
46
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/application/orchestration/engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,YAAY,EAAe,kBAAkB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAgBvG,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAA;AAsBhE,qBAAa,MAAO,SAAQ,YAAY;IACtC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,OAAO,CAAiB;IAChC,yEAAyE;IACzE,OAAO,CAAC,WAAW,CAAyB;IAC5C,4DAA4D;IAC5D,OAAO,CAAC,WAAW,CAA8B;IACjD,8EAA8E;IAC9E,OAAO,CAAC,kBAAkB,CAAiC;IAC3D,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,gBAAgB,CAAkB;gBAE9B,MAAM,EAAE,YAAY;IAUhC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+E3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;OAIG;IACG,SAAS,CAAC,YAAY,SAAyB;IAiBrD;;OAEG;IACG,KAAK,CAAC,SAAS,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAkS9D;;OAEG;YACW,iBAAiB;IA+B/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;YACW,YAAY;IAgB1B;;;;;;OAMG;YACW,aAAa;IAsF3B;;OAEG;YACW,YAAY;IAyB1B;;OAEG;YACW,WAAW;IAyBzB;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAmF/E;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6G5B;;;;;;;OAOG;YACW,cAAc;IAwF5B;;;;;OAKG;YACW,oBAAoB;IAkDlC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyJ9B;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACH,EAAE,CACA,KAAK,EAAE,SAAS,GAAG,MAAM,EACzB,OAAO,EAAE,kBAAkB,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,GACvD,IAAI;IAIP;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;YACW,QAAQ;IAItB;;OAEG;IACH,OAAO,CAAC,QAAQ;CASjB"}
|
|
@@ -4,29 +4,30 @@
|
|
|
4
4
|
* Coordinates all components: LLM, knowledge base, watchers, pentester
|
|
5
5
|
*/
|
|
6
6
|
import { EventEmitter } from 'events';
|
|
7
|
-
import { initNativeEngine, getNativeVersion, isNativeAvailable, initLlmEngine, unloadLocalModel, llmEmbed, llmInfer, retrievalSearch, storeDocument, flushVectorStore, } from '
|
|
7
|
+
import { initNativeEngine, getNativeVersion, isNativeAvailable, initLlmEngine, unloadLocalModel, llmEmbed, llmInfer, retrievalSearch, storeDocument, flushVectorStore, } from '../../infrastructure/adapters/bridge.js';
|
|
8
8
|
import * as path from 'path';
|
|
9
9
|
import * as fs from 'fs/promises';
|
|
10
|
-
import { Logger } from '
|
|
11
|
-
import { chunkDocument } from '
|
|
12
|
-
import { DatabaseLoader } from '
|
|
13
|
-
import { WebScraper } from '
|
|
14
|
-
import { ProcessWatcher } from '
|
|
15
|
-
import { FileWatcher } from '
|
|
16
|
-
import { FixEngine } from '
|
|
17
|
-
import { SecurityAnalyzer } from '
|
|
18
|
-
import { ActiveScanner } from '
|
|
19
|
-
import { PentestSecurityContext } from '
|
|
20
|
-
import { LLMSecurityReviewer } from '
|
|
21
|
-
import { SupplyChainAuditor } from '
|
|
22
|
-
import { SBOMGenerator } from '
|
|
23
|
-
import { ExternalProviders } from '
|
|
24
|
-
import { SessionManager } from '
|
|
10
|
+
import { Logger } from '../../infrastructure/io/logger/index.js';
|
|
11
|
+
import { chunkDocument } from '../../domain/services/chunker.js';
|
|
12
|
+
import { DatabaseLoader } from '../../infrastructure/io/db-loader.js';
|
|
13
|
+
import { WebScraper } from '../../infrastructure/io/web-scraper.js';
|
|
14
|
+
import { ProcessWatcher } from '../../infrastructure/io/process-watcher.js';
|
|
15
|
+
import { FileWatcher } from '../../infrastructure/io/file-watcher.js';
|
|
16
|
+
import { FixEngine } from '../development/fix-engine.js';
|
|
17
|
+
import { SecurityAnalyzer } from '../analysis/security-analyzer.js';
|
|
18
|
+
import { ActiveScanner } from '../analysis/active-scanner.js';
|
|
19
|
+
import { PentestSecurityContext } from '../analysis/pentest-security-context.js';
|
|
20
|
+
import { LLMSecurityReviewer } from '../analysis/llm-security-reviewer.js';
|
|
21
|
+
import { SupplyChainAuditor } from '../analysis/supply-chain-auditor.js';
|
|
22
|
+
import { SBOMGenerator } from '../analysis/sbom-generator.js';
|
|
23
|
+
import { ExternalProviders } from '../../infrastructure/adapters/external-providers.js';
|
|
24
|
+
import { SessionManager } from '../../domain/entities/session.js';
|
|
25
25
|
import { IncrementalIndex } from './incremental-index.js';
|
|
26
26
|
import { KnowledgeRetriever } from './knowledge-retriever.js';
|
|
27
|
-
import { IndexPlanner, DEFAULT_MAX_FILE_BYTES, formatBytes } from '
|
|
28
|
-
import { SafetyGuard } from '
|
|
29
|
-
import { HardwareDetector } from '
|
|
27
|
+
import { IndexPlanner, DEFAULT_MAX_FILE_BYTES, HARD_SKIP_BYTES, formatBytes } from '../../domain/services/index-planner.js';
|
|
28
|
+
import { SafetyGuard } from '../../domain/services/safety-guard.js';
|
|
29
|
+
import { HardwareDetector } from '../../domain/services/hardware-detector.js';
|
|
30
|
+
import { migrateLegacyStructure } from '../../infrastructure/utils/migration.js';
|
|
30
31
|
export class Uneven extends EventEmitter {
|
|
31
32
|
config;
|
|
32
33
|
logger;
|
|
@@ -45,7 +46,7 @@ export class Uneven extends EventEmitter {
|
|
|
45
46
|
constructor(config) {
|
|
46
47
|
super();
|
|
47
48
|
this.config = config;
|
|
48
|
-
this.logger = new Logger(config.log?.path || './.uneven/
|
|
49
|
+
this.logger = new Logger(config.log?.path || './.uneven/logs/main.md');
|
|
49
50
|
this.session = new SessionManager();
|
|
50
51
|
this.incrementalIndex = new IncrementalIndex();
|
|
51
52
|
this.safetyGuard = new SafetyGuard(this.logger);
|
|
@@ -59,13 +60,17 @@ export class Uneven extends EventEmitter {
|
|
|
59
60
|
throw new Error('Uneven already initialized');
|
|
60
61
|
}
|
|
61
62
|
try {
|
|
62
|
-
|
|
63
|
+
// 🚀 Clean up legacy structure before doing anything else
|
|
64
|
+
await migrateLegacyStructure();
|
|
65
|
+
this.logger.info('Initializing native engine...');
|
|
66
|
+
const threads = this.config.brain?.local?.threads ?? 4;
|
|
67
|
+
await initNativeEngine(this.config, threads);
|
|
68
|
+
this.logger.info('Engine initialized. Checking brain configuration...');
|
|
63
69
|
this.logger.info(`Native binding available: ${isNativeAvailable()}`);
|
|
64
70
|
this.logger.info(`Engine version: ${getNativeVersion()}`);
|
|
65
71
|
const provider = this.config.brain?.provider ?? 'local';
|
|
66
72
|
const model = this.config.brain?.model ?? 'llama3.2';
|
|
67
73
|
if (isNativeAvailable()) {
|
|
68
|
-
await initNativeEngine(this.config);
|
|
69
74
|
// 🚀 Hardware Acceleration: Detect GPU if using local brain
|
|
70
75
|
if (provider === 'local') {
|
|
71
76
|
const gpuInfo = await this.hardwareDetector.detectGPU();
|
|
@@ -86,7 +91,8 @@ export class Uneven extends EventEmitter {
|
|
|
86
91
|
// Pass provider so local model is only loaded when explicitly configured.
|
|
87
92
|
// API providers (claude, openai, gemini, ollama) skip local model loading
|
|
88
93
|
// and stay under 512 MB RAM — only the embeddings model is loaded.
|
|
89
|
-
|
|
94
|
+
const threads = this.config.brain?.local?.threads ?? 4;
|
|
95
|
+
await initLlmEngine(provider, threads);
|
|
90
96
|
}
|
|
91
97
|
this.logger.info('Uneven engine initialized successfully');
|
|
92
98
|
this.initialized = true;
|
|
@@ -225,9 +231,8 @@ export class Uneven extends EventEmitter {
|
|
|
225
231
|
const stats = await fs.stat(filePath).catch(() => null);
|
|
226
232
|
if (!stats)
|
|
227
233
|
return;
|
|
228
|
-
const { HARD_SKIP_BYTES } = await import('./index-planner.js');
|
|
229
234
|
if (stats.size >= HARD_SKIP_BYTES) {
|
|
230
|
-
this.logger.warning(`Files: skipping ${filePath} — ${formatBytes(stats.size)} exceeds hard limit`);
|
|
235
|
+
await this.logger.warning(`Files: skipping ${filePath} — ${formatBytes(stats.size)} exceeds hard limit`);
|
|
231
236
|
this.emitEvent('warning', {
|
|
232
237
|
message: `Skipped oversized file: ${filePath}`,
|
|
233
238
|
});
|
|
@@ -468,7 +473,8 @@ export class Uneven extends EventEmitter {
|
|
|
468
473
|
'.ts', '.tsx', '.js', '.jsx',
|
|
469
474
|
'.json', '.md', '.txt', '.yaml', '.yml',
|
|
470
475
|
'.rs', '.py', '.go', '.java', '.cpp', '.c', '.toml',
|
|
471
|
-
'.xls', '.xlsx', '.csv', '.docx', '.pdf'
|
|
476
|
+
'.xls', '.xlsx', '.csv', '.docx', '.pdf',
|
|
477
|
+
'.cbl', '.cob', '.asm', '.s'
|
|
472
478
|
];
|
|
473
479
|
// Privacy: skip sensitive files even if extension matches
|
|
474
480
|
const ignoredFiles = ['.env', '.pem', '.key', '.crt', '.pfx', '.db-shm', '.db-wal'];
|
|
@@ -687,12 +693,14 @@ export class Uneven extends EventEmitter {
|
|
|
687
693
|
const maxTokens = this.config.brain?.maxTokens || 512;
|
|
688
694
|
let response;
|
|
689
695
|
if (provider === 'local') {
|
|
690
|
-
const
|
|
696
|
+
const threads = this.config.brain?.local?.threads ?? 4;
|
|
697
|
+
const result = await llmInfer(fullPrompt, maxTokens, threads);
|
|
691
698
|
response = result.content;
|
|
692
699
|
}
|
|
693
700
|
else {
|
|
694
701
|
const extProviders = new ExternalProviders(this.logger);
|
|
695
|
-
const
|
|
702
|
+
const apiKey = this.config.brain?.apiKey;
|
|
703
|
+
const result = await extProviders.infer(fullPrompt, provider, model, maxTokens, onToken, apiKey);
|
|
696
704
|
response = result.content;
|
|
697
705
|
}
|
|
698
706
|
// 🛡️ Safety Guard Phase 3: Sanitize AI Output
|