@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,390 +0,0 @@
1
- /**
2
- * Build caching utilities for improved performance.
3
- *
4
- * Provides file-based caching with:
5
- * - Content-based cache keys (hashing)
6
- * - TTL (time-to-live) support
7
- * - Cache statistics and metrics
8
- * - Automatic cleanup of stale entries
9
- *
10
- * @dependencies
11
- * - node:crypto - Hash generation for cache keys
12
- * - node:fs/promises - File system operations for cache storage
13
- * - node:path - Path manipulation utilities
14
- * - fast-glob - File pattern matching for cache key generation
15
- *
16
- * @example
17
- * ```typescript
18
- * import { BuildCache } from './cache.js'
19
- *
20
- * const cache = new BuildCache({ ttl: 3600000 }) // 1 hour
21
- *
22
- * const key = await cache.getCacheKey(['src/**\/*.ts'])
23
- * if (await cache.isCached(key)) {
24
- * await cache.restore(key, 'dist/')
25
- * } else {
26
- * // Build...
27
- * await cache.save(key, 'dist/')
28
- * }
29
- *
30
- * const stats = cache.getStats()
31
- * console.log(`Cache hit rate: ${stats.hitRate}%`)
32
- * ```
33
- */
34
- import { createHash } from 'node:crypto';
35
- import { cp, mkdir, readdir, readFile, rm, stat, writeFile } from 'node:fs/promises';
36
- import { join, relative } from 'node:path';
37
- import fg from 'fast-glob';
38
- import { ErrorCode, ScriptError } from './errors.js';
39
- import { createLogger } from './logger.js';
40
- import { getProjectRoot } from './paths.js';
41
- import { fileExists, formatBytes, formatDuration } from './utils.js';
42
- const logger = createLogger({ prefix: 'Cache' });
43
- /**
44
- * Build cache for improved performance.
45
- */
46
- export class BuildCache {
47
- cacheDir;
48
- ttl;
49
- verbose;
50
- maxSize;
51
- stats;
52
- projectRoot = null;
53
- constructor(options = {}) {
54
- this.cacheDir = options.cacheDir ?? '.cache/build';
55
- this.ttl = options.ttl ?? 86_400_000; // 24 hours
56
- this.verbose = options.verbose ?? false;
57
- this.maxSize = options.maxSize ?? 1_073_741_824; // 1 GB
58
- this.stats = { hits: 0, misses: 0 };
59
- }
60
- /**
61
- * Get project root directory.
62
- */
63
- async getRoot() {
64
- if (!this.projectRoot) {
65
- this.projectRoot = await getProjectRoot(import.meta.url);
66
- }
67
- return this.projectRoot;
68
- }
69
- /**
70
- * Get absolute cache directory path.
71
- */
72
- async getCacheDir() {
73
- const root = await this.getRoot();
74
- return join(root, this.cacheDir);
75
- }
76
- /**
77
- * Generate cache key from file patterns.
78
- *
79
- * Creates a hash of file contents for content-based caching.
80
- *
81
- * @param patterns - Glob patterns to include
82
- * @returns Cache key (SHA256 hash)
83
- */
84
- async getCacheKey(patterns) {
85
- const root = await this.getRoot();
86
- const hash = createHash('sha256');
87
- // Resolve all patterns to file paths
88
- const allFiles = await fg(patterns, {
89
- cwd: root,
90
- absolute: true,
91
- onlyFiles: true,
92
- ignore: ['**/node_modules/**', '**/.git/**', '**/dist/**', '**/.next/**'],
93
- });
94
- // Sort for consistent hashing
95
- allFiles.sort();
96
- if (this.verbose) {
97
- logger.info(`Hashing ${allFiles.length} files for cache key`);
98
- }
99
- // Hash file contents
100
- for (const file of allFiles) {
101
- const content = await readFile(file);
102
- const relativePath = relative(root, file);
103
- hash.update(relativePath); // Include path in hash
104
- hash.update(content);
105
- }
106
- const key = hash.digest('hex');
107
- if (this.verbose) {
108
- logger.info(`Generated cache key: ${key}`);
109
- }
110
- return key;
111
- }
112
- /**
113
- * Check if cache entry exists and is valid.
114
- *
115
- * @param key - Cache key
116
- * @returns True if cached and not expired
117
- */
118
- async isCached(key) {
119
- const cacheDir = await this.getCacheDir();
120
- const metadataPath = join(cacheDir, key, 'metadata.json');
121
- if (!(await fileExists(metadataPath))) {
122
- this.stats.misses++;
123
- if (this.verbose) {
124
- logger.info(`Cache miss: ${key}`);
125
- }
126
- return false;
127
- }
128
- try {
129
- const content = await readFile(metadataPath, 'utf-8');
130
- const entry = JSON.parse(content);
131
- // Check TTL
132
- const age = Date.now() - entry.timestamp;
133
- if (age > this.ttl) {
134
- if (this.verbose) {
135
- logger.info(`Cache expired: ${key} (age: ${formatDuration(age)})`);
136
- }
137
- // Clean up expired entry
138
- await this.delete(key);
139
- this.stats.misses++;
140
- return false;
141
- }
142
- this.stats.hits++;
143
- if (this.verbose) {
144
- logger.success(`Cache hit: ${key} (age: ${formatDuration(age)})`);
145
- }
146
- return true;
147
- }
148
- catch (error) {
149
- logger.warn(`Invalid cache metadata for ${key}: ${error}`);
150
- this.stats.misses++;
151
- return false;
152
- }
153
- }
154
- /**
155
- * Restore cached files to destination.
156
- *
157
- * @param key - Cache key
158
- * @param dest - Destination directory
159
- */
160
- async restore(key, dest) {
161
- const root = await this.getRoot();
162
- const cacheDir = await this.getCacheDir();
163
- const entryDir = join(cacheDir, key);
164
- const metadataPath = join(entryDir, 'metadata.json');
165
- if (!(await fileExists(metadataPath))) {
166
- throw new ScriptError(`Cache entry not found: ${key}`, ErrorCode.NOT_FOUND);
167
- }
168
- const content = await readFile(metadataPath, 'utf-8');
169
- const entry = JSON.parse(content);
170
- const destPath = join(root, dest);
171
- const cachedPath = join(entryDir, 'data');
172
- if (this.verbose) {
173
- logger.info(`Restoring cache ${key} to ${dest}`);
174
- }
175
- // Copy cached files to destination
176
- await mkdir(destPath, { recursive: true });
177
- await cp(cachedPath, destPath, { recursive: true });
178
- if (this.verbose) {
179
- logger.success(`Restored ${formatBytes(entry.size)} from cache`);
180
- }
181
- }
182
- /**
183
- * Save files to cache.
184
- *
185
- * @param key - Cache key
186
- * @param source - Source directory to cache
187
- * @param sourcePaths - Original source paths (for metadata)
188
- */
189
- async save(key, source, sourcePaths = []) {
190
- const root = await this.getRoot();
191
- const cacheDir = await this.getCacheDir();
192
- const entryDir = join(cacheDir, key);
193
- const metadataPath = join(entryDir, 'metadata.json');
194
- const cachedPath = join(entryDir, 'data');
195
- const sourcePath = join(root, source);
196
- if (!(await fileExists(sourcePath))) {
197
- throw new ScriptError(`Source directory not found: ${source}`, ErrorCode.NOT_FOUND);
198
- }
199
- if (this.verbose) {
200
- logger.info(`Saving cache ${key} from ${source}`);
201
- }
202
- // Check cache size limit before saving
203
- const currentSize = await this.getTotalSize();
204
- const sourceSize = await this.getDirectorySize(sourcePath);
205
- if (this.maxSize > 0 && currentSize + sourceSize > this.maxSize) {
206
- logger.warn('Cache size limit reached, cleaning up oldest entries');
207
- await this.cleanup({ maxSize: this.maxSize - sourceSize });
208
- }
209
- // Create cache entry directory
210
- await mkdir(entryDir, { recursive: true });
211
- // Copy files to cache
212
- await cp(sourcePath, cachedPath, { recursive: true });
213
- // Save metadata
214
- const entry = {
215
- key,
216
- timestamp: Date.now(),
217
- size: sourceSize,
218
- sources: sourcePaths,
219
- destination: source,
220
- };
221
- await writeFile(metadataPath, JSON.stringify(entry, null, 2));
222
- if (this.verbose) {
223
- logger.success(`Saved ${formatBytes(sourceSize)} to cache`);
224
- }
225
- }
226
- /**
227
- * Delete cache entry.
228
- *
229
- * @param key - Cache key
230
- */
231
- async delete(key) {
232
- const cacheDir = await this.getCacheDir();
233
- const entryDir = join(cacheDir, key);
234
- if (await fileExists(entryDir)) {
235
- await rm(entryDir, { recursive: true, force: true });
236
- if (this.verbose) {
237
- logger.info(`Deleted cache entry: ${key}`);
238
- }
239
- }
240
- }
241
- /**
242
- * Clear all cache entries.
243
- */
244
- async clear() {
245
- const cacheDir = await this.getCacheDir();
246
- if (await fileExists(cacheDir)) {
247
- await rm(cacheDir, { recursive: true, force: true });
248
- logger.info('Cache cleared');
249
- }
250
- // Reset stats
251
- this.stats.hits = 0;
252
- this.stats.misses = 0;
253
- }
254
- /**
255
- * Clean up cache entries based on criteria.
256
- *
257
- * @param options - Cleanup options
258
- */
259
- async cleanup(options = {}) {
260
- const cacheDir = await this.getCacheDir();
261
- if (!(await fileExists(cacheDir))) {
262
- return;
263
- }
264
- const entries = await this.listEntries();
265
- let deletedCount = 0;
266
- let freedSize = 0;
267
- // Sort by timestamp (oldest first)
268
- entries.sort((a, b) => a.timestamp - b.timestamp);
269
- // Delete by age
270
- if (options.olderThan) {
271
- const cutoff = Date.now() - options.olderThan;
272
- for (const entry of entries) {
273
- if (entry.timestamp < cutoff) {
274
- await this.delete(entry.key);
275
- deletedCount++;
276
- freedSize += entry.size;
277
- }
278
- }
279
- }
280
- // Delete by size limit
281
- if (options.maxSize) {
282
- let currentSize = await this.getTotalSize();
283
- for (const entry of entries) {
284
- if (currentSize <= options.maxSize) {
285
- break;
286
- }
287
- await this.delete(entry.key);
288
- currentSize -= entry.size;
289
- deletedCount++;
290
- freedSize += entry.size;
291
- }
292
- }
293
- if (deletedCount > 0) {
294
- logger.info(`Cleaned up ${deletedCount} cache entries, freed ${formatBytes(freedSize)}`);
295
- }
296
- }
297
- /**
298
- * List all cache entries.
299
- *
300
- * @returns Array of cache entries
301
- */
302
- async listEntries() {
303
- const cacheDir = await this.getCacheDir();
304
- if (!(await fileExists(cacheDir))) {
305
- return [];
306
- }
307
- const entries = [];
308
- const dirs = await readdir(cacheDir);
309
- for (const dir of dirs) {
310
- const metadataPath = join(cacheDir, dir, 'metadata.json');
311
- if (await fileExists(metadataPath)) {
312
- try {
313
- const content = await readFile(metadataPath, 'utf-8');
314
- const entry = JSON.parse(content);
315
- entries.push(entry);
316
- }
317
- catch (error) {
318
- logger.warn(`Invalid metadata in ${dir}: ${error}`);
319
- }
320
- }
321
- }
322
- return entries;
323
- }
324
- /**
325
- * Get cache statistics.
326
- *
327
- * @returns Cache stats
328
- */
329
- async getStats() {
330
- const entries = await this.listEntries();
331
- const totalSize = entries.reduce((sum, entry) => sum + entry.size, 0);
332
- const total = this.stats.hits + this.stats.misses;
333
- const hitRate = total > 0 ? (this.stats.hits / total) * 100 : 0;
334
- return {
335
- hits: this.stats.hits,
336
- misses: this.stats.misses,
337
- hitRate: Math.round(hitRate * 100) / 100,
338
- entries: entries.length,
339
- totalSize,
340
- formattedSize: formatBytes(totalSize),
341
- };
342
- }
343
- /**
344
- * Get total cache size in bytes.
345
- */
346
- async getTotalSize() {
347
- const entries = await this.listEntries();
348
- return entries.reduce((sum, entry) => sum + entry.size, 0);
349
- }
350
- /**
351
- * Get directory size in bytes.
352
- */
353
- async getDirectorySize(dir) {
354
- let size = 0;
355
- try {
356
- const entries = await readdir(dir, { withFileTypes: true });
357
- for (const entry of entries) {
358
- const fullPath = join(dir, entry.name);
359
- if (entry.isDirectory()) {
360
- size += await this.getDirectorySize(fullPath);
361
- }
362
- else if (entry.isFile()) {
363
- const stats = await stat(fullPath);
364
- size += stats.size;
365
- }
366
- }
367
- }
368
- catch (error) {
369
- logger.warn(`Error calculating directory size for ${dir}: ${error}`);
370
- }
371
- return size;
372
- }
373
- /**
374
- * Reset statistics.
375
- */
376
- resetStats() {
377
- this.stats.hits = 0;
378
- this.stats.misses = 0;
379
- }
380
- }
381
- /**
382
- * Create a new build cache instance.
383
- *
384
- * @param options - Cache options
385
- * @returns BuildCache instance
386
- */
387
- export function createCache(options) {
388
- return new BuildCache(options);
389
- }
390
- //# sourceMappingURL=cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../../scripts/lib/cache.ts"],"names":[],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- /**
2
- * Unified CLI Command Dispatcher
3
- *
4
- * Consolidates the two different dispatch patterns used across CLIs:
5
- * 1. Import pattern: import(scriptPath) - Used by setup.ts
6
- * 2. Subprocess pattern: execCommand('pnpm tsx', scriptPath) - Used by analyze.ts, maintain.ts
7
- *
8
- * Provides a single, consistent API for dispatching to script files.
9
- *
10
- * @dependencies
11
- * - scripts/lib/args.ts - ParsedArgs type definition
12
- * - scripts/lib/errors.ts - Error handling with ErrorCode
13
- * - scripts/lib/exec.ts - Command execution for subprocess mode
14
- */
15
- import type { ParsedArgs } from '../args.js';
16
- /**
17
- * Dispatch mode
18
- * - 'import': Loads and executes script in same process (faster, shares context)
19
- * - 'subprocess': Spawns new process with pnpm tsx (isolated, better for long-running tasks)
20
- * - 'auto': Chooses best mode based on script characteristics (default)
21
- */
22
- export type DispatchMode = 'import' | 'subprocess' | 'auto';
23
- /**
24
- * Options for command dispatch
25
- */
26
- export interface DispatchOptions {
27
- /** Dispatch mode (default: 'auto') */
28
- mode?: DispatchMode;
29
- /** Working directory for subprocess mode */
30
- cwd?: string;
31
- /** Additional arguments to pass to the script */
32
- args?: ParsedArgs;
33
- /** Environment variables for subprocess mode */
34
- env?: Record<string, string>;
35
- /** Timeout for subprocess in milliseconds */
36
- timeout?: number;
37
- /** Whether to capture output (subprocess mode only) */
38
- captureOutput?: boolean;
39
- }
40
- /**
41
- * Result from dispatching a command
42
- */
43
- export interface DispatchResult {
44
- /** Whether the command succeeded */
45
- success: boolean;
46
- /** Output from the command (if captureOutput was true) */
47
- output?: string;
48
- /** Error message if command failed */
49
- error?: string;
50
- /** Exit code (subprocess mode only) */
51
- exitCode?: number;
52
- /** Dispatch mode that was used */
53
- mode: DispatchMode;
54
- /** Script path that was executed */
55
- scriptPath: string;
56
- }
57
- /**
58
- * Dispatch a CLI command to its implementation script
59
- *
60
- * This is the main entry point for command dispatch. It automatically
61
- * chooses the best dispatch mode based on the script characteristics.
62
- *
63
- * @param scriptPath - Absolute or relative path to the script file
64
- * @param options - Dispatch options
65
- * @returns Result of the dispatch operation
66
- *
67
- * @example
68
- * ```typescript
69
- * // Auto mode (recommended)
70
- * const result = await dispatchCommand('scripts/analyze/console-usage.ts')
71
- *
72
- * // Force subprocess mode
73
- * const result = await dispatchCommand('scripts/build/production.ts', {
74
- * mode: 'subprocess',
75
- * args: { flags: { verbose: true } }
76
- * })
77
- *
78
- * // Force import mode (faster for quick scripts)
79
- * const result = await dispatchCommand('scripts/validate/types.ts', {
80
- * mode: 'import'
81
- * })
82
- * ```
83
- */
84
- export declare function dispatchCommand(scriptPath: string, options?: DispatchOptions): Promise<DispatchResult>;
85
- /**
86
- * Helper to dispatch and throw on failure.
87
- * Useful when you want to fail fast on command errors instead of checking results.
88
- *
89
- * @param scriptPath - Absolute or relative path to the script file
90
- * @param options - Dispatch options
91
- * @throws {ScriptError} If the command fails
92
- *
93
- * @example
94
- * ```typescript
95
- * import { ErrorCode } from '../errors.js'
96
- *
97
- * // Will throw if validation fails
98
- * await dispatchOrThrow('scripts/validate/typescript.ts')
99
- *
100
- * // Catch and handle errors
101
- * try {
102
- * await dispatchOrThrow('scripts/build/production.ts', {
103
- * mode: 'subprocess',
104
- * timeout: 60000
105
- * })
106
- * console.log('Build succeeded!')
107
- * } catch (error) {
108
- * console.error('Build failed:', error.message)
109
- * process.exit(ErrorCode.EXECUTION_ERROR)
110
- * }
111
- * ```
112
- *
113
- * @see {@link dispatchCommand} for non-throwing version
114
- */
115
- export declare function dispatchOrThrow(scriptPath: string, options?: DispatchOptions): Promise<void>;
116
- //# sourceMappingURL=dispatch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../../../../scripts/lib/cli/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAI5C;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAA;AAE3D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,iDAAiD;IACjD,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,IAAI,EAAE,YAAY,CAAA;IAClB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAA;CACnB;AA+GD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAiBzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAoBf"}