@oalacea/daemon 0.6.4 → 0.7.0
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.
- package/README.md +268 -58
- package/bin/Dockerfile +158 -16
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +22 -2
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/command.types.d.ts +216 -0
- package/dist/cli/commands/command.types.d.ts.map +1 -0
- package/dist/cli/commands/command.types.js +64 -0
- package/dist/cli/commands/command.types.js.map +1 -0
- package/dist/cli/commands/history.command.d.ts +91 -0
- package/dist/cli/commands/history.command.d.ts.map +1 -0
- package/dist/cli/commands/history.command.js +336 -0
- package/dist/cli/commands/history.command.js.map +1 -0
- package/dist/cli/commands/index.d.ts +14 -3
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +7 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/optimize.command.d.ts +110 -0
- package/dist/cli/commands/optimize.command.d.ts.map +1 -0
- package/dist/cli/commands/optimize.command.js +497 -0
- package/dist/cli/commands/optimize.command.js.map +1 -0
- package/dist/cli/commands/report.command.d.ts +110 -0
- package/dist/cli/commands/report.command.d.ts.map +1 -0
- package/dist/cli/commands/report.command.js +532 -0
- package/dist/cli/commands/report.command.js.map +1 -0
- package/dist/cli/commands/review.command.d.ts +110 -0
- package/dist/cli/commands/review.command.d.ts.map +1 -0
- package/dist/cli/commands/review.command.js +520 -0
- package/dist/cli/commands/review.command.js.map +1 -0
- package/dist/cli/commands/score.command.d.ts +47 -0
- package/dist/cli/commands/score.command.d.ts.map +1 -0
- package/dist/cli/commands/score.command.js +261 -0
- package/dist/cli/commands/score.command.js.map +1 -0
- package/dist/cli/utils/index.d.ts +10 -0
- package/dist/cli/utils/index.d.ts.map +1 -0
- package/dist/cli/utils/index.js +10 -0
- package/dist/cli/utils/index.js.map +1 -0
- package/dist/cli/utils/output.d.ts +192 -0
- package/dist/cli/utils/output.d.ts.map +1 -0
- package/dist/cli/utils/output.js +411 -0
- package/dist/cli/utils/output.js.map +1 -0
- package/dist/cli/utils/progress.d.ts +204 -0
- package/dist/cli/utils/progress.d.ts.map +1 -0
- package/dist/cli/utils/progress.js +396 -0
- package/dist/cli/utils/progress.js.map +1 -0
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/project.types.d.ts +3 -3
- package/dist/core/types/project.types.d.ts.map +1 -1
- package/dist/core/types/scoring.types.d.ts +301 -0
- package/dist/core/types/scoring.types.d.ts.map +1 -0
- package/dist/core/types/scoring.types.js +8 -0
- package/dist/core/types/scoring.types.js.map +1 -0
- package/dist/services/detection/framework-detector.d.ts.map +1 -1
- package/dist/services/detection/framework-detector.js +74 -5
- package/dist/services/detection/framework-detector.js.map +1 -1
- package/dist/services/index.d.ts +12 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +14 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/optimization/detectors/bug-detector.d.ts +82 -0
- package/dist/services/optimization/detectors/bug-detector.d.ts.map +1 -0
- package/dist/services/optimization/detectors/bug-detector.js +443 -0
- package/dist/services/optimization/detectors/bug-detector.js.map +1 -0
- package/dist/services/optimization/detectors/code-smell-detector.d.ts +108 -0
- package/dist/services/optimization/detectors/code-smell-detector.d.ts.map +1 -0
- package/dist/services/optimization/detectors/code-smell-detector.js +569 -0
- package/dist/services/optimization/detectors/code-smell-detector.js.map +1 -0
- package/dist/services/optimization/detectors/index.d.ts +7 -0
- package/dist/services/optimization/detectors/index.d.ts.map +1 -0
- package/dist/services/optimization/detectors/index.js +7 -0
- package/dist/services/optimization/detectors/index.js.map +1 -0
- package/dist/services/optimization/detectors/perf-detector.d.ts +80 -0
- package/dist/services/optimization/detectors/perf-detector.d.ts.map +1 -0
- package/dist/services/optimization/detectors/perf-detector.js +451 -0
- package/dist/services/optimization/detectors/perf-detector.js.map +1 -0
- package/dist/services/optimization/index.d.ts +61 -0
- package/dist/services/optimization/index.d.ts.map +1 -0
- package/dist/services/optimization/index.js +69 -0
- package/dist/services/optimization/index.js.map +1 -0
- package/dist/services/optimization/optimization.service.d.ts +65 -0
- package/dist/services/optimization/optimization.service.d.ts.map +1 -0
- package/dist/services/optimization/optimization.service.js +511 -0
- package/dist/services/optimization/optimization.service.js.map +1 -0
- package/dist/services/optimization/optimization.types.d.ts +343 -0
- package/dist/services/optimization/optimization.types.d.ts.map +1 -0
- package/dist/services/optimization/optimization.types.js +8 -0
- package/dist/services/optimization/optimization.types.js.map +1 -0
- package/dist/services/optimization/optimizers/code-optimizer.d.ts +87 -0
- package/dist/services/optimization/optimizers/code-optimizer.d.ts.map +1 -0
- package/dist/services/optimization/optimizers/code-optimizer.js +436 -0
- package/dist/services/optimization/optimizers/code-optimizer.js.map +1 -0
- package/dist/services/optimization/optimizers/index.d.ts +7 -0
- package/dist/services/optimization/optimizers/index.d.ts.map +1 -0
- package/dist/services/optimization/optimizers/index.js +7 -0
- package/dist/services/optimization/optimizers/index.js.map +1 -0
- package/dist/services/optimization/optimizers/perf-optimizer.d.ts +64 -0
- package/dist/services/optimization/optimizers/perf-optimizer.d.ts.map +1 -0
- package/dist/services/optimization/optimizers/perf-optimizer.js +330 -0
- package/dist/services/optimization/optimizers/perf-optimizer.js.map +1 -0
- package/dist/services/optimization/optimizers/refact-optimizer.d.ts +82 -0
- package/dist/services/optimization/optimizers/refact-optimizer.d.ts.map +1 -0
- package/dist/services/optimization/optimizers/refact-optimizer.js +354 -0
- package/dist/services/optimization/optimizers/refact-optimizer.js.map +1 -0
- package/dist/services/optimization/patterns/anti-patterns.d.ts +31 -0
- package/dist/services/optimization/patterns/anti-patterns.d.ts.map +1 -0
- package/dist/services/optimization/patterns/anti-patterns.js +501 -0
- package/dist/services/optimization/patterns/anti-patterns.js.map +1 -0
- package/dist/services/optimization/patterns/index.d.ts +5 -0
- package/dist/services/optimization/patterns/index.d.ts.map +1 -0
- package/dist/services/optimization/patterns/index.js +5 -0
- package/dist/services/optimization/patterns/index.js.map +1 -0
- package/dist/services/reporting/export/chart.exporter.d.ts +59 -0
- package/dist/services/reporting/export/chart.exporter.d.ts.map +1 -0
- package/dist/services/reporting/export/chart.exporter.js +350 -0
- package/dist/services/reporting/export/chart.exporter.js.map +1 -0
- package/dist/services/reporting/export/index.d.ts +9 -0
- package/dist/services/reporting/export/index.d.ts.map +1 -0
- package/dist/services/reporting/export/index.js +10 -0
- package/dist/services/reporting/export/index.js.map +1 -0
- package/dist/services/reporting/export/pdf.exporter.d.ts +133 -0
- package/dist/services/reporting/export/pdf.exporter.d.ts.map +1 -0
- package/dist/services/reporting/export/pdf.exporter.js +270 -0
- package/dist/services/reporting/export/pdf.exporter.js.map +1 -0
- package/dist/services/reporting/history.service.d.ts +93 -0
- package/dist/services/reporting/history.service.d.ts.map +1 -0
- package/dist/services/reporting/history.service.js +285 -0
- package/dist/services/reporting/history.service.js.map +1 -0
- package/dist/services/reporting/index.d.ts +15 -0
- package/dist/services/reporting/index.d.ts.map +1 -0
- package/dist/services/reporting/index.js +16 -0
- package/dist/services/reporting/index.js.map +1 -0
- package/dist/services/reporting/report.service.d.ts +102 -0
- package/dist/services/reporting/report.service.d.ts.map +1 -0
- package/dist/services/reporting/report.service.js +240 -0
- package/dist/services/reporting/report.service.js.map +1 -0
- package/dist/services/reporting/reporting.types.d.ts +329 -0
- package/dist/services/reporting/reporting.types.d.ts.map +1 -0
- package/dist/services/reporting/reporting.types.js +8 -0
- package/dist/services/reporting/reporting.types.js.map +1 -0
- package/dist/services/reporting/templates/html.template.d.ts +81 -0
- package/dist/services/reporting/templates/html.template.d.ts.map +1 -0
- package/dist/services/reporting/templates/html.template.js +741 -0
- package/dist/services/reporting/templates/html.template.js.map +1 -0
- package/dist/services/reporting/templates/json.template.d.ts +85 -0
- package/dist/services/reporting/templates/json.template.d.ts.map +1 -0
- package/dist/services/reporting/templates/json.template.js +308 -0
- package/dist/services/reporting/templates/json.template.js.map +1 -0
- package/dist/services/reporting/templates/markdown.template.d.ts +69 -0
- package/dist/services/reporting/templates/markdown.template.d.ts.map +1 -0
- package/dist/services/reporting/templates/markdown.template.js +311 -0
- package/dist/services/reporting/templates/markdown.template.js.map +1 -0
- package/dist/services/reporting/trend-analyzer.d.ts +73 -0
- package/dist/services/reporting/trend-analyzer.d.ts.map +1 -0
- package/dist/services/reporting/trend-analyzer.js +291 -0
- package/dist/services/reporting/trend-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/dependency-analyzer.d.ts +87 -0
- package/dist/services/review/analyzers/dependency-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/dependency-analyzer.js +458 -0
- package/dist/services/review/analyzers/dependency-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/index.d.ts +13 -0
- package/dist/services/review/analyzers/index.d.ts.map +1 -0
- package/dist/services/review/analyzers/index.js +13 -0
- package/dist/services/review/analyzers/index.js.map +1 -0
- package/dist/services/review/analyzers/nestjs-analyzer.d.ts +210 -0
- package/dist/services/review/analyzers/nestjs-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/nestjs-analyzer.js +571 -0
- package/dist/services/review/analyzers/nestjs-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/performance-analyzer.d.ts +91 -0
- package/dist/services/review/analyzers/performance-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/performance-analyzer.js +589 -0
- package/dist/services/review/analyzers/performance-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/security-analyzer.d.ts +96 -0
- package/dist/services/review/analyzers/security-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/security-analyzer.js +512 -0
- package/dist/services/review/analyzers/security-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/static-analyzer.d.ts +90 -0
- package/dist/services/review/analyzers/static-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/static-analyzer.js +423 -0
- package/dist/services/review/analyzers/static-analyzer.js.map +1 -0
- package/dist/services/review/fixers/auto-fixer.d.ts +94 -0
- package/dist/services/review/fixers/auto-fixer.d.ts.map +1 -0
- package/dist/services/review/fixers/auto-fixer.js +404 -0
- package/dist/services/review/fixers/auto-fixer.js.map +1 -0
- package/dist/services/review/fixers/index.d.ts +11 -0
- package/dist/services/review/fixers/index.d.ts.map +1 -0
- package/dist/services/review/fixers/index.js +11 -0
- package/dist/services/review/fixers/index.js.map +1 -0
- package/dist/services/review/fixers/refactor-suggester.d.ts +100 -0
- package/dist/services/review/fixers/refactor-suggester.d.ts.map +1 -0
- package/dist/services/review/fixers/refactor-suggester.js +555 -0
- package/dist/services/review/fixers/refactor-suggester.js.map +1 -0
- package/dist/services/review/fixers/test-generator.d.ts +99 -0
- package/dist/services/review/fixers/test-generator.d.ts.map +1 -0
- package/dist/services/review/fixers/test-generator.js +458 -0
- package/dist/services/review/fixers/test-generator.js.map +1 -0
- package/dist/services/review/index.d.ts +14 -0
- package/dist/services/review/index.d.ts.map +1 -0
- package/dist/services/review/index.js +14 -0
- package/dist/services/review/index.js.map +1 -0
- package/dist/services/review/reporters/fix-reporter.d.ts +67 -0
- package/dist/services/review/reporters/fix-reporter.d.ts.map +1 -0
- package/dist/services/review/reporters/fix-reporter.js +437 -0
- package/dist/services/review/reporters/fix-reporter.js.map +1 -0
- package/dist/services/review/reporters/index.d.ts +10 -0
- package/dist/services/review/reporters/index.d.ts.map +1 -0
- package/dist/services/review/reporters/index.js +10 -0
- package/dist/services/review/reporters/index.js.map +1 -0
- package/dist/services/review/reporters/score-reporter.d.ts +84 -0
- package/dist/services/review/reporters/score-reporter.d.ts.map +1 -0
- package/dist/services/review/reporters/score-reporter.js +560 -0
- package/dist/services/review/reporters/score-reporter.js.map +1 -0
- package/dist/services/review/review.service.d.ts +129 -0
- package/dist/services/review/review.service.d.ts.map +1 -0
- package/dist/services/review/review.service.js +396 -0
- package/dist/services/review/review.service.js.map +1 -0
- package/dist/services/review/review.types.d.ts +443 -0
- package/dist/services/review/review.types.d.ts.map +1 -0
- package/dist/services/review/review.types.js +11 -0
- package/dist/services/review/review.types.js.map +1 -0
- package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts +53 -0
- package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/accessibility.analyzer.js +260 -0
- package/dist/services/scoring/dimensions/accessibility.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts +138 -0
- package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/backend-logic.analyzer.js +713 -0
- package/dist/services/scoring/dimensions/backend-logic.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts +142 -0
- package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/business-logic.analyzer.js +747 -0
- package/dist/services/scoring/dimensions/business-logic.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts +142 -0
- package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/code-quality.analyzer.js +685 -0
- package/dist/services/scoring/dimensions/code-quality.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/index.d.ts +18 -0
- package/dist/services/scoring/dimensions/index.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/index.js +27 -0
- package/dist/services/scoring/dimensions/index.js.map +1 -0
- package/dist/services/scoring/dimensions/performance.analyzer.d.ts +125 -0
- package/dist/services/scoring/dimensions/performance.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/performance.analyzer.js +615 -0
- package/dist/services/scoring/dimensions/performance.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/security.analyzer.d.ts +53 -0
- package/dist/services/scoring/dimensions/security.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/security.analyzer.js +327 -0
- package/dist/services/scoring/dimensions/security.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/seo.analyzer.d.ts +77 -0
- package/dist/services/scoring/dimensions/seo.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/seo.analyzer.js +502 -0
- package/dist/services/scoring/dimensions/seo.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts +106 -0
- package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/test-coverage.analyzer.js +496 -0
- package/dist/services/scoring/dimensions/test-coverage.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts +126 -0
- package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/ui-ux.analyzer.js +665 -0
- package/dist/services/scoring/dimensions/ui-ux.analyzer.js.map +1 -0
- package/dist/services/scoring/index.d.ts +10 -0
- package/dist/services/scoring/index.d.ts.map +1 -0
- package/dist/services/scoring/index.js +10 -0
- package/dist/services/scoring/index.js.map +1 -0
- package/dist/services/scoring/scoring-service.d.ts +222 -0
- package/dist/services/scoring/scoring-service.d.ts.map +1 -0
- package/dist/services/scoring/scoring-service.js +636 -0
- package/dist/services/scoring/scoring-service.js.map +1 -0
- package/package.json +11 -3
- package/templates/README.md +183 -0
- package/templates/nestjs/controller.spec.ts +203 -0
- package/templates/nestjs/e2e/api.e2e-spec.ts +451 -0
- package/templates/nestjs/e2e/auth.e2e-spec.ts +533 -0
- package/templates/nestjs/fixtures/test-module.ts +311 -0
- package/templates/nestjs/guard.spec.ts +314 -0
- package/templates/nestjs/interceptor.spec.ts +458 -0
- package/templates/nestjs/module.spec.ts +173 -0
- package/templates/nestjs/pipe.spec.ts +474 -0
- package/templates/nestjs/service.spec.ts +296 -0
- package/templates/rust/Cargo.toml +72 -0
- package/templates/rust/actix-controller.test.rs +114 -0
- package/templates/rust/axum-handler.test.rs +117 -0
- package/templates/rust/integration.test.rs +63 -0
- package/templates/rust/rocket-route.test.rs +106 -0
- package/templates/rust/unit.test.rs +38 -0
package/README.md
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
[](https://github.com/Pamacea/daemon/actions)
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
> AI-powered automated test generation and code review for web applications.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
**v0.7.0** — Rust support, NestJS analysis, Scoring system, and more!
|
|
10
11
|
|
|
11
12
|
## Quick Start
|
|
12
13
|
|
|
@@ -22,6 +23,16 @@ First run installs the testing toolkit (~500 MB Docker image, takes 2-3 minutes)
|
|
|
22
23
|
- **Docker** - [Install](https://docs.docker.com/get-docker/)
|
|
23
24
|
- **AI coding agent** - Claude Code, Cursor, Windsurf, Aider, Codex...
|
|
24
25
|
|
|
26
|
+
## New in v0.7.0
|
|
27
|
+
|
|
28
|
+
| Feature | Description |
|
|
29
|
+
|---------|-------------|
|
|
30
|
+
| 🦀 **Rust Support** | Axum, Actix-web, Rocket frameworks with dedicated templates |
|
|
31
|
+
| 🎯 **NestJS Analysis** | Pattern validation, DI checks, decorator verification |
|
|
32
|
+
| 📊 **Scoring System** | 5-dimension code quality scoring (coverage, quality, performance, security, docs) |
|
|
33
|
+
| 🔍 **Code Review** | Static analysis, security scanning, dependency analysis |
|
|
34
|
+
| 🛠️ **Extended Toolkit** | Rust toolchain, Lighthouse, security tools, accessibility tools |
|
|
35
|
+
|
|
25
36
|
## Features
|
|
26
37
|
|
|
27
38
|
| Category | Features |
|
|
@@ -31,73 +42,229 @@ First run installs the testing toolkit (~500 MB Docker image, takes 2-3 minutes)
|
|
|
31
42
|
| **E2E Tests** | User flows, form interactions, navigation (Playwright) |
|
|
32
43
|
| **Backend Performance** | API load testing (k6), DB query benchmarks |
|
|
33
44
|
| **Frontend Performance** | Core Web Vitals, LCP, FID, CLS (Lighthouse) |
|
|
34
|
-
| **
|
|
45
|
+
| **Code Quality** | ESLint, TypeScript, complexity analysis |
|
|
46
|
+
| **Security** | Snyk, npm audit, dependency vulnerabilities |
|
|
47
|
+
| **Accessibility** | Pa11y, axe-core CI integration |
|
|
48
|
+
| **Rust Support** | Axum, Actix, Rocket templates and tests |
|
|
49
|
+
| **NestJS Support** | Controllers, services, guards, pipes, interceptors |
|
|
35
50
|
|
|
36
51
|
## How It Works
|
|
37
52
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
53
|
+
```
|
|
54
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
55
|
+
│ Daemon Workflow │
|
|
56
|
+
├─────────────────────────────────────────────────────────────┤
|
|
57
|
+
│ │
|
|
58
|
+
│ 1. DETECT Auto-detect framework, database, language │
|
|
59
|
+
│ ↓ │
|
|
60
|
+
│ 2. ANALYZE Static analysis, security scan, dependencies │
|
|
61
|
+
│ ↓ │
|
|
62
|
+
│ 3. SCORE 5-dimension quality scoring │
|
|
63
|
+
│ ↓ │
|
|
64
|
+
│ 4. GENERATE Framework-specific test templates │
|
|
65
|
+
│ ↓ │
|
|
66
|
+
│ 5. EXECUTE Run tests in Docker container │
|
|
67
|
+
│ ↓ │
|
|
68
|
+
│ 6. FIX Auto-fix applicable issues │
|
|
69
|
+
│ ↓ │
|
|
70
|
+
│ 7. REPORT Comprehensive coverage and quality report │
|
|
71
|
+
│ │
|
|
72
|
+
└─────────────────────────────────────────────────────────────┘
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Available Commands
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Full analysis with scoring and test generation
|
|
79
|
+
npx @oalacea/daemon
|
|
80
|
+
|
|
81
|
+
# Code review with detailed report
|
|
82
|
+
npx @oalacea/daemon review
|
|
43
83
|
|
|
44
|
-
|
|
84
|
+
# Quality score only
|
|
85
|
+
npx @oalacea/daemon score
|
|
45
86
|
|
|
46
|
-
|
|
87
|
+
# Generate tests only
|
|
88
|
+
npx @oalacea/daemon test
|
|
47
89
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
| Frontend Performance | Lighthouse (Core Web Vitals) |
|
|
54
|
-
| Utilities | supertest, MSW, @prisma/cli |
|
|
90
|
+
# Docker container commands
|
|
91
|
+
docker exec daemon-tools vitest run
|
|
92
|
+
docker exec daemon-tools playwright test
|
|
93
|
+
docker exec daemon-tools k6 run performance/test.js
|
|
94
|
+
```
|
|
55
95
|
|
|
56
96
|
## Framework Support
|
|
57
97
|
|
|
58
|
-
| Framework | Detection |
|
|
59
|
-
|
|
60
|
-
| Next.js | ✅ |
|
|
61
|
-
| Remix | ✅ |
|
|
62
|
-
| SvelteKit | ✅ |
|
|
63
|
-
| Nuxt | ✅ |
|
|
64
|
-
| Astro | ✅ |
|
|
65
|
-
|
|
|
66
|
-
| Vite | ✅ |
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
98
|
+
| Framework | Detection | Unit | Integration | E2E | Score | Review |
|
|
99
|
+
|-----------|-----------|------|-------------|-----|-------|--------|
|
|
100
|
+
| **Next.js** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
101
|
+
| **Remix** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
102
|
+
| **SvelteKit** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
103
|
+
| **Nuxt** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
104
|
+
| **Astro** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
105
|
+
| **Vite + React** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
106
|
+
| **Vite + Vue** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
107
|
+
| **Vite + Svelte** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
108
|
+
| **Angular** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
109
|
+
| **Solid** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
110
|
+
| **Express** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
111
|
+
| **Fastify** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
112
|
+
| **NestJS** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
113
|
+
| **Axum** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
114
|
+
| **Actix-web** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
115
|
+
| **Rocket** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
116
|
+
|
|
117
|
+
## Toolkit Tools
|
|
118
|
+
|
|
119
|
+
The Docker container includes 50+ tools:
|
|
120
|
+
|
|
121
|
+
### Testing
|
|
122
|
+
- **Vitest** - Fast unit test runner
|
|
123
|
+
- **Playwright** - E2E testing (Chromium, Firefox)
|
|
124
|
+
- **@testing-library/*** - Component testing
|
|
125
|
+
- **k6** - Load testing
|
|
126
|
+
- **supertest** - HTTP assertions
|
|
127
|
+
- **MSW** - API mocking
|
|
128
|
+
|
|
129
|
+
### Code Quality
|
|
130
|
+
- **ESLint** - JavaScript/TypeScript linting
|
|
131
|
+
- **Prettier** - Code formatting
|
|
132
|
+
- **TypeScript** - Type checking
|
|
133
|
+
|
|
134
|
+
### Performance
|
|
135
|
+
- **Lighthouse** - Web vitals
|
|
136
|
+
- **Clinic** - Node.js profiling
|
|
137
|
+
- **k6** - Load testing
|
|
138
|
+
|
|
139
|
+
### Security
|
|
140
|
+
- **Snyk** - Dependency scanning
|
|
141
|
+
- **npm audit** - Security audit
|
|
142
|
+
|
|
143
|
+
### Accessibility
|
|
144
|
+
- **Pa11y** - Accessibility testing
|
|
145
|
+
- **axe-core** - A11y validation
|
|
146
|
+
|
|
147
|
+
### Rust Toolchain
|
|
148
|
+
- **rustc, cargo** - Compiler and package manager
|
|
149
|
+
- **rustfmt** - Code formatter
|
|
150
|
+
- **clippy** - Linter
|
|
151
|
+
- **cargo-nextest** - Parallel test runner
|
|
152
|
+
- **cargo-audit** - Security audit
|
|
74
153
|
|
|
75
154
|
## Output Example
|
|
76
155
|
|
|
77
156
|
```
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
157
|
+
╔═══════════════════════════════════════════════════════════╗
|
|
158
|
+
║ DAEMON REPORT v0.7.0 ║
|
|
159
|
+
╠═══════════════════════════════════════════════════════════╣
|
|
160
|
+
║ ║
|
|
161
|
+
║ Framework: Next.js 14 ║
|
|
162
|
+
║ Language: TypeScript ║
|
|
163
|
+
║ Test Runner: Vitest ║
|
|
164
|
+
║ ║
|
|
165
|
+
║ ┌─────────────────────────────────────────────────────┐ ║
|
|
166
|
+
║ │ QUALITY SCORE │ ║
|
|
167
|
+
║ │ Overall: 82/100 (B) │ ║
|
|
168
|
+
║ │ │ ║
|
|
169
|
+
║ │ Coverage ████████████████░░ 85/100 │ ║
|
|
170
|
+
║ │ Quality ██████████████░░░░ 78/100 │ ║
|
|
171
|
+
║ │ Performance ████████████████░░ 88/100 │ ║
|
|
172
|
+
║ │ Security ████████████░░░░░░ 75/100 │ ║
|
|
173
|
+
║ │ Docs ██████████░░░░░░░░ 70/100 │ ║
|
|
174
|
+
║ └─────────────────────────────────────────────────────┘ ║
|
|
175
|
+
║ ║
|
|
176
|
+
║ ┌─────────────────────────────────────────────────────┐ ║
|
|
177
|
+
║ │ TESTS GENERATED │ ║
|
|
178
|
+
║ │ ✓ Unit: 45 created, 42 passing, 3 fixed │ ║
|
|
179
|
+
║ │ ✓ Integration: 12 created, 12 passing │ ║
|
|
180
|
+
║ │ ✓ E2E: 8 created, 7 passing, 1 manual review │ ║
|
|
181
|
+
║ └─────────────────────────────────────────────────────┘ ║
|
|
182
|
+
║ ║
|
|
183
|
+
║ ┌─────────────────────────────────────────────────────┐ ║
|
|
184
|
+
║ │ PERFORMANCE │ ║
|
|
185
|
+
║ │ ✓ Backend: p95 = 145ms (PASS < 500ms) │ ║
|
|
186
|
+
║ │ ✓ Frontend: Lighthouse 85/100 │ ║
|
|
187
|
+
║ │ - LCP: 2.1s ✓ (target: <2.5s) │ ║
|
|
188
|
+
║ │ - FID: 56ms ✓ (target: <100ms) │ ║
|
|
189
|
+
║ │ - CLS: 0.05 ✓ (target: <0.1) │ ║
|
|
190
|
+
║ └─────────────────────────────────────────────────────┘ ║
|
|
191
|
+
║ ║
|
|
192
|
+
║ ┌─────────────────────────────────────────────────────┐ ║
|
|
193
|
+
║ │ CODE REVIEW ISSUES │ ║
|
|
194
|
+
║ │ 🔴 Critical: 3 | 🟠 High: 8 │ ║
|
|
195
|
+
║ │ 🟡 Medium: 15 | 🟢 Low: 16 │ ║
|
|
196
|
+
║ │ Fixable: 28 | Auto-fix available: --fix flag │ ║
|
|
197
|
+
║ └─────────────────────────────────────────────────────┘ ║
|
|
198
|
+
║ ║
|
|
199
|
+
║ Total Tests: 245 ║
|
|
200
|
+
║ Passing: 238 ║
|
|
201
|
+
║ Failing: 2 (requires manual review) ║
|
|
202
|
+
║ Coverage: 84% ║
|
|
203
|
+
╚═══════════════════════════════════════════════════════════╝
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Configuration
|
|
207
|
+
|
|
208
|
+
Create `daemon.config.js` in your project root:
|
|
209
|
+
|
|
210
|
+
```javascript
|
|
211
|
+
// daemon.config.js
|
|
212
|
+
export default {
|
|
213
|
+
scoring: {
|
|
214
|
+
weights: {
|
|
215
|
+
coverage: 0.30,
|
|
216
|
+
quality: 0.25,
|
|
217
|
+
performance: 0.20,
|
|
218
|
+
security: 0.15,
|
|
219
|
+
documentation: 0.10,
|
|
220
|
+
},
|
|
221
|
+
thresholds: {
|
|
222
|
+
coverage: { excellent: 80, good: 60 },
|
|
223
|
+
performance: { lighthouse: 85 },
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
|
|
227
|
+
review: {
|
|
228
|
+
analyzers: ['static', 'security', 'dependencies', 'nestjs', 'rust'],
|
|
229
|
+
exclude: ['node_modules/**', 'dist/**'],
|
|
230
|
+
autoFix: { enabled: false },
|
|
231
|
+
},
|
|
232
|
+
|
|
233
|
+
nestjs: {
|
|
234
|
+
analyzeModules: true,
|
|
235
|
+
checkCircularDeps: true,
|
|
236
|
+
checkSingleResponsibility: true,
|
|
237
|
+
maxDependencies: 5,
|
|
238
|
+
},
|
|
239
|
+
|
|
240
|
+
rust: {
|
|
241
|
+
framework: 'axum', // or 'actix', 'rocket'
|
|
242
|
+
testRunner: 'cargo-nextest',
|
|
243
|
+
},
|
|
244
|
+
|
|
245
|
+
docker: {
|
|
246
|
+
image: 'daemon-tools:0.7.0',
|
|
247
|
+
keepRunning: false,
|
|
248
|
+
},
|
|
249
|
+
};
|
|
93
250
|
```
|
|
94
251
|
|
|
252
|
+
## Documentation
|
|
253
|
+
|
|
254
|
+
- [**Scoring System**](docs/scoring.md) - How code quality is measured
|
|
255
|
+
- [**Code Review**](docs/review.md) - Review workflow and options
|
|
256
|
+
- [**Rust Support**](docs/rust-support.md) - Rust frameworks and templates
|
|
257
|
+
- [**NestJS Support**](docs/nestjs-support.md) - NestJS patterns and best practices
|
|
258
|
+
- [**Templates**](templates/README.md) - Available test templates
|
|
259
|
+
- [**Docker**](bin/README.md) - Container tools and usage
|
|
260
|
+
|
|
95
261
|
## Safety
|
|
96
262
|
|
|
97
|
-
-
|
|
98
|
-
- Never
|
|
99
|
-
- Git integration for safe rollbacks
|
|
100
|
-
- Non-destructive testing modes
|
|
263
|
+
- ✅ Transaction rollback for database tests
|
|
264
|
+
- ✅ Never modifies production data
|
|
265
|
+
- ✅ Git integration for safe rollbacks
|
|
266
|
+
- ✅ Non-destructive testing modes
|
|
267
|
+
- ✅ Dry-run for all fixes
|
|
101
268
|
|
|
102
269
|
## Troubleshooting
|
|
103
270
|
|
|
@@ -125,23 +292,66 @@ docker exec daemon-tools npm test -- Button.test.ts --reporter=verbose
|
|
|
125
292
|
|
|
126
293
|
```bash
|
|
127
294
|
# Quick performance check
|
|
128
|
-
docker exec daemon-tools
|
|
295
|
+
docker exec daemon-tools lighthouse http://host.docker.internal:3000
|
|
129
296
|
|
|
130
297
|
# Mobile audit
|
|
131
|
-
docker exec daemon-tools
|
|
298
|
+
docker exec daemon-tools lighthouse http://host.docker.internal:3000 --form-factor=mobile
|
|
132
299
|
|
|
133
300
|
# All categories
|
|
134
|
-
docker exec daemon-tools
|
|
301
|
+
docker exec daemon-tools lighthouse http://host.docker.internal:3000 --only-categories=performance,accessibility,best-practices,seo
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Rust tools
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
# Run Rust tests
|
|
308
|
+
docker exec daemon-tools cargo test
|
|
309
|
+
|
|
310
|
+
# Run clippy
|
|
311
|
+
docker exec daemon-tools cargo clippy
|
|
312
|
+
|
|
313
|
+
# Format code
|
|
314
|
+
docker exec daemon-tools cargo fmt
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
## CI/CD Integration
|
|
318
|
+
|
|
319
|
+
### GitHub Actions
|
|
320
|
+
|
|
321
|
+
```yaml
|
|
322
|
+
name: Daemon CI
|
|
323
|
+
|
|
324
|
+
on: [pull_request]
|
|
325
|
+
|
|
326
|
+
jobs:
|
|
327
|
+
daemon:
|
|
328
|
+
runs-on: ubuntu-latest
|
|
329
|
+
steps:
|
|
330
|
+
- uses: actions/checkout@v3
|
|
331
|
+
- name: Run Daemon
|
|
332
|
+
run: npx @oalacea/daemon score --min=80
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### GitLab CI
|
|
336
|
+
|
|
337
|
+
```yaml
|
|
338
|
+
daemon:
|
|
339
|
+
stage: test
|
|
340
|
+
script:
|
|
341
|
+
- npx @oalacea/daemon review --json > report.json
|
|
342
|
+
artifacts:
|
|
343
|
+
reports:
|
|
344
|
+
codequality: report.json
|
|
135
345
|
```
|
|
136
346
|
|
|
137
|
-
## Related
|
|
347
|
+
## Related Projects
|
|
138
348
|
|
|
139
|
-
- **Guardian** - Security testing
|
|
349
|
+
- **Guardian** - Security testing: `npx @oalacea/guardian`
|
|
140
350
|
|
|
141
351
|
## License
|
|
142
352
|
|
|
143
|
-
MIT
|
|
353
|
+
MIT — Use at your own risk.
|
|
144
354
|
|
|
145
355
|
## Credits
|
|
146
356
|
|
|
147
|
-
|
|
357
|
+
Built for modern web development teams who care about code quality.
|
package/bin/Dockerfile
CHANGED
|
@@ -1,12 +1,32 @@
|
|
|
1
|
-
# Daemon - Testing Tools Container
|
|
1
|
+
# Daemon - Testing Tools Container v0.7.0
|
|
2
2
|
FROM node:20-slim
|
|
3
3
|
|
|
4
4
|
LABEL maintainer="Yanis"
|
|
5
|
-
LABEL description="Daemon - Automated testing tools for web applications"
|
|
5
|
+
LABEL description="Daemon v0.7.0 - Automated testing and quality tools for web applications"
|
|
6
|
+
LABEL version="0.7.0"
|
|
6
7
|
|
|
7
|
-
#
|
|
8
|
+
# ============================================================================
|
|
9
|
+
# ENVIRONMENT VARIABLES
|
|
10
|
+
# ============================================================================
|
|
11
|
+
ENV DEBIAN_FRONTEND=noninteractive \
|
|
12
|
+
NODE_ENV=development \
|
|
13
|
+
TZ=Europe/Paris
|
|
14
|
+
|
|
15
|
+
# Rust environment variables
|
|
16
|
+
ENV RUSTUP_HOME=/usr/local/rustup \
|
|
17
|
+
CARGO_HOME=/usr/local/cargo \
|
|
18
|
+
PATH="/usr/local/cargo/bin:${PATH}"
|
|
19
|
+
|
|
20
|
+
# ============================================================================
|
|
21
|
+
# SYSTEM DEPENDENCIES
|
|
22
|
+
# ============================================================================
|
|
23
|
+
# Install system dependencies for Playwright, Rust, and general utilities
|
|
8
24
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
9
25
|
ca-certificates \
|
|
26
|
+
curl \
|
|
27
|
+
gcc \
|
|
28
|
+
g++ \
|
|
29
|
+
make \
|
|
10
30
|
libnss3 \
|
|
11
31
|
libnspr4 \
|
|
12
32
|
libatk1.0-0 \
|
|
@@ -25,17 +45,42 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
25
45
|
libatspi2.0-0 \
|
|
26
46
|
libxshmfence1 \
|
|
27
47
|
wget \
|
|
28
|
-
|
|
48
|
+
build-essential \
|
|
49
|
+
pkg-config \
|
|
50
|
+
libssl-dev \
|
|
51
|
+
&& rm -rf /var/lib/apt/lists/* \
|
|
52
|
+
&& apt-get clean
|
|
29
53
|
|
|
30
|
-
#
|
|
31
|
-
|
|
54
|
+
# ============================================================================
|
|
55
|
+
# RUST TOOLCHAIN
|
|
56
|
+
# ============================================================================
|
|
57
|
+
# Install Rust with rustup for Rust project testing and compilation
|
|
58
|
+
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && \
|
|
59
|
+
rustup component add rustfmt clippy rust-analyzer && \
|
|
60
|
+
cargo install cargo-nextest && \
|
|
61
|
+
cargo install cargo-audit && \
|
|
62
|
+
cargo install cargo-watch && \
|
|
63
|
+
chmod -R a+w $RUSTUP_HOME $CARGO_HOME
|
|
32
64
|
|
|
33
|
-
#
|
|
65
|
+
# ============================================================================
|
|
66
|
+
# PLAYWRIGHT BROWSERS
|
|
67
|
+
# ============================================================================
|
|
68
|
+
# Install Playwright browsers for E2E testing
|
|
69
|
+
RUN npx playwright install --with-deps chromium && \
|
|
70
|
+
npx playwright install --with-deps firefox
|
|
71
|
+
|
|
72
|
+
# ============================================================================
|
|
73
|
+
# TESTING FRAMEWORKS
|
|
74
|
+
# ============================================================================
|
|
75
|
+
# Core testing frameworks for JavaScript/TypeScript
|
|
34
76
|
RUN npm install -g \
|
|
35
77
|
vitest \
|
|
36
78
|
@vitest/ui \
|
|
37
79
|
@playwright/test \
|
|
38
|
-
@vitejs/plugin-react
|
|
80
|
+
@vitejs/plugin-react
|
|
81
|
+
|
|
82
|
+
# Testing libraries for multiple frameworks
|
|
83
|
+
RUN npm install -g \
|
|
39
84
|
@testing-library/react \
|
|
40
85
|
@testing-library/jest-dom \
|
|
41
86
|
@testing-library/user-event \
|
|
@@ -45,7 +90,35 @@ RUN npm install -g \
|
|
|
45
90
|
@vue/test-utils \
|
|
46
91
|
happy-dom
|
|
47
92
|
|
|
48
|
-
#
|
|
93
|
+
# ============================================================================
|
|
94
|
+
# CODE QUALITY TOOLS
|
|
95
|
+
# ============================================================================
|
|
96
|
+
# ESLint for code linting
|
|
97
|
+
RUN npm install -g \
|
|
98
|
+
eslint \
|
|
99
|
+
@typescript-eslint/parser \
|
|
100
|
+
@typescript-eslint/eslint-plugin \
|
|
101
|
+
eslint-config-prettier \
|
|
102
|
+
eslint-plugin-react \
|
|
103
|
+
eslint-plugin-react-hooks \
|
|
104
|
+
eslint-plugin-vue
|
|
105
|
+
|
|
106
|
+
# Prettier for code formatting
|
|
107
|
+
RUN npm install -g prettier prettier-plugin-tailwindcss
|
|
108
|
+
|
|
109
|
+
# ============================================================================
|
|
110
|
+
# SECURITY TOOLS
|
|
111
|
+
# ============================================================================
|
|
112
|
+
# Security scanning for Node.js dependencies
|
|
113
|
+
RUN npm install -g \
|
|
114
|
+
snyk \
|
|
115
|
+
npm audit \
|
|
116
|
+
@npmcli/arborist
|
|
117
|
+
|
|
118
|
+
# ============================================================================
|
|
119
|
+
# PERFORMANCE TESTING TOOLS
|
|
120
|
+
# ============================================================================
|
|
121
|
+
# Install k6 for load and performance testing
|
|
49
122
|
ARG TARGETARCH=amd64
|
|
50
123
|
RUN ARCH=$([ "$TARGETARCH" = "arm64" ] && echo "arm64" || echo "amd64") && \
|
|
51
124
|
wget -q "https://github.com/grafana/k6/releases/download/v1.5.0/k6-v1.5.0-linux-${ARCH}.tar.gz" -O /tmp/k6.tar.gz && \
|
|
@@ -53,23 +126,92 @@ RUN ARCH=$([ "$TARGETARCH" = "arm64" ] && echo "arm64" || echo "amd64") && \
|
|
|
53
126
|
mv /tmp/k6-v1.5.0-linux-${ARCH}/k6 /usr/local/bin/ && \
|
|
54
127
|
rm -rf /tmp/k6.tar.gz /tmp/k6-v1.5.0-linux-${ARCH}
|
|
55
128
|
|
|
56
|
-
#
|
|
129
|
+
# Performance analysis tools
|
|
130
|
+
RUN npm install -g clinic lighthouse
|
|
131
|
+
|
|
132
|
+
# ============================================================================
|
|
133
|
+
# ACCESSIBILITY TESTING TOOLS
|
|
134
|
+
# ============================================================================
|
|
135
|
+
# Accessibility testing and validation
|
|
136
|
+
RUN npm install -g \
|
|
137
|
+
pa11y \
|
|
138
|
+
pa11y-ci \
|
|
139
|
+
@axe-core/cli
|
|
140
|
+
|
|
141
|
+
# ============================================================================
|
|
142
|
+
# API TESTING AND MOCKING
|
|
143
|
+
# ============================================================================
|
|
144
|
+
# API testing utilities
|
|
57
145
|
RUN npm install -g \
|
|
58
146
|
supertest \
|
|
59
147
|
msw \
|
|
148
|
+
axios \
|
|
149
|
+
got
|
|
150
|
+
|
|
151
|
+
# ============================================================================
|
|
152
|
+
# DATABASE TOOLS
|
|
153
|
+
# ============================================================================
|
|
154
|
+
# Database ORM and CLI tools
|
|
155
|
+
RUN npm install -g \
|
|
60
156
|
prisma \
|
|
61
|
-
|
|
157
|
+
@prisma/client
|
|
158
|
+
|
|
159
|
+
# ============================================================================
|
|
160
|
+
# REPORTING AND OUTPUT TOOLS
|
|
161
|
+
# ============================================================================
|
|
162
|
+
# Report generation utilities
|
|
163
|
+
RUN npm install -g \
|
|
164
|
+
cli-table3 \
|
|
165
|
+
chalk \
|
|
166
|
+
ora \
|
|
167
|
+
listr2 \
|
|
168
|
+
boxen
|
|
62
169
|
|
|
170
|
+
# ============================================================================
|
|
171
|
+
# ADDITIONAL UTILITIES
|
|
172
|
+
# ============================================================================
|
|
173
|
+
# Various development utilities
|
|
174
|
+
RUN npm install -g \
|
|
175
|
+
rimraf \
|
|
176
|
+
cross-env \
|
|
177
|
+
nodemon \
|
|
178
|
+
tsx \
|
|
179
|
+
ts-node \
|
|
180
|
+
typescript
|
|
181
|
+
|
|
182
|
+
# Clean up npm cache to reduce image size
|
|
183
|
+
RUN npm cache clean --force
|
|
184
|
+
|
|
185
|
+
# ============================================================================
|
|
186
|
+
# USER SETUP
|
|
187
|
+
# ============================================================================
|
|
63
188
|
# Create non-root user for security
|
|
64
189
|
# Use UID 1001 to avoid conflict with existing node user (UID 1000)
|
|
65
|
-
# Check if 'daemon' user exists first (node:20-slim already has it)
|
|
66
190
|
RUN id -u daemon >/dev/null 2>&1 || useradd -m -u 1001 -s /bin/bash daemon && \
|
|
67
|
-
mkdir -p /app && \
|
|
68
|
-
chown -R daemon:daemon /app
|
|
191
|
+
mkdir -p /app /home/daemon/.local/bin && \
|
|
192
|
+
chown -R daemon:daemon /app /home/daemon
|
|
193
|
+
|
|
194
|
+
# ============================================================================
|
|
195
|
+
# WORKING DIRECTORY
|
|
196
|
+
# ============================================================================
|
|
197
|
+
WORKDIR /app
|
|
198
|
+
|
|
199
|
+
# Copy entrypoint script
|
|
200
|
+
COPY docker-entrypoint.sh /usr/local/bin/
|
|
201
|
+
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
|
69
202
|
|
|
70
203
|
# Switch to non-root user
|
|
71
204
|
USER daemon
|
|
72
|
-
WORKDIR /app
|
|
73
205
|
|
|
74
|
-
#
|
|
206
|
+
# Expose common ports
|
|
207
|
+
EXPOSE 9323 3000 5173 8080
|
|
208
|
+
|
|
209
|
+
# Health check
|
|
210
|
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
211
|
+
CMD node -e "console.log('healthy')" || exit 1
|
|
212
|
+
|
|
213
|
+
# Use entrypoint script
|
|
214
|
+
ENTRYPOINT ["docker-entrypoint.sh"]
|
|
215
|
+
|
|
216
|
+
# Default command - keep container alive
|
|
75
217
|
CMD ["sleep", "infinity"]
|
package/dist/cli/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAcH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8D;;IAcvF;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0DxC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAyChB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,GAAG,UAAU;CAQf"}
|
package/dist/cli/cli.js
CHANGED
|
@@ -8,6 +8,11 @@ import { createLogger } from '../shared/utils/logger.js';
|
|
|
8
8
|
import { InitCommand } from './commands/init.command.js';
|
|
9
9
|
import { DetectCommand } from './commands/detect.command.js';
|
|
10
10
|
import { TestCommand } from './commands/test.command.js';
|
|
11
|
+
import { ScoreCommand } from './commands/score.command.js';
|
|
12
|
+
import { ReviewCommand } from './commands/review.command.js';
|
|
13
|
+
import { OptimizeCommand } from './commands/optimize.command.js';
|
|
14
|
+
import { ReportCommand } from './commands/report.command.js';
|
|
15
|
+
import { HistoryCommand } from './commands/history.command.js';
|
|
11
16
|
const logger = createLogger('DaemonCli');
|
|
12
17
|
/**
|
|
13
18
|
* Main CLI class for Daemon
|
|
@@ -21,6 +26,11 @@ export class DaemonCli {
|
|
|
21
26
|
this.commands.set('init', new InitCommand());
|
|
22
27
|
this.commands.set('detect', new DetectCommand());
|
|
23
28
|
this.commands.set('test', new TestCommand());
|
|
29
|
+
this.commands.set('score', new ScoreCommand());
|
|
30
|
+
this.commands.set('review', new ReviewCommand());
|
|
31
|
+
this.commands.set('optimize', new OptimizeCommand());
|
|
32
|
+
this.commands.set('report', new ReportCommand());
|
|
33
|
+
this.commands.set('history', new HistoryCommand());
|
|
24
34
|
}
|
|
25
35
|
/**
|
|
26
36
|
* Run the CLI with provided arguments
|
|
@@ -58,7 +68,7 @@ export class DaemonCli {
|
|
|
58
68
|
return;
|
|
59
69
|
}
|
|
60
70
|
if (args[0] === '--version') {
|
|
61
|
-
console.log('v0.
|
|
71
|
+
console.log('v0.7.0');
|
|
62
72
|
return;
|
|
63
73
|
}
|
|
64
74
|
const commandName = args[0] ?? '';
|
|
@@ -82,7 +92,7 @@ export class DaemonCli {
|
|
|
82
92
|
*/
|
|
83
93
|
showHelp() {
|
|
84
94
|
console.log(`
|
|
85
|
-
Daemon v0.
|
|
95
|
+
Daemon v0.7.0 - AI-powered code quality toolkit
|
|
86
96
|
|
|
87
97
|
USAGE:
|
|
88
98
|
daemon <command> [options]
|
|
@@ -91,6 +101,11 @@ COMMANDS:
|
|
|
91
101
|
init Initialize project with Daemon (creates EXECUTE.md + Dockerfile.daemon)
|
|
92
102
|
detect Detect project framework and tools
|
|
93
103
|
test Generate and run tests
|
|
104
|
+
score Show quality scores across dimensions (test, security, performance, etc.)
|
|
105
|
+
review Perform comprehensive code review
|
|
106
|
+
optimize Analyze and apply code optimizations
|
|
107
|
+
report Generate quality reports (HTML, Markdown, JSON, JUnit)
|
|
108
|
+
history View score history and trends
|
|
94
109
|
|
|
95
110
|
OPTIONS:
|
|
96
111
|
--help, -h Show this help message
|
|
@@ -100,6 +115,11 @@ EXAMPLES:
|
|
|
100
115
|
daemon init
|
|
101
116
|
daemon detect
|
|
102
117
|
daemon test --coverage
|
|
118
|
+
daemon score --dim all
|
|
119
|
+
daemon review --fix --auto
|
|
120
|
+
daemon optimize --perf --apply
|
|
121
|
+
daemon report --format=html --output=report.html
|
|
122
|
+
daemon history --limit=20 --compare
|
|
103
123
|
|
|
104
124
|
GETTING STARTED:
|
|
105
125
|
1. Run "daemon init" to initialize your project
|