@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.
Files changed (270) hide show
  1. package/.env.example +9 -0
  2. package/MCP_MAINTENANCE.md +265 -0
  3. package/README.md +260 -0
  4. package/__tests__/crdt.integration.test.ts +156 -0
  5. package/configs/README.md +77 -0
  6. package/configs/claude-template.json +54 -0
  7. package/dist/packages/core/src/database/ssl-config.d.ts +9 -0
  8. package/dist/packages/core/src/database/ssl-config.d.ts.map +1 -0
  9. package/dist/packages/core/src/database/ssl-config.js +8 -0
  10. package/dist/packages/core/src/database/ssl-config.js.map +1 -0
  11. package/dist/packages/core/src/features.d.ts +86 -0
  12. package/dist/packages/core/src/features.d.ts.map +1 -0
  13. package/dist/packages/core/src/features.js +93 -0
  14. package/dist/packages/core/src/features.js.map +1 -0
  15. package/dist/packages/core/src/license.d.ts +75 -0
  16. package/dist/packages/core/src/license.d.ts.map +1 -0
  17. package/dist/packages/core/src/license.js +174 -0
  18. package/dist/packages/core/src/license.js.map +1 -0
  19. package/dist/packages/core/src/monitoring/alerts.d.ts +118 -0
  20. package/dist/packages/core/src/monitoring/alerts.d.ts.map +1 -0
  21. package/dist/packages/core/src/monitoring/alerts.js +325 -0
  22. package/dist/packages/core/src/monitoring/alerts.js.map +1 -0
  23. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +71 -0
  24. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +1 -0
  25. package/dist/packages/core/src/monitoring/cleanup-manager.js +227 -0
  26. package/dist/packages/core/src/monitoring/cleanup-manager.js.map +1 -0
  27. package/dist/packages/core/src/monitoring/health-monitor.d.ts +22 -0
  28. package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +1 -0
  29. package/dist/packages/core/src/monitoring/health-monitor.js +143 -0
  30. package/dist/packages/core/src/monitoring/health-monitor.js.map +1 -0
  31. package/dist/packages/core/src/monitoring/index.d.ts +14 -0
  32. package/dist/packages/core/src/monitoring/index.d.ts.map +1 -0
  33. package/dist/packages/core/src/monitoring/index.js +18 -0
  34. package/dist/packages/core/src/monitoring/index.js.map +1 -0
  35. package/dist/packages/core/src/monitoring/process-registry.d.ts +97 -0
  36. package/dist/packages/core/src/monitoring/process-registry.d.ts.map +1 -0
  37. package/dist/packages/core/src/monitoring/process-registry.js +223 -0
  38. package/dist/packages/core/src/monitoring/process-registry.js.map +1 -0
  39. package/dist/packages/core/src/monitoring/types.d.ts +231 -0
  40. package/dist/packages/core/src/monitoring/types.d.ts.map +1 -0
  41. package/dist/packages/core/src/monitoring/types.js +43 -0
  42. package/dist/packages/core/src/monitoring/types.js.map +1 -0
  43. package/dist/packages/core/src/monitoring/zombie-detector.d.ts +81 -0
  44. package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +1 -0
  45. package/dist/packages/core/src/monitoring/zombie-detector.js +232 -0
  46. package/dist/packages/core/src/monitoring/zombie-detector.js.map +1 -0
  47. package/dist/packages/core/src/observability/logger.d.ts +47 -0
  48. package/dist/packages/core/src/observability/logger.d.ts.map +1 -0
  49. package/dist/packages/core/src/observability/logger.js +141 -0
  50. package/dist/packages/core/src/observability/logger.js.map +1 -0
  51. package/dist/packages/core/src/utils/logger-server.d.ts +32 -0
  52. package/dist/packages/core/src/utils/logger-server.d.ts.map +1 -0
  53. package/dist/packages/core/src/utils/logger-server.js +69 -0
  54. package/dist/packages/core/src/utils/logger-server.js.map +1 -0
  55. package/dist/packages/core/src/utils/request-context.d.ts +143 -0
  56. package/dist/packages/core/src/utils/request-context.d.ts.map +1 -0
  57. package/dist/packages/core/src/utils/request-context.js +169 -0
  58. package/dist/packages/core/src/utils/request-context.js.map +1 -0
  59. package/dist/packages/dev/src/code-validator/index.d.ts +20 -0
  60. package/dist/packages/dev/src/code-validator/index.d.ts.map +1 -0
  61. package/dist/packages/dev/src/code-validator/index.js +20 -0
  62. package/dist/packages/dev/src/code-validator/index.js.map +1 -0
  63. package/dist/packages/dev/src/code-validator/types.d.ts +67 -0
  64. package/dist/packages/dev/src/code-validator/types.d.ts.map +1 -0
  65. package/dist/packages/dev/src/code-validator/types.js +7 -0
  66. package/dist/packages/dev/src/code-validator/types.js.map +1 -0
  67. package/dist/packages/dev/src/code-validator/validator.d.ts +48 -0
  68. package/dist/packages/dev/src/code-validator/validator.d.ts.map +1 -0
  69. package/dist/packages/dev/src/code-validator/validator.js +176 -0
  70. package/dist/packages/dev/src/code-validator/validator.js.map +1 -0
  71. package/dist/packages/mcp/src/adapters/db.d.ts +46 -0
  72. package/dist/packages/mcp/src/adapters/db.d.ts.map +1 -0
  73. package/dist/packages/mcp/src/adapters/db.js +127 -0
  74. package/dist/packages/mcp/src/adapters/db.js.map +1 -0
  75. package/dist/packages/mcp/src/config/index.d.ts +11 -0
  76. package/dist/packages/mcp/src/config/index.d.ts.map +1 -0
  77. package/dist/packages/mcp/src/config/index.js +18 -0
  78. package/dist/packages/mcp/src/config/index.js.map +1 -0
  79. package/dist/packages/mcp/src/contracts.d.ts +131 -0
  80. package/dist/packages/mcp/src/contracts.d.ts.map +1 -0
  81. package/dist/packages/mcp/src/contracts.js +153 -0
  82. package/dist/packages/mcp/src/contracts.js.map +1 -0
  83. package/dist/packages/mcp/src/hypervisor.d.ts +132 -0
  84. package/dist/packages/mcp/src/hypervisor.d.ts.map +1 -0
  85. package/dist/packages/mcp/src/hypervisor.js +359 -0
  86. package/dist/packages/mcp/src/hypervisor.js.map +1 -0
  87. package/dist/packages/mcp/src/index.d.ts +25 -0
  88. package/dist/packages/mcp/src/index.d.ts.map +1 -0
  89. package/dist/packages/mcp/src/index.js +41 -0
  90. package/dist/packages/mcp/src/index.js.map +1 -0
  91. package/dist/packages/mcp/src/servers/adapter.d.ts +199 -0
  92. package/dist/packages/mcp/src/servers/adapter.d.ts.map +1 -0
  93. package/dist/packages/mcp/src/servers/adapter.js +487 -0
  94. package/dist/packages/mcp/src/servers/adapter.js.map +1 -0
  95. package/dist/packages/mcp/src/servers/code-validator.d.ts +24 -0
  96. package/dist/packages/mcp/src/servers/code-validator.d.ts.map +1 -0
  97. package/dist/packages/mcp/src/servers/code-validator.js +156 -0
  98. package/dist/packages/mcp/src/servers/code-validator.js.map +1 -0
  99. package/dist/packages/mcp/src/servers/neon.d.ts +11 -0
  100. package/dist/packages/mcp/src/servers/neon.d.ts.map +1 -0
  101. package/dist/packages/mcp/src/servers/neon.js +90 -0
  102. package/dist/packages/mcp/src/servers/neon.js.map +1 -0
  103. package/dist/packages/mcp/src/servers/next-devtools.d.ts +11 -0
  104. package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +1 -0
  105. package/dist/packages/mcp/src/servers/next-devtools.js +215 -0
  106. package/dist/packages/mcp/src/servers/next-devtools.js.map +1 -0
  107. package/dist/packages/mcp/src/servers/playwright.d.ts +11 -0
  108. package/dist/packages/mcp/src/servers/playwright.d.ts.map +1 -0
  109. package/dist/packages/mcp/src/servers/playwright.js +68 -0
  110. package/dist/packages/mcp/src/servers/playwright.js.map +1 -0
  111. package/dist/packages/mcp/src/servers/stripe.d.ts +11 -0
  112. package/dist/packages/mcp/src/servers/stripe.d.ts.map +1 -0
  113. package/dist/packages/mcp/src/servers/stripe.js +86 -0
  114. package/dist/packages/mcp/src/servers/stripe.js.map +1 -0
  115. package/dist/packages/mcp/src/servers/supabase.d.ts +11 -0
  116. package/dist/packages/mcp/src/servers/supabase.d.ts.map +1 -0
  117. package/dist/packages/mcp/src/servers/supabase.js +144 -0
  118. package/dist/packages/mcp/src/servers/supabase.js.map +1 -0
  119. package/dist/packages/mcp/src/servers/vercel.d.ts +11 -0
  120. package/dist/packages/mcp/src/servers/vercel.d.ts.map +1 -0
  121. package/dist/packages/mcp/src/servers/vercel.js +87 -0
  122. package/dist/packages/mcp/src/servers/vercel.js.map +1 -0
  123. package/dist/packages/mcp/src/servers/vultr-test.d.ts +3 -0
  124. package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +1 -0
  125. package/dist/packages/mcp/src/servers/vultr-test.js +82 -0
  126. package/dist/packages/mcp/src/servers/vultr-test.js.map +1 -0
  127. package/dist/scripts/lib/analyzers/console-analyzer.d.ts +188 -0
  128. package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +1 -0
  129. package/dist/scripts/lib/analyzers/console-analyzer.js +432 -0
  130. package/dist/scripts/lib/analyzers/console-analyzer.js.map +1 -0
  131. package/dist/scripts/lib/analyzers/index.d.ts +11 -0
  132. package/dist/scripts/lib/analyzers/index.d.ts.map +1 -0
  133. package/dist/scripts/lib/analyzers/index.js +11 -0
  134. package/dist/scripts/lib/analyzers/index.js.map +1 -0
  135. package/dist/scripts/lib/args.d.ts +104 -0
  136. package/dist/scripts/lib/args.d.ts.map +1 -0
  137. package/dist/scripts/lib/args.js +304 -0
  138. package/dist/scripts/lib/args.js.map +1 -0
  139. package/dist/scripts/lib/cache.d.ts +185 -0
  140. package/dist/scripts/lib/cache.d.ts.map +1 -0
  141. package/dist/scripts/lib/cache.js +390 -0
  142. package/dist/scripts/lib/cache.js.map +1 -0
  143. package/dist/scripts/lib/cli/dispatch.d.ts +116 -0
  144. package/dist/scripts/lib/cli/dispatch.d.ts.map +1 -0
  145. package/dist/scripts/lib/cli/dispatch.js +206 -0
  146. package/dist/scripts/lib/cli/dispatch.js.map +1 -0
  147. package/dist/scripts/lib/cli/index.d.ts +10 -0
  148. package/dist/scripts/lib/cli/index.d.ts.map +1 -0
  149. package/dist/scripts/lib/cli/index.js +10 -0
  150. package/dist/scripts/lib/cli/index.js.map +1 -0
  151. package/dist/scripts/lib/database/ssl-config.d.ts +26 -0
  152. package/dist/scripts/lib/database/ssl-config.d.ts.map +1 -0
  153. package/dist/scripts/lib/database/ssl-config.js +47 -0
  154. package/dist/scripts/lib/database/ssl-config.js.map +1 -0
  155. package/dist/scripts/lib/errors.d.ts +218 -0
  156. package/dist/scripts/lib/errors.d.ts.map +1 -0
  157. package/dist/scripts/lib/errors.js +543 -0
  158. package/dist/scripts/lib/errors.js.map +1 -0
  159. package/dist/scripts/lib/exec.d.ts +107 -0
  160. package/dist/scripts/lib/exec.d.ts.map +1 -0
  161. package/dist/scripts/lib/exec.js +232 -0
  162. package/dist/scripts/lib/exec.js.map +1 -0
  163. package/dist/scripts/lib/index.d.ts +50 -0
  164. package/dist/scripts/lib/index.d.ts.map +1 -0
  165. package/dist/scripts/lib/index.js +65 -0
  166. package/dist/scripts/lib/index.js.map +1 -0
  167. package/dist/scripts/lib/logger.d.ts +50 -0
  168. package/dist/scripts/lib/logger.d.ts.map +1 -0
  169. package/dist/scripts/lib/logger.js +159 -0
  170. package/dist/scripts/lib/logger.js.map +1 -0
  171. package/dist/scripts/lib/output.d.ts +149 -0
  172. package/dist/scripts/lib/output.d.ts.map +1 -0
  173. package/dist/scripts/lib/output.js +263 -0
  174. package/dist/scripts/lib/output.js.map +1 -0
  175. package/dist/scripts/lib/parallel.d.ts +164 -0
  176. package/dist/scripts/lib/parallel.d.ts.map +1 -0
  177. package/dist/scripts/lib/parallel.js +355 -0
  178. package/dist/scripts/lib/parallel.js.map +1 -0
  179. package/dist/scripts/lib/paths.d.ts +92 -0
  180. package/dist/scripts/lib/paths.d.ts.map +1 -0
  181. package/dist/scripts/lib/paths.js +171 -0
  182. package/dist/scripts/lib/paths.js.map +1 -0
  183. package/dist/scripts/lib/state/adapters/memory.d.ts +42 -0
  184. package/dist/scripts/lib/state/adapters/memory.d.ts.map +1 -0
  185. package/dist/scripts/lib/state/adapters/memory.js +110 -0
  186. package/dist/scripts/lib/state/adapters/memory.js.map +1 -0
  187. package/dist/scripts/lib/state/adapters/pglite.d.ts +46 -0
  188. package/dist/scripts/lib/state/adapters/pglite.d.ts.map +1 -0
  189. package/dist/scripts/lib/state/adapters/pglite.js +256 -0
  190. package/dist/scripts/lib/state/adapters/pglite.js.map +1 -0
  191. package/dist/scripts/lib/state/index.d.ts +16 -0
  192. package/dist/scripts/lib/state/index.d.ts.map +1 -0
  193. package/dist/scripts/lib/state/index.js +16 -0
  194. package/dist/scripts/lib/state/index.js.map +1 -0
  195. package/dist/scripts/lib/state/types.d.ts +111 -0
  196. package/dist/scripts/lib/state/types.d.ts.map +1 -0
  197. package/dist/scripts/lib/state/types.js +8 -0
  198. package/dist/scripts/lib/state/types.js.map +1 -0
  199. package/dist/scripts/lib/state/workflow-state.d.ts +110 -0
  200. package/dist/scripts/lib/state/workflow-state.d.ts.map +1 -0
  201. package/dist/scripts/lib/state/workflow-state.js +331 -0
  202. package/dist/scripts/lib/state/workflow-state.js.map +1 -0
  203. package/dist/scripts/lib/telemetry.d.ts +194 -0
  204. package/dist/scripts/lib/telemetry.d.ts.map +1 -0
  205. package/dist/scripts/lib/telemetry.js +394 -0
  206. package/dist/scripts/lib/telemetry.js.map +1 -0
  207. package/dist/scripts/lib/utils.d.ts +270 -0
  208. package/dist/scripts/lib/utils.d.ts.map +1 -0
  209. package/dist/scripts/lib/utils.js +473 -0
  210. package/dist/scripts/lib/utils.js.map +1 -0
  211. package/dist/scripts/lib/validation/database.d.ts +83 -0
  212. package/dist/scripts/lib/validation/database.d.ts.map +1 -0
  213. package/dist/scripts/lib/validation/database.js +199 -0
  214. package/dist/scripts/lib/validation/database.js.map +1 -0
  215. package/dist/scripts/lib/validation/env.d.ts +80 -0
  216. package/dist/scripts/lib/validation/env.d.ts.map +1 -0
  217. package/dist/scripts/lib/validation/env.js +246 -0
  218. package/dist/scripts/lib/validation/env.js.map +1 -0
  219. package/dist/scripts/lib/validation/index.d.ts +16 -0
  220. package/dist/scripts/lib/validation/index.d.ts.map +1 -0
  221. package/dist/scripts/lib/validation/index.js +16 -0
  222. package/dist/scripts/lib/validation/index.js.map +1 -0
  223. package/dist/scripts/lib/validation/post-execution.d.ts +74 -0
  224. package/dist/scripts/lib/validation/post-execution.d.ts.map +1 -0
  225. package/dist/scripts/lib/validation/post-execution.js +110 -0
  226. package/dist/scripts/lib/validation/post-execution.js.map +1 -0
  227. package/dist/scripts/lib/validation/pre-execution.d.ts +165 -0
  228. package/dist/scripts/lib/validation/pre-execution.d.ts.map +1 -0
  229. package/dist/scripts/lib/validation/pre-execution.js +466 -0
  230. package/dist/scripts/lib/validation/pre-execution.js.map +1 -0
  231. package/dist/scripts/lib/validators/documentation-validator.d.ts +242 -0
  232. package/dist/scripts/lib/validators/documentation-validator.d.ts.map +1 -0
  233. package/dist/scripts/lib/validators/documentation-validator.js +584 -0
  234. package/dist/scripts/lib/validators/documentation-validator.js.map +1 -0
  235. package/dist/scripts/lib/validators/index.d.ts +11 -0
  236. package/dist/scripts/lib/validators/index.d.ts.map +1 -0
  237. package/dist/scripts/lib/validators/index.js +11 -0
  238. package/dist/scripts/lib/validators/index.js.map +1 -0
  239. package/docker-compose.yml +46 -0
  240. package/docs/INDEX.md +88 -0
  241. package/docs/README.md +774 -0
  242. package/docs/SETUP.md +264 -0
  243. package/docs/servers/code-validator.md +586 -0
  244. package/eslint.config.js +7 -0
  245. package/migrations/0001_add_crdt_columns.sql +8 -0
  246. package/migrations/0001_rollback.sql +6 -0
  247. package/migrations/005_performance_indexes.sql +190 -0
  248. package/migrations/backfill_crdt_meta.js +45 -0
  249. package/package.json +21 -85
  250. package/src/__tests__/hypervisor.test.ts +212 -0
  251. package/src/adapters/db.ts +180 -0
  252. package/src/config/config.json +49 -0
  253. package/src/config/index.ts +30 -0
  254. package/src/contracts.ts +221 -0
  255. package/src/hypervisor.ts +464 -0
  256. package/src/index.ts +87 -0
  257. package/src/servers/adapter.ts +643 -0
  258. package/src/servers/code-validator.ts +188 -0
  259. package/src/servers/neon.ts +103 -0
  260. package/src/servers/next-devtools.ts +230 -0
  261. package/src/servers/playwright.ts +77 -0
  262. package/src/servers/stripe.ts +99 -0
  263. package/src/servers/supabase.ts +161 -0
  264. package/src/servers/vercel.ts +100 -0
  265. package/src/servers/vultr-test.ts +97 -0
  266. package/tsconfig.json +12 -0
  267. package/vitest.config.ts +22 -0
  268. package/LICENSE +0 -202
  269. package/dist/index.js +0 -10990
  270. 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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"}