@revealui/mcp 0.1.0 → 0.1.3

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 (293) hide show
  1. package/LICENSE +22 -0
  2. package/LICENSE.commercial +111 -0
  3. package/README.md +3 -0
  4. package/dist/{packages/mcp/src/adapters → adapters}/db.d.ts +1 -1
  5. package/dist/adapters/db.d.ts.map +1 -0
  6. package/dist/adapters/db.js.map +1 -0
  7. package/dist/config/index.d.ts.map +1 -0
  8. package/dist/config/index.js.map +1 -0
  9. package/dist/contracts.d.ts.map +1 -0
  10. package/dist/contracts.js.map +1 -0
  11. package/dist/{packages/mcp/src/hypervisor.d.ts → hypervisor.d.ts} +56 -0
  12. package/dist/hypervisor.d.ts.map +1 -0
  13. package/dist/{packages/mcp/src/hypervisor.js → hypervisor.js} +209 -1
  14. package/dist/hypervisor.js.map +1 -0
  15. package/dist/{packages/mcp/src/index.d.ts → index.d.ts} +9 -5
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/{packages/mcp/src/index.js → index.js} +8 -4
  18. package/dist/index.js.map +1 -0
  19. package/dist/{packages/mcp/src/servers → servers}/adapter.d.ts +11 -1
  20. package/dist/servers/adapter.d.ts.map +1 -0
  21. package/dist/{packages/mcp/src/servers → servers}/adapter.js +20 -4
  22. package/dist/servers/adapter.js.map +1 -0
  23. package/dist/servers/revealui-content.d.ts +21 -0
  24. package/dist/servers/revealui-content.d.ts.map +1 -0
  25. package/dist/servers/revealui-content.js +211 -0
  26. package/dist/servers/revealui-content.js.map +1 -0
  27. package/dist/servers/revealui-email.d.ts +18 -0
  28. package/dist/servers/revealui-email.d.ts.map +1 -0
  29. package/dist/servers/revealui-email.js +190 -0
  30. package/dist/servers/revealui-email.js.map +1 -0
  31. package/dist/servers/revealui-stripe.d.ts +19 -0
  32. package/dist/servers/revealui-stripe.d.ts.map +1 -0
  33. package/dist/servers/revealui-stripe.js +228 -0
  34. package/dist/servers/revealui-stripe.js.map +1 -0
  35. package/package.json +50 -11
  36. package/.env.example +0 -9
  37. package/MCP_MAINTENANCE.md +0 -265
  38. package/__tests__/crdt.integration.test.ts +0 -156
  39. package/configs/README.md +0 -77
  40. package/configs/claude-template.json +0 -54
  41. package/dist/packages/core/src/database/ssl-config.d.ts +0 -9
  42. package/dist/packages/core/src/database/ssl-config.d.ts.map +0 -1
  43. package/dist/packages/core/src/database/ssl-config.js +0 -8
  44. package/dist/packages/core/src/database/ssl-config.js.map +0 -1
  45. package/dist/packages/core/src/features.d.ts +0 -86
  46. package/dist/packages/core/src/features.d.ts.map +0 -1
  47. package/dist/packages/core/src/features.js +0 -93
  48. package/dist/packages/core/src/features.js.map +0 -1
  49. package/dist/packages/core/src/license.d.ts +0 -75
  50. package/dist/packages/core/src/license.d.ts.map +0 -1
  51. package/dist/packages/core/src/license.js +0 -174
  52. package/dist/packages/core/src/license.js.map +0 -1
  53. package/dist/packages/core/src/monitoring/alerts.d.ts +0 -118
  54. package/dist/packages/core/src/monitoring/alerts.d.ts.map +0 -1
  55. package/dist/packages/core/src/monitoring/alerts.js +0 -325
  56. package/dist/packages/core/src/monitoring/alerts.js.map +0 -1
  57. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +0 -71
  58. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +0 -1
  59. package/dist/packages/core/src/monitoring/cleanup-manager.js +0 -227
  60. package/dist/packages/core/src/monitoring/cleanup-manager.js.map +0 -1
  61. package/dist/packages/core/src/monitoring/health-monitor.d.ts +0 -22
  62. package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +0 -1
  63. package/dist/packages/core/src/monitoring/health-monitor.js +0 -143
  64. package/dist/packages/core/src/monitoring/health-monitor.js.map +0 -1
  65. package/dist/packages/core/src/monitoring/index.d.ts +0 -14
  66. package/dist/packages/core/src/monitoring/index.d.ts.map +0 -1
  67. package/dist/packages/core/src/monitoring/index.js +0 -18
  68. package/dist/packages/core/src/monitoring/index.js.map +0 -1
  69. package/dist/packages/core/src/monitoring/process-registry.d.ts +0 -97
  70. package/dist/packages/core/src/monitoring/process-registry.d.ts.map +0 -1
  71. package/dist/packages/core/src/monitoring/process-registry.js +0 -223
  72. package/dist/packages/core/src/monitoring/process-registry.js.map +0 -1
  73. package/dist/packages/core/src/monitoring/types.d.ts +0 -231
  74. package/dist/packages/core/src/monitoring/types.d.ts.map +0 -1
  75. package/dist/packages/core/src/monitoring/types.js +0 -43
  76. package/dist/packages/core/src/monitoring/types.js.map +0 -1
  77. package/dist/packages/core/src/monitoring/zombie-detector.d.ts +0 -81
  78. package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +0 -1
  79. package/dist/packages/core/src/monitoring/zombie-detector.js +0 -232
  80. package/dist/packages/core/src/monitoring/zombie-detector.js.map +0 -1
  81. package/dist/packages/core/src/observability/logger.d.ts +0 -47
  82. package/dist/packages/core/src/observability/logger.d.ts.map +0 -1
  83. package/dist/packages/core/src/observability/logger.js +0 -141
  84. package/dist/packages/core/src/observability/logger.js.map +0 -1
  85. package/dist/packages/core/src/utils/logger-server.d.ts +0 -32
  86. package/dist/packages/core/src/utils/logger-server.d.ts.map +0 -1
  87. package/dist/packages/core/src/utils/logger-server.js +0 -69
  88. package/dist/packages/core/src/utils/logger-server.js.map +0 -1
  89. package/dist/packages/core/src/utils/request-context.d.ts +0 -143
  90. package/dist/packages/core/src/utils/request-context.d.ts.map +0 -1
  91. package/dist/packages/core/src/utils/request-context.js +0 -169
  92. package/dist/packages/core/src/utils/request-context.js.map +0 -1
  93. package/dist/packages/dev/src/code-validator/index.d.ts +0 -20
  94. package/dist/packages/dev/src/code-validator/index.d.ts.map +0 -1
  95. package/dist/packages/dev/src/code-validator/index.js +0 -20
  96. package/dist/packages/dev/src/code-validator/index.js.map +0 -1
  97. package/dist/packages/dev/src/code-validator/types.d.ts +0 -67
  98. package/dist/packages/dev/src/code-validator/types.d.ts.map +0 -1
  99. package/dist/packages/dev/src/code-validator/types.js +0 -7
  100. package/dist/packages/dev/src/code-validator/types.js.map +0 -1
  101. package/dist/packages/dev/src/code-validator/validator.d.ts +0 -48
  102. package/dist/packages/dev/src/code-validator/validator.d.ts.map +0 -1
  103. package/dist/packages/dev/src/code-validator/validator.js +0 -176
  104. package/dist/packages/dev/src/code-validator/validator.js.map +0 -1
  105. package/dist/packages/mcp/src/adapters/db.d.ts.map +0 -1
  106. package/dist/packages/mcp/src/adapters/db.js.map +0 -1
  107. package/dist/packages/mcp/src/config/index.d.ts.map +0 -1
  108. package/dist/packages/mcp/src/config/index.js.map +0 -1
  109. package/dist/packages/mcp/src/contracts.d.ts.map +0 -1
  110. package/dist/packages/mcp/src/contracts.js.map +0 -1
  111. package/dist/packages/mcp/src/hypervisor.d.ts.map +0 -1
  112. package/dist/packages/mcp/src/hypervisor.js.map +0 -1
  113. package/dist/packages/mcp/src/index.d.ts.map +0 -1
  114. package/dist/packages/mcp/src/index.js.map +0 -1
  115. package/dist/packages/mcp/src/servers/adapter.d.ts.map +0 -1
  116. package/dist/packages/mcp/src/servers/adapter.js.map +0 -1
  117. package/dist/packages/mcp/src/servers/code-validator.d.ts +0 -24
  118. package/dist/packages/mcp/src/servers/code-validator.d.ts.map +0 -1
  119. package/dist/packages/mcp/src/servers/code-validator.js +0 -156
  120. package/dist/packages/mcp/src/servers/code-validator.js.map +0 -1
  121. package/dist/packages/mcp/src/servers/neon.d.ts +0 -11
  122. package/dist/packages/mcp/src/servers/neon.d.ts.map +0 -1
  123. package/dist/packages/mcp/src/servers/neon.js +0 -90
  124. package/dist/packages/mcp/src/servers/neon.js.map +0 -1
  125. package/dist/packages/mcp/src/servers/next-devtools.d.ts +0 -11
  126. package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +0 -1
  127. package/dist/packages/mcp/src/servers/next-devtools.js +0 -215
  128. package/dist/packages/mcp/src/servers/next-devtools.js.map +0 -1
  129. package/dist/packages/mcp/src/servers/playwright.d.ts +0 -11
  130. package/dist/packages/mcp/src/servers/playwright.d.ts.map +0 -1
  131. package/dist/packages/mcp/src/servers/playwright.js +0 -68
  132. package/dist/packages/mcp/src/servers/playwright.js.map +0 -1
  133. package/dist/packages/mcp/src/servers/stripe.d.ts +0 -11
  134. package/dist/packages/mcp/src/servers/stripe.d.ts.map +0 -1
  135. package/dist/packages/mcp/src/servers/stripe.js +0 -86
  136. package/dist/packages/mcp/src/servers/stripe.js.map +0 -1
  137. package/dist/packages/mcp/src/servers/supabase.d.ts +0 -11
  138. package/dist/packages/mcp/src/servers/supabase.d.ts.map +0 -1
  139. package/dist/packages/mcp/src/servers/supabase.js +0 -144
  140. package/dist/packages/mcp/src/servers/supabase.js.map +0 -1
  141. package/dist/packages/mcp/src/servers/vercel.d.ts +0 -11
  142. package/dist/packages/mcp/src/servers/vercel.d.ts.map +0 -1
  143. package/dist/packages/mcp/src/servers/vercel.js +0 -87
  144. package/dist/packages/mcp/src/servers/vercel.js.map +0 -1
  145. package/dist/packages/mcp/src/servers/vultr-test.d.ts +0 -3
  146. package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +0 -1
  147. package/dist/packages/mcp/src/servers/vultr-test.js +0 -82
  148. package/dist/packages/mcp/src/servers/vultr-test.js.map +0 -1
  149. package/dist/scripts/lib/analyzers/console-analyzer.d.ts +0 -188
  150. package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +0 -1
  151. package/dist/scripts/lib/analyzers/console-analyzer.js +0 -432
  152. package/dist/scripts/lib/analyzers/console-analyzer.js.map +0 -1
  153. package/dist/scripts/lib/analyzers/index.d.ts +0 -11
  154. package/dist/scripts/lib/analyzers/index.d.ts.map +0 -1
  155. package/dist/scripts/lib/analyzers/index.js +0 -11
  156. package/dist/scripts/lib/analyzers/index.js.map +0 -1
  157. package/dist/scripts/lib/args.d.ts +0 -104
  158. package/dist/scripts/lib/args.d.ts.map +0 -1
  159. package/dist/scripts/lib/args.js +0 -304
  160. package/dist/scripts/lib/args.js.map +0 -1
  161. package/dist/scripts/lib/cache.d.ts +0 -185
  162. package/dist/scripts/lib/cache.d.ts.map +0 -1
  163. package/dist/scripts/lib/cache.js +0 -390
  164. package/dist/scripts/lib/cache.js.map +0 -1
  165. package/dist/scripts/lib/cli/dispatch.d.ts +0 -116
  166. package/dist/scripts/lib/cli/dispatch.d.ts.map +0 -1
  167. package/dist/scripts/lib/cli/dispatch.js +0 -206
  168. package/dist/scripts/lib/cli/dispatch.js.map +0 -1
  169. package/dist/scripts/lib/cli/index.d.ts +0 -10
  170. package/dist/scripts/lib/cli/index.d.ts.map +0 -1
  171. package/dist/scripts/lib/cli/index.js +0 -10
  172. package/dist/scripts/lib/cli/index.js.map +0 -1
  173. package/dist/scripts/lib/database/ssl-config.d.ts +0 -26
  174. package/dist/scripts/lib/database/ssl-config.d.ts.map +0 -1
  175. package/dist/scripts/lib/database/ssl-config.js +0 -47
  176. package/dist/scripts/lib/database/ssl-config.js.map +0 -1
  177. package/dist/scripts/lib/errors.d.ts +0 -218
  178. package/dist/scripts/lib/errors.d.ts.map +0 -1
  179. package/dist/scripts/lib/errors.js +0 -543
  180. package/dist/scripts/lib/errors.js.map +0 -1
  181. package/dist/scripts/lib/exec.d.ts +0 -107
  182. package/dist/scripts/lib/exec.d.ts.map +0 -1
  183. package/dist/scripts/lib/exec.js +0 -232
  184. package/dist/scripts/lib/exec.js.map +0 -1
  185. package/dist/scripts/lib/index.d.ts +0 -50
  186. package/dist/scripts/lib/index.d.ts.map +0 -1
  187. package/dist/scripts/lib/index.js +0 -65
  188. package/dist/scripts/lib/index.js.map +0 -1
  189. package/dist/scripts/lib/logger.d.ts +0 -50
  190. package/dist/scripts/lib/logger.d.ts.map +0 -1
  191. package/dist/scripts/lib/logger.js +0 -159
  192. package/dist/scripts/lib/logger.js.map +0 -1
  193. package/dist/scripts/lib/output.d.ts +0 -149
  194. package/dist/scripts/lib/output.d.ts.map +0 -1
  195. package/dist/scripts/lib/output.js +0 -263
  196. package/dist/scripts/lib/output.js.map +0 -1
  197. package/dist/scripts/lib/parallel.d.ts +0 -164
  198. package/dist/scripts/lib/parallel.d.ts.map +0 -1
  199. package/dist/scripts/lib/parallel.js +0 -355
  200. package/dist/scripts/lib/parallel.js.map +0 -1
  201. package/dist/scripts/lib/paths.d.ts +0 -92
  202. package/dist/scripts/lib/paths.d.ts.map +0 -1
  203. package/dist/scripts/lib/paths.js +0 -171
  204. package/dist/scripts/lib/paths.js.map +0 -1
  205. package/dist/scripts/lib/state/adapters/memory.d.ts +0 -42
  206. package/dist/scripts/lib/state/adapters/memory.d.ts.map +0 -1
  207. package/dist/scripts/lib/state/adapters/memory.js +0 -110
  208. package/dist/scripts/lib/state/adapters/memory.js.map +0 -1
  209. package/dist/scripts/lib/state/adapters/pglite.d.ts +0 -46
  210. package/dist/scripts/lib/state/adapters/pglite.d.ts.map +0 -1
  211. package/dist/scripts/lib/state/adapters/pglite.js +0 -256
  212. package/dist/scripts/lib/state/adapters/pglite.js.map +0 -1
  213. package/dist/scripts/lib/state/index.d.ts +0 -16
  214. package/dist/scripts/lib/state/index.d.ts.map +0 -1
  215. package/dist/scripts/lib/state/index.js +0 -16
  216. package/dist/scripts/lib/state/index.js.map +0 -1
  217. package/dist/scripts/lib/state/types.d.ts +0 -111
  218. package/dist/scripts/lib/state/types.d.ts.map +0 -1
  219. package/dist/scripts/lib/state/types.js +0 -8
  220. package/dist/scripts/lib/state/types.js.map +0 -1
  221. package/dist/scripts/lib/state/workflow-state.d.ts +0 -110
  222. package/dist/scripts/lib/state/workflow-state.d.ts.map +0 -1
  223. package/dist/scripts/lib/state/workflow-state.js +0 -331
  224. package/dist/scripts/lib/state/workflow-state.js.map +0 -1
  225. package/dist/scripts/lib/telemetry.d.ts +0 -194
  226. package/dist/scripts/lib/telemetry.d.ts.map +0 -1
  227. package/dist/scripts/lib/telemetry.js +0 -394
  228. package/dist/scripts/lib/telemetry.js.map +0 -1
  229. package/dist/scripts/lib/utils.d.ts +0 -270
  230. package/dist/scripts/lib/utils.d.ts.map +0 -1
  231. package/dist/scripts/lib/utils.js +0 -473
  232. package/dist/scripts/lib/utils.js.map +0 -1
  233. package/dist/scripts/lib/validation/database.d.ts +0 -83
  234. package/dist/scripts/lib/validation/database.d.ts.map +0 -1
  235. package/dist/scripts/lib/validation/database.js +0 -199
  236. package/dist/scripts/lib/validation/database.js.map +0 -1
  237. package/dist/scripts/lib/validation/env.d.ts +0 -80
  238. package/dist/scripts/lib/validation/env.d.ts.map +0 -1
  239. package/dist/scripts/lib/validation/env.js +0 -246
  240. package/dist/scripts/lib/validation/env.js.map +0 -1
  241. package/dist/scripts/lib/validation/index.d.ts +0 -16
  242. package/dist/scripts/lib/validation/index.d.ts.map +0 -1
  243. package/dist/scripts/lib/validation/index.js +0 -16
  244. package/dist/scripts/lib/validation/index.js.map +0 -1
  245. package/dist/scripts/lib/validation/post-execution.d.ts +0 -74
  246. package/dist/scripts/lib/validation/post-execution.d.ts.map +0 -1
  247. package/dist/scripts/lib/validation/post-execution.js +0 -110
  248. package/dist/scripts/lib/validation/post-execution.js.map +0 -1
  249. package/dist/scripts/lib/validation/pre-execution.d.ts +0 -165
  250. package/dist/scripts/lib/validation/pre-execution.d.ts.map +0 -1
  251. package/dist/scripts/lib/validation/pre-execution.js +0 -466
  252. package/dist/scripts/lib/validation/pre-execution.js.map +0 -1
  253. package/dist/scripts/lib/validators/documentation-validator.d.ts +0 -242
  254. package/dist/scripts/lib/validators/documentation-validator.d.ts.map +0 -1
  255. package/dist/scripts/lib/validators/documentation-validator.js +0 -584
  256. package/dist/scripts/lib/validators/documentation-validator.js.map +0 -1
  257. package/dist/scripts/lib/validators/index.d.ts +0 -11
  258. package/dist/scripts/lib/validators/index.d.ts.map +0 -1
  259. package/dist/scripts/lib/validators/index.js +0 -11
  260. package/dist/scripts/lib/validators/index.js.map +0 -1
  261. package/docker-compose.yml +0 -46
  262. package/docs/INDEX.md +0 -88
  263. package/docs/README.md +0 -774
  264. package/docs/SETUP.md +0 -264
  265. package/docs/servers/code-validator.md +0 -586
  266. package/eslint.config.js +0 -7
  267. package/migrations/0001_add_crdt_columns.sql +0 -8
  268. package/migrations/0001_rollback.sql +0 -6
  269. package/migrations/005_performance_indexes.sql +0 -190
  270. package/migrations/backfill_crdt_meta.js +0 -45
  271. package/src/__tests__/hypervisor.test.ts +0 -212
  272. package/src/adapters/db.ts +0 -180
  273. package/src/config/config.json +0 -49
  274. package/src/config/index.ts +0 -30
  275. package/src/contracts.ts +0 -221
  276. package/src/hypervisor.ts +0 -464
  277. package/src/index.ts +0 -87
  278. package/src/servers/adapter.ts +0 -643
  279. package/src/servers/code-validator.ts +0 -188
  280. package/src/servers/neon.ts +0 -103
  281. package/src/servers/next-devtools.ts +0 -230
  282. package/src/servers/playwright.ts +0 -77
  283. package/src/servers/stripe.ts +0 -99
  284. package/src/servers/supabase.ts +0 -161
  285. package/src/servers/vercel.ts +0 -100
  286. package/src/servers/vultr-test.ts +0 -97
  287. package/tsconfig.json +0 -12
  288. package/vitest.config.ts +0 -22
  289. /package/dist/{packages/mcp/src/adapters → adapters}/db.js +0 -0
  290. /package/dist/{packages/mcp/src/config → config}/index.d.ts +0 -0
  291. /package/dist/{packages/mcp/src/config → config}/index.js +0 -0
  292. /package/dist/{packages/mcp/src/contracts.d.ts → contracts.d.ts} +0 -0
  293. /package/dist/{packages/mcp/src/contracts.js → contracts.js} +0 -0
