@revealui/mcp 0.0.1-pre.0 → 0.1.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/.env.example +9 -0
- package/MCP_MAINTENANCE.md +265 -0
- package/README.md +260 -0
- package/__tests__/crdt.integration.test.ts +156 -0
- package/configs/README.md +77 -0
- package/configs/claude-template.json +54 -0
- package/dist/packages/core/src/database/ssl-config.d.ts +9 -0
- package/dist/packages/core/src/database/ssl-config.d.ts.map +1 -0
- package/dist/packages/core/src/database/ssl-config.js +8 -0
- package/dist/packages/core/src/database/ssl-config.js.map +1 -0
- package/dist/packages/core/src/features.d.ts +86 -0
- package/dist/packages/core/src/features.d.ts.map +1 -0
- package/dist/packages/core/src/features.js +93 -0
- package/dist/packages/core/src/features.js.map +1 -0
- package/dist/packages/core/src/license.d.ts +75 -0
- package/dist/packages/core/src/license.d.ts.map +1 -0
- package/dist/packages/core/src/license.js +174 -0
- package/dist/packages/core/src/license.js.map +1 -0
- package/dist/packages/core/src/monitoring/alerts.d.ts +118 -0
- package/dist/packages/core/src/monitoring/alerts.d.ts.map +1 -0
- package/dist/packages/core/src/monitoring/alerts.js +325 -0
- package/dist/packages/core/src/monitoring/alerts.js.map +1 -0
- package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +71 -0
- package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +1 -0
- package/dist/packages/core/src/monitoring/cleanup-manager.js +227 -0
- package/dist/packages/core/src/monitoring/cleanup-manager.js.map +1 -0
- package/dist/packages/core/src/monitoring/health-monitor.d.ts +22 -0
- package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +1 -0
- package/dist/packages/core/src/monitoring/health-monitor.js +143 -0
- package/dist/packages/core/src/monitoring/health-monitor.js.map +1 -0
- package/dist/packages/core/src/monitoring/index.d.ts +14 -0
- package/dist/packages/core/src/monitoring/index.d.ts.map +1 -0
- package/dist/packages/core/src/monitoring/index.js +18 -0
- package/dist/packages/core/src/monitoring/index.js.map +1 -0
- package/dist/packages/core/src/monitoring/process-registry.d.ts +97 -0
- package/dist/packages/core/src/monitoring/process-registry.d.ts.map +1 -0
- package/dist/packages/core/src/monitoring/process-registry.js +223 -0
- package/dist/packages/core/src/monitoring/process-registry.js.map +1 -0
- package/dist/packages/core/src/monitoring/types.d.ts +231 -0
- package/dist/packages/core/src/monitoring/types.d.ts.map +1 -0
- package/dist/packages/core/src/monitoring/types.js +43 -0
- package/dist/packages/core/src/monitoring/types.js.map +1 -0
- package/dist/packages/core/src/monitoring/zombie-detector.d.ts +81 -0
- package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +1 -0
- package/dist/packages/core/src/monitoring/zombie-detector.js +232 -0
- package/dist/packages/core/src/monitoring/zombie-detector.js.map +1 -0
- package/dist/packages/core/src/observability/logger.d.ts +47 -0
- package/dist/packages/core/src/observability/logger.d.ts.map +1 -0
- package/dist/packages/core/src/observability/logger.js +141 -0
- package/dist/packages/core/src/observability/logger.js.map +1 -0
- package/dist/packages/core/src/utils/logger-server.d.ts +32 -0
- package/dist/packages/core/src/utils/logger-server.d.ts.map +1 -0
- package/dist/packages/core/src/utils/logger-server.js +69 -0
- package/dist/packages/core/src/utils/logger-server.js.map +1 -0
- package/dist/packages/core/src/utils/request-context.d.ts +143 -0
- package/dist/packages/core/src/utils/request-context.d.ts.map +1 -0
- package/dist/packages/core/src/utils/request-context.js +169 -0
- package/dist/packages/core/src/utils/request-context.js.map +1 -0
- package/dist/packages/dev/src/code-validator/index.d.ts +20 -0
- package/dist/packages/dev/src/code-validator/index.d.ts.map +1 -0
- package/dist/packages/dev/src/code-validator/index.js +20 -0
- package/dist/packages/dev/src/code-validator/index.js.map +1 -0
- package/dist/packages/dev/src/code-validator/types.d.ts +67 -0
- package/dist/packages/dev/src/code-validator/types.d.ts.map +1 -0
- package/dist/packages/dev/src/code-validator/types.js +7 -0
- package/dist/packages/dev/src/code-validator/types.js.map +1 -0
- package/dist/packages/dev/src/code-validator/validator.d.ts +48 -0
- package/dist/packages/dev/src/code-validator/validator.d.ts.map +1 -0
- package/dist/packages/dev/src/code-validator/validator.js +176 -0
- package/dist/packages/dev/src/code-validator/validator.js.map +1 -0
- package/dist/packages/mcp/src/adapters/db.d.ts +46 -0
- package/dist/packages/mcp/src/adapters/db.d.ts.map +1 -0
- package/dist/packages/mcp/src/adapters/db.js +127 -0
- package/dist/packages/mcp/src/adapters/db.js.map +1 -0
- package/dist/packages/mcp/src/config/index.d.ts +11 -0
- package/dist/packages/mcp/src/config/index.d.ts.map +1 -0
- package/dist/packages/mcp/src/config/index.js +18 -0
- package/dist/packages/mcp/src/config/index.js.map +1 -0
- package/dist/packages/mcp/src/contracts.d.ts +131 -0
- package/dist/packages/mcp/src/contracts.d.ts.map +1 -0
- package/dist/packages/mcp/src/contracts.js +153 -0
- package/dist/packages/mcp/src/contracts.js.map +1 -0
- package/dist/packages/mcp/src/hypervisor.d.ts +132 -0
- package/dist/packages/mcp/src/hypervisor.d.ts.map +1 -0
- package/dist/packages/mcp/src/hypervisor.js +359 -0
- package/dist/packages/mcp/src/hypervisor.js.map +1 -0
- package/dist/packages/mcp/src/index.d.ts +25 -0
- package/dist/packages/mcp/src/index.d.ts.map +1 -0
- package/dist/packages/mcp/src/index.js +41 -0
- package/dist/packages/mcp/src/index.js.map +1 -0
- package/dist/packages/mcp/src/servers/adapter.d.ts +199 -0
- package/dist/packages/mcp/src/servers/adapter.d.ts.map +1 -0
- package/dist/packages/mcp/src/servers/adapter.js +487 -0
- package/dist/packages/mcp/src/servers/adapter.js.map +1 -0
- package/dist/packages/mcp/src/servers/code-validator.d.ts +24 -0
- package/dist/packages/mcp/src/servers/code-validator.d.ts.map +1 -0
- package/dist/packages/mcp/src/servers/code-validator.js +156 -0
- package/dist/packages/mcp/src/servers/code-validator.js.map +1 -0
- package/dist/packages/mcp/src/servers/neon.d.ts +11 -0
- package/dist/packages/mcp/src/servers/neon.d.ts.map +1 -0
- package/dist/packages/mcp/src/servers/neon.js +90 -0
- package/dist/packages/mcp/src/servers/neon.js.map +1 -0
- package/dist/packages/mcp/src/servers/next-devtools.d.ts +11 -0
- package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +1 -0
- package/dist/packages/mcp/src/servers/next-devtools.js +215 -0
- package/dist/packages/mcp/src/servers/next-devtools.js.map +1 -0
- package/dist/packages/mcp/src/servers/playwright.d.ts +11 -0
- package/dist/packages/mcp/src/servers/playwright.d.ts.map +1 -0
- package/dist/packages/mcp/src/servers/playwright.js +68 -0
- package/dist/packages/mcp/src/servers/playwright.js.map +1 -0
- package/dist/packages/mcp/src/servers/stripe.d.ts +11 -0
- package/dist/packages/mcp/src/servers/stripe.d.ts.map +1 -0
- package/dist/packages/mcp/src/servers/stripe.js +86 -0
- package/dist/packages/mcp/src/servers/stripe.js.map +1 -0
- package/dist/packages/mcp/src/servers/supabase.d.ts +11 -0
- package/dist/packages/mcp/src/servers/supabase.d.ts.map +1 -0
- package/dist/packages/mcp/src/servers/supabase.js +144 -0
- package/dist/packages/mcp/src/servers/supabase.js.map +1 -0
- package/dist/packages/mcp/src/servers/vercel.d.ts +11 -0
- package/dist/packages/mcp/src/servers/vercel.d.ts.map +1 -0
- package/dist/packages/mcp/src/servers/vercel.js +87 -0
- package/dist/packages/mcp/src/servers/vercel.js.map +1 -0
- package/dist/packages/mcp/src/servers/vultr-test.d.ts +3 -0
- package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +1 -0
- package/dist/packages/mcp/src/servers/vultr-test.js +82 -0
- package/dist/packages/mcp/src/servers/vultr-test.js.map +1 -0
- package/dist/scripts/lib/analyzers/console-analyzer.d.ts +188 -0
- package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +1 -0
- package/dist/scripts/lib/analyzers/console-analyzer.js +432 -0
- package/dist/scripts/lib/analyzers/console-analyzer.js.map +1 -0
- package/dist/scripts/lib/analyzers/index.d.ts +11 -0
- package/dist/scripts/lib/analyzers/index.d.ts.map +1 -0
- package/dist/scripts/lib/analyzers/index.js +11 -0
- package/dist/scripts/lib/analyzers/index.js.map +1 -0
- package/dist/scripts/lib/args.d.ts +104 -0
- package/dist/scripts/lib/args.d.ts.map +1 -0
- package/dist/scripts/lib/args.js +304 -0
- package/dist/scripts/lib/args.js.map +1 -0
- package/dist/scripts/lib/cache.d.ts +185 -0
- package/dist/scripts/lib/cache.d.ts.map +1 -0
- package/dist/scripts/lib/cache.js +390 -0
- package/dist/scripts/lib/cache.js.map +1 -0
- package/dist/scripts/lib/cli/dispatch.d.ts +116 -0
- package/dist/scripts/lib/cli/dispatch.d.ts.map +1 -0
- package/dist/scripts/lib/cli/dispatch.js +206 -0
- package/dist/scripts/lib/cli/dispatch.js.map +1 -0
- package/dist/scripts/lib/cli/index.d.ts +10 -0
- package/dist/scripts/lib/cli/index.d.ts.map +1 -0
- package/dist/scripts/lib/cli/index.js +10 -0
- package/dist/scripts/lib/cli/index.js.map +1 -0
- package/dist/scripts/lib/database/ssl-config.d.ts +26 -0
- package/dist/scripts/lib/database/ssl-config.d.ts.map +1 -0
- package/dist/scripts/lib/database/ssl-config.js +47 -0
- package/dist/scripts/lib/database/ssl-config.js.map +1 -0
- package/dist/scripts/lib/errors.d.ts +218 -0
- package/dist/scripts/lib/errors.d.ts.map +1 -0
- package/dist/scripts/lib/errors.js +543 -0
- package/dist/scripts/lib/errors.js.map +1 -0
- package/dist/scripts/lib/exec.d.ts +107 -0
- package/dist/scripts/lib/exec.d.ts.map +1 -0
- package/dist/scripts/lib/exec.js +232 -0
- package/dist/scripts/lib/exec.js.map +1 -0
- package/dist/scripts/lib/index.d.ts +50 -0
- package/dist/scripts/lib/index.d.ts.map +1 -0
- package/dist/scripts/lib/index.js +65 -0
- package/dist/scripts/lib/index.js.map +1 -0
- package/dist/scripts/lib/logger.d.ts +50 -0
- package/dist/scripts/lib/logger.d.ts.map +1 -0
- package/dist/scripts/lib/logger.js +159 -0
- package/dist/scripts/lib/logger.js.map +1 -0
- package/dist/scripts/lib/output.d.ts +149 -0
- package/dist/scripts/lib/output.d.ts.map +1 -0
- package/dist/scripts/lib/output.js +263 -0
- package/dist/scripts/lib/output.js.map +1 -0
- package/dist/scripts/lib/parallel.d.ts +164 -0
- package/dist/scripts/lib/parallel.d.ts.map +1 -0
- package/dist/scripts/lib/parallel.js +355 -0
- package/dist/scripts/lib/parallel.js.map +1 -0
- package/dist/scripts/lib/paths.d.ts +92 -0
- package/dist/scripts/lib/paths.d.ts.map +1 -0
- package/dist/scripts/lib/paths.js +171 -0
- package/dist/scripts/lib/paths.js.map +1 -0
- package/dist/scripts/lib/state/adapters/memory.d.ts +42 -0
- package/dist/scripts/lib/state/adapters/memory.d.ts.map +1 -0
- package/dist/scripts/lib/state/adapters/memory.js +110 -0
- package/dist/scripts/lib/state/adapters/memory.js.map +1 -0
- package/dist/scripts/lib/state/adapters/pglite.d.ts +46 -0
- package/dist/scripts/lib/state/adapters/pglite.d.ts.map +1 -0
- package/dist/scripts/lib/state/adapters/pglite.js +256 -0
- package/dist/scripts/lib/state/adapters/pglite.js.map +1 -0
- package/dist/scripts/lib/state/index.d.ts +16 -0
- package/dist/scripts/lib/state/index.d.ts.map +1 -0
- package/dist/scripts/lib/state/index.js +16 -0
- package/dist/scripts/lib/state/index.js.map +1 -0
- package/dist/scripts/lib/state/types.d.ts +111 -0
- package/dist/scripts/lib/state/types.d.ts.map +1 -0
- package/dist/scripts/lib/state/types.js +8 -0
- package/dist/scripts/lib/state/types.js.map +1 -0
- package/dist/scripts/lib/state/workflow-state.d.ts +110 -0
- package/dist/scripts/lib/state/workflow-state.d.ts.map +1 -0
- package/dist/scripts/lib/state/workflow-state.js +331 -0
- package/dist/scripts/lib/state/workflow-state.js.map +1 -0
- package/dist/scripts/lib/telemetry.d.ts +194 -0
- package/dist/scripts/lib/telemetry.d.ts.map +1 -0
- package/dist/scripts/lib/telemetry.js +394 -0
- package/dist/scripts/lib/telemetry.js.map +1 -0
- package/dist/scripts/lib/utils.d.ts +270 -0
- package/dist/scripts/lib/utils.d.ts.map +1 -0
- package/dist/scripts/lib/utils.js +473 -0
- package/dist/scripts/lib/utils.js.map +1 -0
- package/dist/scripts/lib/validation/database.d.ts +83 -0
- package/dist/scripts/lib/validation/database.d.ts.map +1 -0
- package/dist/scripts/lib/validation/database.js +199 -0
- package/dist/scripts/lib/validation/database.js.map +1 -0
- package/dist/scripts/lib/validation/env.d.ts +80 -0
- package/dist/scripts/lib/validation/env.d.ts.map +1 -0
- package/dist/scripts/lib/validation/env.js +246 -0
- package/dist/scripts/lib/validation/env.js.map +1 -0
- package/dist/scripts/lib/validation/index.d.ts +16 -0
- package/dist/scripts/lib/validation/index.d.ts.map +1 -0
- package/dist/scripts/lib/validation/index.js +16 -0
- package/dist/scripts/lib/validation/index.js.map +1 -0
- package/dist/scripts/lib/validation/post-execution.d.ts +74 -0
- package/dist/scripts/lib/validation/post-execution.d.ts.map +1 -0
- package/dist/scripts/lib/validation/post-execution.js +110 -0
- package/dist/scripts/lib/validation/post-execution.js.map +1 -0
- package/dist/scripts/lib/validation/pre-execution.d.ts +165 -0
- package/dist/scripts/lib/validation/pre-execution.d.ts.map +1 -0
- package/dist/scripts/lib/validation/pre-execution.js +466 -0
- package/dist/scripts/lib/validation/pre-execution.js.map +1 -0
- package/dist/scripts/lib/validators/documentation-validator.d.ts +242 -0
- package/dist/scripts/lib/validators/documentation-validator.d.ts.map +1 -0
- package/dist/scripts/lib/validators/documentation-validator.js +584 -0
- package/dist/scripts/lib/validators/documentation-validator.js.map +1 -0
- package/dist/scripts/lib/validators/index.d.ts +11 -0
- package/dist/scripts/lib/validators/index.d.ts.map +1 -0
- package/dist/scripts/lib/validators/index.js +11 -0
- package/dist/scripts/lib/validators/index.js.map +1 -0
- package/docker-compose.yml +46 -0
- package/docs/INDEX.md +88 -0
- package/docs/README.md +774 -0
- package/docs/SETUP.md +264 -0
- package/docs/servers/code-validator.md +586 -0
- package/eslint.config.js +7 -0
- package/migrations/0001_add_crdt_columns.sql +8 -0
- package/migrations/0001_rollback.sql +6 -0
- package/migrations/005_performance_indexes.sql +190 -0
- package/migrations/backfill_crdt_meta.js +45 -0
- package/package.json +21 -85
- package/src/__tests__/hypervisor.test.ts +212 -0
- package/src/adapters/db.ts +180 -0
- package/src/config/config.json +49 -0
- package/src/config/index.ts +30 -0
- package/src/contracts.ts +221 -0
- package/src/hypervisor.ts +464 -0
- package/src/index.ts +87 -0
- package/src/servers/adapter.ts +643 -0
- package/src/servers/code-validator.ts +188 -0
- package/src/servers/neon.ts +103 -0
- package/src/servers/next-devtools.ts +230 -0
- package/src/servers/playwright.ts +77 -0
- package/src/servers/stripe.ts +99 -0
- package/src/servers/supabase.ts +161 -0
- package/src/servers/vercel.ts +100 -0
- package/src/servers/vultr-test.ts +97 -0
- package/tsconfig.json +12 -0
- package/vitest.config.ts +22 -0
- package/LICENSE +0 -202
- package/dist/index.js +0 -10990
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-Execution Validation
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive validation checks to run before script execution.
|
|
5
|
+
* Ensures environment is properly configured and requirements are met.
|
|
6
|
+
*
|
|
7
|
+
* @dependencies
|
|
8
|
+
* - node:child_process - Process execution for git and disk checks
|
|
9
|
+
* - node:fs - Synchronous file system checks
|
|
10
|
+
* - node:fs/promises - Asynchronous file system operations
|
|
11
|
+
* - node:path - Path manipulation utilities
|
|
12
|
+
* - node:util - Promisify utilities for exec
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { ErrorCode } from '../errors.js'
|
|
17
|
+
*
|
|
18
|
+
* const validator = new PreExecutionValidator()
|
|
19
|
+
*
|
|
20
|
+
* const result = await validator.validate({
|
|
21
|
+
* checks: ['env', 'git', 'disk'],
|
|
22
|
+
* required: ['DATABASE_URL'],
|
|
23
|
+
* minDiskSpace: 1024 * 1024 * 1024, // 1GB
|
|
24
|
+
* })
|
|
25
|
+
*
|
|
26
|
+
* if (!result.passed) {
|
|
27
|
+
* console.error('Validation failed:', result.errors)
|
|
28
|
+
* process.exit(ErrorCode.VALIDATION_ERROR)
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
import { exec } from 'node:child_process';
|
|
33
|
+
import { existsSync } from 'node:fs';
|
|
34
|
+
import { access, constants } from 'node:fs/promises';
|
|
35
|
+
import { join } from 'node:path';
|
|
36
|
+
import { promisify } from 'node:util';
|
|
37
|
+
const execAsync = promisify(exec);
|
|
38
|
+
// =============================================================================
|
|
39
|
+
// Pre-Execution Validator
|
|
40
|
+
// =============================================================================
|
|
41
|
+
export class PreExecutionValidator {
|
|
42
|
+
/**
|
|
43
|
+
* Validate execution environment
|
|
44
|
+
*/
|
|
45
|
+
async validate(options = {}) {
|
|
46
|
+
const { checks = ['env', 'git', 'disk'], requiredEnvVars = [], optionalEnvVars = [], minDiskSpace, requiredPaths = [], writablePaths = [], requireCleanGit = false, minNodeVersion, checkDatabase = false, databaseUrl, } = options;
|
|
47
|
+
const errors = [];
|
|
48
|
+
const warnings = [];
|
|
49
|
+
const checkResults = [];
|
|
50
|
+
const fixes = [];
|
|
51
|
+
// Run each check
|
|
52
|
+
for (const check of checks) {
|
|
53
|
+
const startTime = Date.now();
|
|
54
|
+
let result;
|
|
55
|
+
try {
|
|
56
|
+
switch (check) {
|
|
57
|
+
case 'env':
|
|
58
|
+
result = await this.checkEnvironmentVariables(requiredEnvVars, optionalEnvVars);
|
|
59
|
+
break;
|
|
60
|
+
case 'dependencies':
|
|
61
|
+
result = await this.checkDependencies();
|
|
62
|
+
break;
|
|
63
|
+
case 'database':
|
|
64
|
+
result = await this.checkDatabase(checkDatabase, databaseUrl);
|
|
65
|
+
break;
|
|
66
|
+
case 'git':
|
|
67
|
+
result = await this.checkGit(requireCleanGit);
|
|
68
|
+
break;
|
|
69
|
+
case 'disk':
|
|
70
|
+
result = await this.checkDiskSpace(minDiskSpace);
|
|
71
|
+
break;
|
|
72
|
+
case 'permissions':
|
|
73
|
+
result = await this.checkPermissions(requiredPaths, writablePaths);
|
|
74
|
+
break;
|
|
75
|
+
case 'network':
|
|
76
|
+
result = await this.checkNetwork();
|
|
77
|
+
break;
|
|
78
|
+
case 'node-version':
|
|
79
|
+
result = await this.checkNodeVersion(minNodeVersion);
|
|
80
|
+
break;
|
|
81
|
+
default:
|
|
82
|
+
result = {
|
|
83
|
+
check,
|
|
84
|
+
passed: true,
|
|
85
|
+
durationMs: 0,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
result.durationMs = Date.now() - startTime;
|
|
89
|
+
checkResults.push(result);
|
|
90
|
+
if (!result.passed) {
|
|
91
|
+
errors.push({
|
|
92
|
+
check,
|
|
93
|
+
message: result.error || 'Check failed',
|
|
94
|
+
details: result.metadata,
|
|
95
|
+
});
|
|
96
|
+
// Add suggested fixes
|
|
97
|
+
const checkFixes = this.getSuggestedFixes(check, result);
|
|
98
|
+
fixes.push(...checkFixes);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
103
|
+
checkResults.push({
|
|
104
|
+
check,
|
|
105
|
+
passed: false,
|
|
106
|
+
error: errorMessage,
|
|
107
|
+
durationMs: Date.now() - startTime,
|
|
108
|
+
});
|
|
109
|
+
errors.push({
|
|
110
|
+
check,
|
|
111
|
+
message: errorMessage,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
passed: errors.length === 0,
|
|
117
|
+
errors,
|
|
118
|
+
warnings,
|
|
119
|
+
checkResults,
|
|
120
|
+
fixes,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
// ===========================================================================
|
|
124
|
+
// Individual Checks
|
|
125
|
+
// ===========================================================================
|
|
126
|
+
/**
|
|
127
|
+
* Check environment variables
|
|
128
|
+
*/
|
|
129
|
+
async checkEnvironmentVariables(required, optional) {
|
|
130
|
+
const missing = required.filter((name) => !process.env[name]);
|
|
131
|
+
const missingOptional = optional.filter((name) => !process.env[name]);
|
|
132
|
+
if (missing.length > 0) {
|
|
133
|
+
return {
|
|
134
|
+
check: 'env',
|
|
135
|
+
passed: false,
|
|
136
|
+
error: `Missing required environment variables: ${missing.join(', ')}`,
|
|
137
|
+
durationMs: 0,
|
|
138
|
+
metadata: { missing, missingOptional },
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
check: 'env',
|
|
143
|
+
passed: true,
|
|
144
|
+
durationMs: 0,
|
|
145
|
+
metadata: { missingOptional },
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Check dependencies are installed
|
|
150
|
+
*/
|
|
151
|
+
async checkDependencies() {
|
|
152
|
+
try {
|
|
153
|
+
const nodeModulesExists = existsSync(join(process.cwd(), 'node_modules'));
|
|
154
|
+
if (!nodeModulesExists) {
|
|
155
|
+
return {
|
|
156
|
+
check: 'dependencies',
|
|
157
|
+
passed: false,
|
|
158
|
+
error: 'node_modules directory not found',
|
|
159
|
+
durationMs: 0,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
check: 'dependencies',
|
|
164
|
+
passed: true,
|
|
165
|
+
durationMs: 0,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
return {
|
|
170
|
+
check: 'dependencies',
|
|
171
|
+
passed: false,
|
|
172
|
+
error: error instanceof Error ? error.message : String(error),
|
|
173
|
+
durationMs: 0,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Check database connectivity
|
|
179
|
+
*/
|
|
180
|
+
async checkDatabase(shouldCheck, databaseUrl) {
|
|
181
|
+
if (!shouldCheck) {
|
|
182
|
+
return { check: 'database', passed: true, durationMs: 0 };
|
|
183
|
+
}
|
|
184
|
+
const url = databaseUrl || process.env.DATABASE_URL;
|
|
185
|
+
if (!url) {
|
|
186
|
+
return {
|
|
187
|
+
check: 'database',
|
|
188
|
+
passed: false,
|
|
189
|
+
error: 'DATABASE_URL not configured',
|
|
190
|
+
durationMs: 0,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
// Simplified check - in production, would attempt actual connection
|
|
194
|
+
return {
|
|
195
|
+
check: 'database',
|
|
196
|
+
passed: true,
|
|
197
|
+
durationMs: 0,
|
|
198
|
+
metadata: { configured: true },
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Check git working tree
|
|
203
|
+
*/
|
|
204
|
+
async checkGit(requireClean) {
|
|
205
|
+
try {
|
|
206
|
+
// Check if git repo
|
|
207
|
+
await execAsync('git rev-parse --git-dir', { encoding: 'utf-8' });
|
|
208
|
+
if (requireClean) {
|
|
209
|
+
const { stdout } = await execAsync('git status --porcelain', { encoding: 'utf-8' });
|
|
210
|
+
if (stdout.trim()) {
|
|
211
|
+
return {
|
|
212
|
+
check: 'git',
|
|
213
|
+
passed: false,
|
|
214
|
+
error: 'Git working tree is not clean',
|
|
215
|
+
durationMs: 0,
|
|
216
|
+
metadata: { uncommittedChanges: true },
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
check: 'git',
|
|
222
|
+
passed: true,
|
|
223
|
+
durationMs: 0,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
catch (_error) {
|
|
227
|
+
return {
|
|
228
|
+
check: 'git',
|
|
229
|
+
passed: false,
|
|
230
|
+
error: 'Not a git repository',
|
|
231
|
+
durationMs: 0,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Check available disk space
|
|
237
|
+
*/
|
|
238
|
+
async checkDiskSpace(minBytes) {
|
|
239
|
+
if (!minBytes) {
|
|
240
|
+
return { check: 'disk', passed: true, durationMs: 0 };
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
// Use df command to check disk space
|
|
244
|
+
const { stdout } = await execAsync('df -k .', { encoding: 'utf-8' });
|
|
245
|
+
const lines = stdout.split('\n');
|
|
246
|
+
const dataLine = lines[1]; // Second line contains the data
|
|
247
|
+
if (!dataLine) {
|
|
248
|
+
return {
|
|
249
|
+
check: 'disk',
|
|
250
|
+
passed: false,
|
|
251
|
+
error: 'Could not read disk space',
|
|
252
|
+
durationMs: 0,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
const parts = dataLine.split(/\s+/);
|
|
256
|
+
const availableKB = parseInt(parts[3], 10);
|
|
257
|
+
const availableBytes = availableKB * 1024;
|
|
258
|
+
if (availableBytes < minBytes) {
|
|
259
|
+
return {
|
|
260
|
+
check: 'disk',
|
|
261
|
+
passed: false,
|
|
262
|
+
error: `Insufficient disk space: ${this.formatBytes(availableBytes)} available, ${this.formatBytes(minBytes)} required`,
|
|
263
|
+
durationMs: 0,
|
|
264
|
+
metadata: { available: availableBytes, required: minBytes },
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
return {
|
|
268
|
+
check: 'disk',
|
|
269
|
+
passed: true,
|
|
270
|
+
durationMs: 0,
|
|
271
|
+
metadata: { available: availableBytes },
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
return {
|
|
276
|
+
check: 'disk',
|
|
277
|
+
passed: false,
|
|
278
|
+
error: error instanceof Error ? error.message : String(error),
|
|
279
|
+
durationMs: 0,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Check file permissions
|
|
285
|
+
*/
|
|
286
|
+
async checkPermissions(requiredPaths, writablePaths) {
|
|
287
|
+
const missing = [];
|
|
288
|
+
const notWritable = [];
|
|
289
|
+
// Check required paths exist
|
|
290
|
+
for (const path of requiredPaths) {
|
|
291
|
+
if (!existsSync(path)) {
|
|
292
|
+
missing.push(path);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Check writable paths
|
|
296
|
+
for (const path of writablePaths) {
|
|
297
|
+
try {
|
|
298
|
+
await access(path, constants.W_OK);
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
notWritable.push(path);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
if (missing.length > 0 || notWritable.length > 0) {
|
|
305
|
+
return {
|
|
306
|
+
check: 'permissions',
|
|
307
|
+
passed: false,
|
|
308
|
+
error: `Permission check failed: ${missing.length} missing, ${notWritable.length} not writable`,
|
|
309
|
+
durationMs: 0,
|
|
310
|
+
metadata: { missing, notWritable },
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
return {
|
|
314
|
+
check: 'permissions',
|
|
315
|
+
passed: true,
|
|
316
|
+
durationMs: 0,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Check network connectivity
|
|
321
|
+
*/
|
|
322
|
+
async checkNetwork() {
|
|
323
|
+
try {
|
|
324
|
+
// Simple DNS resolution check
|
|
325
|
+
const { stdout: _stdout } = await execAsync('ping -c 1 -W 1 8.8.8.8 || ping -n 1 -w 1000 8.8.8.8', {
|
|
326
|
+
encoding: 'utf-8',
|
|
327
|
+
});
|
|
328
|
+
return {
|
|
329
|
+
check: 'network',
|
|
330
|
+
passed: true,
|
|
331
|
+
durationMs: 0,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return {
|
|
336
|
+
check: 'network',
|
|
337
|
+
passed: false,
|
|
338
|
+
error: 'No network connectivity',
|
|
339
|
+
durationMs: 0,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Check Node.js version
|
|
345
|
+
*/
|
|
346
|
+
async checkNodeVersion(minVersion) {
|
|
347
|
+
if (!minVersion) {
|
|
348
|
+
return { check: 'node-version', passed: true, durationMs: 0 };
|
|
349
|
+
}
|
|
350
|
+
const currentVersion = process.version.replace('v', '');
|
|
351
|
+
const meetsRequirement = this.compareVersions(currentVersion, minVersion) >= 0;
|
|
352
|
+
if (!meetsRequirement) {
|
|
353
|
+
return {
|
|
354
|
+
check: 'node-version',
|
|
355
|
+
passed: false,
|
|
356
|
+
error: `Node.js version ${currentVersion} does not meet minimum requirement ${minVersion}`,
|
|
357
|
+
durationMs: 0,
|
|
358
|
+
metadata: { current: currentVersion, required: minVersion },
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
return {
|
|
362
|
+
check: 'node-version',
|
|
363
|
+
passed: true,
|
|
364
|
+
durationMs: 0,
|
|
365
|
+
metadata: { version: currentVersion },
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
// ===========================================================================
|
|
369
|
+
// Helper Methods
|
|
370
|
+
// ===========================================================================
|
|
371
|
+
/**
|
|
372
|
+
* Get suggested fixes for a failed check
|
|
373
|
+
*/
|
|
374
|
+
getSuggestedFixes(check, result) {
|
|
375
|
+
const fixes = [];
|
|
376
|
+
switch (check) {
|
|
377
|
+
case 'env':
|
|
378
|
+
if (result.metadata?.missing) {
|
|
379
|
+
const missing = result.metadata.missing;
|
|
380
|
+
fixes.push(`Set missing environment variables: ${missing.join(', ')}`);
|
|
381
|
+
fixes.push('Check .env.example for required variables');
|
|
382
|
+
}
|
|
383
|
+
break;
|
|
384
|
+
case 'dependencies':
|
|
385
|
+
fixes.push('Run: pnpm install');
|
|
386
|
+
break;
|
|
387
|
+
case 'database':
|
|
388
|
+
fixes.push('Set DATABASE_URL environment variable');
|
|
389
|
+
fixes.push('Ensure database server is running');
|
|
390
|
+
break;
|
|
391
|
+
case 'git':
|
|
392
|
+
if (result.metadata?.uncommittedChanges) {
|
|
393
|
+
fixes.push('Commit or stash uncommitted changes');
|
|
394
|
+
fixes.push('Run: git status to see changes');
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
fixes.push('Initialize git repository: git init');
|
|
398
|
+
}
|
|
399
|
+
break;
|
|
400
|
+
case 'disk':
|
|
401
|
+
fixes.push('Free up disk space');
|
|
402
|
+
fixes.push('Remove unnecessary files or node_modules');
|
|
403
|
+
break;
|
|
404
|
+
case 'permissions':
|
|
405
|
+
if (result.metadata?.missing) {
|
|
406
|
+
const missing = result.metadata.missing;
|
|
407
|
+
fixes.push(`Create missing paths: ${missing.join(', ')}`);
|
|
408
|
+
}
|
|
409
|
+
if (result.metadata?.notWritable) {
|
|
410
|
+
const notWritable = result.metadata.notWritable;
|
|
411
|
+
fixes.push(`Grant write permissions: chmod +w ${notWritable.join(' ')}`);
|
|
412
|
+
}
|
|
413
|
+
break;
|
|
414
|
+
case 'network':
|
|
415
|
+
fixes.push('Check internet connection');
|
|
416
|
+
fixes.push('Check firewall settings');
|
|
417
|
+
break;
|
|
418
|
+
case 'node-version':
|
|
419
|
+
if (result.metadata?.required) {
|
|
420
|
+
fixes.push(`Upgrade Node.js to version ${result.metadata.required} or higher`);
|
|
421
|
+
fixes.push('Use nvm: nvm install <version>');
|
|
422
|
+
}
|
|
423
|
+
break;
|
|
424
|
+
}
|
|
425
|
+
return fixes;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Format bytes to human-readable string
|
|
429
|
+
*/
|
|
430
|
+
formatBytes(bytes) {
|
|
431
|
+
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
432
|
+
let size = bytes;
|
|
433
|
+
let unitIndex = 0;
|
|
434
|
+
while (size >= 1024 && unitIndex < units.length - 1) {
|
|
435
|
+
size /= 1024;
|
|
436
|
+
unitIndex++;
|
|
437
|
+
}
|
|
438
|
+
return `${size.toFixed(2)} ${units[unitIndex]}`;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Compare semantic versions
|
|
442
|
+
*/
|
|
443
|
+
compareVersions(a, b) {
|
|
444
|
+
const aParts = a.split('.').map(Number);
|
|
445
|
+
const bParts = b.split('.').map(Number);
|
|
446
|
+
for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
|
|
447
|
+
const aPart = aParts[i] || 0;
|
|
448
|
+
const bPart = bParts[i] || 0;
|
|
449
|
+
if (aPart > bPart)
|
|
450
|
+
return 1;
|
|
451
|
+
if (aPart < bPart)
|
|
452
|
+
return -1;
|
|
453
|
+
}
|
|
454
|
+
return 0;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
// =============================================================================
|
|
458
|
+
// Factory Function
|
|
459
|
+
// =============================================================================
|
|
460
|
+
/**
|
|
461
|
+
* Create a pre-execution validator
|
|
462
|
+
*/
|
|
463
|
+
export function createPreExecutionValidator() {
|
|
464
|
+
return new PreExecutionValidator();
|
|
465
|
+
}
|
|
466
|
+
//# sourceMappingURL=pre-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pre-execution.js","sourceRoot":"","sources":["../../../../../../scripts/lib/validation/pre-execution.ts"],"names":[],"mappings":"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"}
|