@@ -1,473 +0,0 @@
1
- /**
2
- * Miscellaneous Utility Functions
3
- *
4
- * These functions are migrated from the legacy utils files
5
- * to provide backward compatibility.
6
- *
7
- * @dependencies
8
- * - scripts/lib/errors.ts - ErrorCode enum and ScriptError class
9
- * - node:fs/promises - File system operations
10
- * - node:readline - Interactive CLI prompts
11
- */
12
- import { access, readFile } from 'node:fs/promises';
13
- import { createInterface } from 'node:readline';
14
- import { ErrorCode, ScriptError } from './errors.js';
15
- /**
16
- * Reads a file and returns its contents as a string.
17
- *
18
- * @example
19
- * ```typescript
20
- * const content = await readFileContent('./config.json')
21
- * ```
22
- */
23
- export async function readFileContent(filePath) {
24
- return readFile(filePath, 'utf-8');
25
- }
26
- /**
27
- * Writes content to a file.
28
- *
29
- * @example
30
- * ```typescript
31
- * await writeFileContent('./output.txt', 'Hello, world!')
32
- * ```
33
- */
34
- export async function writeFileContent(filePath, content) {
35
- const { writeFile: fsWriteFile } = await import('node:fs/promises');
36
- await fsWriteFile(filePath, content, 'utf-8');
37
- }
38
- /**
39
- * Checks if a file exists.
40
- *
41
- * @example
42
- * ```typescript
43
- * if (await fileExists('./config.json')) {
44
- * // File exists
45
- * }
46
- * ```
47
- */
48
- export async function fileExists(filePath) {
49
- try {
50
- await access(filePath);
51
- return true;
52
- }
53
- catch {
54
- return false;
55
- }
56
- }
57
- /**
58
- * Reads a file and returns true if it exists and has content.
59
- * Returns false if the file doesn't exist.
60
- */
61
- export async function readFileIfExists(filePath) {
62
- try {
63
- return await readFile(filePath, 'utf-8');
64
- }
65
- catch {
66
- return null;
67
- }
68
- }
69
- /**
70
- * Prompts the user for input and returns their response.
71
- *
72
- * @example
73
- * ```typescript
74
- * const name = await prompt('Enter your name: ')
75
- * ```
76
- */
77
- export async function prompt(question) {
78
- const rl = createInterface({
79
- input: process.stdin,
80
- output: process.stdout,
81
- });
82
- return new Promise((resolve) => {
83
- rl.question(question, (answer) => {
84
- rl.close();
85
- resolve(answer);
86
- });
87
- });
88
- }
89
- /**
90
- * Prompts the user for confirmation (yes/no).
91
- *
92
- * @example
93
- * ```typescript
94
- * if (await confirm('Are you sure?')) {
95
- * // User confirmed
96
- * }
97
- * ```
98
- */
99
- export async function confirm(question, defaultValue = false) {
100
- const suffix = defaultValue ? '(Y/n)' : '(y/N)';
101
- const answer = await prompt(`${question} ${suffix}: `);
102
- const trimmed = answer.trim().toLowerCase();
103
- if (!trimmed) {
104
- return defaultValue;
105
- }
106
- return trimmed === 'y' || trimmed === 'yes';
107
- }
108
- /**
109
- * Sleeps for the specified number of milliseconds.
110
- */
111
- export function sleep(ms) {
112
- return new Promise((resolve) => setTimeout(resolve, ms));
113
- }
114
- /**
115
- * Waits for a condition to be true, polling at regular intervals.
116
- *
117
- * @param condition - Function that returns true when the condition is met
118
- * @param timeout - Maximum time to wait in milliseconds (default: 30000)
119
- * @param interval - Polling interval in milliseconds (default: 1000)
120
- * @returns True if condition was met, false if timeout
121
- *
122
- * @example
123
- * ```typescript
124
- * await waitFor(() => serverIsReady(), 10000)
125
- * ```
126
- */
127
- export async function waitFor(condition, timeout = 30000, interval = 1000) {
128
- const start = Date.now();
129
- while (Date.now() - start < timeout) {
130
- const result = await condition();
131
- if (result)
132
- return true;
133
- await sleep(interval);
134
- }
135
- return false;
136
- }
137
- /**
138
- * Generates a random ID string.
139
- */
140
- export function generateId(prefix = '', length = 8) {
141
- const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
142
- let id = prefix ? `${prefix}-` : '';
143
- for (let i = 0; i < length; i++) {
144
- id += chars.charAt(Math.floor(Math.random() * chars.length));
145
- }
146
- return id;
147
- }
148
- /**
149
- * Formats bytes into a human-readable string.
150
- */
151
- export function formatBytes(bytes) {
152
- const units = ['B', 'KB', 'MB', 'GB', 'TB'];
153
- let value = bytes;
154
- let unitIndex = 0;
155
- while (value >= 1024 && unitIndex < units.length - 1) {
156
- value /= 1024;
157
- unitIndex++;
158
- }
159
- return `${value.toFixed(unitIndex > 0 ? 1 : 0)} ${units[unitIndex]}`;
160
- }
161
- /**
162
- * Formats a duration in milliseconds into a human-readable string.
163
- */
164
- export function formatDuration(ms) {
165
- if (ms < 1000)
166
- return `${ms}ms`;
167
- if (ms < 60000)
168
- return `${(ms / 1000).toFixed(1)}s`;
169
- if (ms < 3600000)
170
- return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;
171
- return `${Math.floor(ms / 3600000)}h ${Math.floor((ms % 3600000) / 60000)}m`;
172
- }
173
- /**
174
- * Truncates a string to a maximum length.
175
- */
176
- export function truncate(str, maxLength, suffix = '...') {
177
- if (str.length <= maxLength)
178
- return str;
179
- return str.substring(0, maxLength - suffix.length) + suffix;
180
- }
181
- /**
182
- * Ensures a value is an array.
183
- */
184
- export function ensureArray(value) {
185
- return Array.isArray(value) ? value : [value];
186
- }
187
- /**
188
- * Debounces a function call.
189
- */
190
- export function debounce(fn, delay) {
191
- let timeoutId = null;
192
- return (...args) => {
193
- if (timeoutId) {
194
- clearTimeout(timeoutId);
195
- }
196
- timeoutId = setTimeout(() => {
197
- fn(...args);
198
- timeoutId = null;
199
- }, delay);
200
- };
201
- }
202
- /**
203
- * Requires an environment variable to be set.
204
- * Throws an error if the variable is not defined.
205
- *
206
- * @param key - Primary environment variable name
207
- * @param fallbackKey - Optional fallback variable name
208
- * @returns The environment variable value
209
- * @throws Error if neither variable is set
210
- *
211
- * @example
212
- * ```typescript
213
- * const dbUrl = requireEnv('POSTGRES_URL', 'DATABASE_URL')
214
- * ```
215
- */
216
- export function requireEnv(key, fallbackKey) {
217
- const value = process.env[key];
218
- if (value)
219
- return value;
220
- if (fallbackKey) {
221
- const fallbackValue = process.env[fallbackKey];
222
- if (fallbackValue)
223
- return fallbackValue;
224
- throw new ScriptError(`Required environment variable ${key} or ${fallbackKey} is not set`, ErrorCode.CONFIG_ERROR);
225
- }
226
- throw new ScriptError(`Required environment variable ${key} is not set`, ErrorCode.CONFIG_ERROR);
227
- }
228
- /**
229
- * Validates that required npm packages are installed.
230
- *
231
- * @param packages - List of package names to check
232
- * @param options - Validation options
233
- * @returns True if all dependencies are available
234
- *
235
- * @example
236
- * ```typescript
237
- * await validateDependencies(['pg', 'dotenv'], { log: true })
238
- * ```
239
- */
240
- export async function validateDependencies(packages, options = {}) {
241
- const missing = [];
242
- for (const pkg of packages) {
243
- try {
244
- await import(pkg);
245
- }
246
- catch {
247
- missing.push(pkg);
248
- }
249
- }
250
- if (missing.length > 0) {
251
- if (options.log) {
252
- console.error(`Missing dependencies: ${missing.join(', ')}`);
253
- }
254
- if (options.throwOnMissing) {
255
- throw new ScriptError(`Missing dependencies: ${missing.join(', ')}`, ErrorCode.DEPENDENCY_ERROR);
256
- }
257
- return false;
258
- }
259
- return true;
260
- }
261
- /**
262
- * Default directories to exclude from scanning
263
- */
264
- const DEFAULT_EXCLUDE_DIRS = [
265
- 'node_modules',
266
- 'dist',
267
- 'build',
268
- '.next',
269
- '.turbo',
270
- '.cursor',
271
- 'coverage',
272
- '.git',
273
- '.nuxt',
274
- '.output',
275
- '.vercel',
276
- '.cache',
277
- ];
278
- /**
279
- * Scan a directory recursively for files matching criteria (async generator).
280
- *
281
- * This is the most memory-efficient approach for large directories.
282
- * Use this when processing files one at a time or when dealing with
283
- * potentially huge file sets. The generator yields files as they're found,
284
- * allowing immediate processing without loading everything into memory.
285
- *
286
- * @param dir - Directory path to scan (absolute or relative)
287
- * @param options - Scanning options
288
- * @param options.extensions - File extensions to include (default: ['.ts', '.tsx', '.js', '.jsx'])
289
- * @param options.excludeDirs - Directory names to exclude (default: node_modules, dist, .next, etc.)
290
- * @param options.excludePatterns - Regex patterns for paths to exclude
291
- * @param options.includeHidden - Whether to include hidden files/directories (default: false)
292
- * @param options.maxDepth - Maximum recursion depth (default: Infinity)
293
- * @param options.followSymlinks - Whether to follow symbolic links (default: false)
294
- * @yields Absolute file paths matching the criteria
295
- *
296
- * @example
297
- * ```typescript
298
- * // Process files one at a time (memory efficient)
299
- * for await (const file of scanDirectory('./src', { extensions: ['.ts', '.tsx'] })) {
300
- * const content = await readFile(file, 'utf-8')
301
- * // Process file...
302
- * }
303
- *
304
- * // With custom exclusions
305
- * for await (const file of scanDirectory('./packages', {
306
- * extensions: ['.ts'],
307
- * excludeDirs: ['node_modules', '__tests__'],
308
- * excludePatterns: [/\.test\.ts$/],
309
- * maxDepth: 3
310
- * })) {
311
- * console.log(file)
312
- * }
313
- * ```
314
- *
315
- * @see {@link scanDirectoryAll} to get all files as an array
316
- * @see {@link scanDirectorySync} for synchronous version
317
- */
318
- export async function* scanDirectory(dir, options = {}) {
319
- const { extensions = ['.ts', '.tsx', '.js', '.jsx'], excludeDirs = DEFAULT_EXCLUDE_DIRS, excludePatterns = [], includeHidden = false, maxDepth = Infinity, followSymlinks = false, } = options;
320
- async function* scan(currentDir, depth) {
321
- if (depth > maxDepth)
322
- return;
323
- try {
324
- const { readdir } = await import('node:fs/promises');
325
- const entries = await readdir(currentDir, { withFileTypes: true });
326
- for (const entry of entries) {
327
- // Skip hidden files/directories unless explicitly included
328
- if (!includeHidden && entry.name.startsWith('.')) {
329
- continue;
330
- }
331
- const fullPath = `${currentDir}/${entry.name}`;
332
- // Skip excluded directories
333
- if (entry.isDirectory() && excludeDirs.includes(entry.name)) {
334
- continue;
335
- }
336
- // Skip files/dirs matching exclude patterns
337
- if (excludePatterns.some((pattern) => pattern.test(fullPath))) {
338
- continue;
339
- }
340
- if (entry.isDirectory()) {
341
- yield* scan(fullPath, depth + 1);
342
- }
343
- else if (entry.isFile() || (followSymlinks && entry.isSymbolicLink())) {
344
- // Check file extension
345
- const ext = entry.name.substring(entry.name.lastIndexOf('.'));
346
- if (extensions.length === 0 || extensions.includes(ext)) {
347
- yield fullPath;
348
- }
349
- }
350
- }
351
- }
352
- catch (_error) {
353
- // Skip directories we can't read (permissions, etc.)
354
- // Silently fail to avoid breaking the scan
355
- }
356
- }
357
- yield* scan(dir, 0);
358
- }
359
- /**
360
- * Scan a directory and return all matching files as an array (async).
361
- *
362
- * Use this when you need all files at once for batch processing or analysis.
363
- * For large directories (>1000 files), prefer scanDirectory() generator to
364
- * avoid loading everything into memory at once.
365
- *
366
- * @param dir - Directory path to scan (absolute or relative)
367
- * @param options - Scanning options (same as scanDirectory)
368
- * @returns Promise resolving to array of absolute file paths
369
- *
370
- * @example
371
- * ```typescript
372
- * // Get all TypeScript files
373
- * const files = await scanDirectoryAll('./src', { extensions: ['.ts', '.tsx'] })
374
- * console.log(`Found ${files.length} TypeScript files`)
375
- *
376
- * // Analyze all files at once
377
- * const result = await analyzeFiles(files, process.cwd())
378
- *
379
- * // With custom options
380
- * const sourceFiles = await scanDirectoryAll('./packages', {
381
- * extensions: ['.ts'],
382
- * excludeDirs: ['node_modules', 'dist', '__tests__'],
383
- * includeHidden: false
384
- * })
385
- * ```
386
- *
387
- * @see {@link scanDirectory} for memory-efficient generator version
388
- * @see {@link scanDirectorySync} for synchronous version
389
- */
390
- export async function scanDirectoryAll(dir, options = {}) {
391
- const files = [];
392
- for await (const file of scanDirectory(dir, options)) {
393
- files.push(file);
394
- }
395
- return files;
396
- }
397
- /**
398
- * Scan a directory synchronously (blocking).
399
- *
400
- * Use this only when you absolutely must have synchronous file scanning
401
- * (e.g., in module initialization, config loading). Prefer scanDirectory()
402
- * or scanDirectoryAll() for better performance and non-blocking I/O.
403
- * This is provided for backward compatibility with existing scripts.
404
- *
405
- * @param dir - Directory path to scan (absolute or relative)
406
- * @param options - Scanning options (same as scanDirectory)
407
- * @param options.extensions - File extensions to include (default: ['.ts', '.tsx', '.js', '.jsx'])
408
- * @param options.excludeDirs - Directory names to exclude
409
- * @param options.excludePatterns - Regex patterns for paths to exclude
410
- * @param options.includeHidden - Whether to include hidden files
411
- * @param options.maxDepth - Maximum recursion depth
412
- * @param options.followSymlinks - Whether to follow symbolic links
413
- * @returns Array of absolute file paths
414
- *
415
- * @example
416
- * ```typescript
417
- * // Basic synchronous scanning
418
- * const files = scanDirectorySync('./src', { extensions: ['.ts', '.tsx'] })
419
- * console.log(`Found ${files.length} files`)
420
- *
421
- * // In config file where async not available
422
- * const configFiles = scanDirectorySync('./config', {
423
- * extensions: ['.json', '.yaml'],
424
- * maxDepth: 2
425
- * })
426
- * ```
427
- *
428
- * @see {@link scanDirectory} for async generator version
429
- * @see {@link scanDirectoryAll} for async array version
430
- */
431
- export function scanDirectorySync(dir, options = {}) {
432
- const { extensions = ['.ts', '.tsx', '.js', '.jsx'], excludeDirs = DEFAULT_EXCLUDE_DIRS, excludePatterns = [], includeHidden = false, maxDepth = Infinity, followSymlinks = false, } = options;
433
- const files = [];
434
- function scan(currentDir, depth) {
435
- if (depth > maxDepth)
436
- return;
437
- try {
438
- const { readdirSync } = require('node:fs');
439
- const entries = readdirSync(currentDir, { withFileTypes: true });
440
- for (const entry of entries) {
441
- // Skip hidden files/directories unless explicitly included
442
- if (!includeHidden && entry.name.startsWith('.')) {
443
- continue;
444
- }
445
- const fullPath = `${currentDir}/${entry.name}`;
446
- // Skip excluded directories
447
- if (entry.isDirectory() && excludeDirs.includes(entry.name)) {
448
- continue;
449
- }
450
- // Skip files/dirs matching exclude patterns
451
- if (excludePatterns.some((pattern) => pattern.test(fullPath))) {
452
- continue;
453
- }
454
- if (entry.isDirectory()) {
455
- scan(fullPath, depth + 1);
456
- }
457
- else if (entry.isFile() || (followSymlinks && entry.isSymbolicLink())) {
458
- // Check file extension
459
- const ext = entry.name.substring(entry.name.lastIndexOf('.'));
460
- if (extensions.length === 0 || extensions.includes(ext)) {
461
- files.push(fullPath);
462
- }
463
- }
464
- }
465
- }
466
- catch {
467
- // Skip directories we can't read
468
- }
469
- }
470
- scan(dir, 0);
471
- return files;
472
- }
473
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../scripts/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -1,83 +0,0 @@
1
- /**
2
- * Database Validation Utilities
3
- *
4
- * Validates database connections and schema.
5
- *
6
- * @dependencies
7
- * - scripts/lib/logger.ts - Logger utilities
8
- * - pg - PostgreSQL client for connection testing
9
- */
10
- import { type Logger } from '../logger.js';
11
- export interface DatabaseConnectionResult {
12
- connected: boolean;
13
- error?: string;
14
- latencyMs?: number;
15
- serverVersion?: string;
16
- database?: string;
17
- isNeon?: boolean;
18
- isSupabase?: boolean;
19
- }
20
- /**
21
- * Parses a PostgreSQL connection string to extract components.
22
- */
23
- export declare function parseConnectionString(connectionString: string): {
24
- host: string;
25
- port: number;
26
- database: string;
27
- user: string;
28
- password: string;
29
- ssl: boolean;
30
- } | null;
31
- /**
32
- * Detects the database provider from a connection string.
33
- */
34
- export declare function detectDatabaseProvider(connectionString: string): 'neon' | 'supabase' | 'postgres' | 'unknown';
35
- /**
36
- * Validates a database connection by attempting to connect.
37
- *
38
- * @example
39
- * ```typescript
40
- * const result = await validateDatabaseConnection(process.env.POSTGRES_URL!)
41
- * if (!result.connected) {
42
- * console.error('Connection failed:', result.error)
43
- * }
44
- * ```
45
- */
46
- export declare function validateDatabaseConnection(connectionString: string, options?: {
47
- timeout?: number;
48
- logger?: Logger;
49
- }): Promise<DatabaseConnectionResult>;
50
- /**
51
- * Validates that required tables exist in the database.
52
- *
53
- * @example
54
- * ```typescript
55
- * const { valid, missing } = await validateTables(connectionString, ['users', 'sessions', 'sites'])
56
- * ```
57
- */
58
- export declare function validateTables(connectionString: string, expectedTables: string[]): Promise<{
59
- valid: boolean;
60
- existing: string[];
61
- missing: string[];
62
- }>;
63
- /**
64
- * Gets the list of all tables in the database.
65
- */
66
- export declare function listTables(connectionString: string): Promise<string[]>;
67
- /**
68
- * Core tables that should exist in the RevealUI database.
69
- */
70
- export declare const CORE_TABLES: string[];
71
- /**
72
- * Agent-related tables.
73
- */
74
- export declare const AGENT_TABLES: string[];
75
- /**
76
- * CRDT-related tables.
77
- */
78
- export declare const CRDT_TABLES: string[];
79
- /**
80
- * All expected tables in the RevealUI database.
81
- */
82
- export declare const ALL_TABLES: string[];
83
- //# sourceMappingURL=database.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../../../../scripts/lib/validation/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AAExD,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb,GAAG,IAAI,CAcP;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,MAAM,GACvB,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAgB9C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,CAC9C,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,wBAAwB,CAAC,CAiDnC;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAkCpE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2B5E;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,UAYvB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,UAAyE,CAAA;AAElG;;GAEG;AACH,eAAO,MAAM,WAAW,UAA0C,CAAA;AAElE;;GAEG;AACH,eAAO,MAAM,UAAU,UAAoD,CAAA"}