@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,143 +0,0 @@
1
- /**
2
- * Request Context Management
3
- *
4
- * Provides request ID generation and context propagation for distributed tracing.
5
- * Request IDs enable tracking a single request across multiple services and logs.
6
- *
7
- * WARNING: This module uses Node.js-specific APIs (async_hooks, crypto).
8
- * Do NOT import in client-side code or edge runtime.
9
- */
10
- /**
11
- * Request context data stored in AsyncLocalStorage
12
- */
13
- export interface RequestContext {
14
- /** Unique request identifier */
15
- requestId: string;
16
- /** Request start timestamp */
17
- startTime: number;
18
- /** User ID (if authenticated) */
19
- userId?: string;
20
- /** IP address */
21
- ip?: string;
22
- /** User agent */
23
- userAgent?: string;
24
- /** Request path */
25
- path?: string;
26
- /** Request method */
27
- method?: string;
28
- /** Additional metadata */
29
- metadata?: Record<string, unknown>;
30
- }
31
- /**
32
- * Generate a new request ID
33
- * Uses UUID v4 for guaranteed uniqueness
34
- */
35
- export declare function generateRequestId(): string;
36
- /**
37
- * Get the current request context
38
- * Returns undefined if not in a request context
39
- */
40
- export declare function getRequestContext(): RequestContext | undefined;
41
- /**
42
- * Get the current request ID
43
- * Returns undefined if not in a request context
44
- */
45
- export declare function getRequestId(): string | undefined;
46
- /**
47
- * Run a function within a request context
48
- *
49
- * @param context - Request context data
50
- * @param fn - Function to run within the context
51
- * @returns Result of the function
52
- *
53
- * @example
54
- * ```typescript
55
- * await runInRequestContext(
56
- * {
57
- * requestId: generateRequestId(),
58
- * startTime: Date.now(),
59
- * userId: 'user-123',
60
- * path: '/api/users',
61
- * method: 'GET',
62
- * },
63
- * async () => {
64
- * // All code here has access to request context
65
- * const requestId = getRequestId()
66
- * logger.info('Processing request', { requestId })
67
- * }
68
- * )
69
- * ```
70
- */
71
- export declare function runInRequestContext<T>(context: RequestContext, fn: () => T): T;
72
- /**
73
- * Update the current request context with additional data
74
- *
75
- * @param updates - Partial context updates to merge
76
- *
77
- * @example
78
- * ```typescript
79
- * updateRequestContext({ userId: 'user-123' })
80
- * ```
81
- */
82
- export declare function updateRequestContext(updates: Partial<RequestContext>): void;
83
- /**
84
- * Extract request ID from various header formats
85
- *
86
- * Checks multiple common header names:
87
- * - x-request-id (standard)
88
- * - x-correlation-id (correlation pattern)
89
- * - x-trace-id (OpenTelemetry)
90
- * - request-id (simple)
91
- *
92
- * @param headers - Request headers (any format)
93
- * @returns Request ID or undefined
94
- */
95
- export declare function extractRequestId(headers: Record<string, string | string[] | undefined>): string | undefined;
96
- /**
97
- * Create request context from HTTP request
98
- *
99
- * @param options - Request information
100
- * @returns Request context
101
- *
102
- * @example
103
- * ```typescript
104
- * const context = createRequestContext({
105
- * headers: request.headers,
106
- * path: request.url,
107
- * method: request.method,
108
- * ip: request.ip,
109
- * })
110
- * ```
111
- */
112
- export declare function createRequestContext(options: {
113
- headers?: Record<string, string | string[] | undefined>;
114
- path?: string;
115
- method?: string;
116
- ip?: string;
117
- userId?: string;
118
- }): RequestContext;
119
- /**
120
- * Get request duration in milliseconds
121
- *
122
- * @returns Duration in ms, or undefined if not in request context
123
- */
124
- export declare function getRequestDuration(): number | undefined;
125
- /**
126
- * Request context headers for propagating across services
127
- *
128
- * Use these when making HTTP requests to other services to maintain trace continuity
129
- *
130
- * @returns Headers object with request ID
131
- *
132
- * @example
133
- * ```typescript
134
- * const response = await fetch('https://api.example.com/users', {
135
- * headers: {
136
- * ...getRequestHeaders(),
137
- * 'Authorization': 'Bearer token',
138
- * }
139
- * })
140
- * ```
141
- */
142
- export declare function getRequestHeaders(): Record<string, string>;
143
- //# sourceMappingURL=request-context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../../../../../core/src/utils/request-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;IAEjB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAA;IAEjB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,iBAAiB;IACjB,EAAE,CAAC,EAAE,MAAM,CAAA;IAEX,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAQD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAE9D;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE9E;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAK3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,cAAc,CAajB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAKvD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO1D"}
@@ -1,169 +0,0 @@
1
- /**
2
- * Request Context Management
3
- *
4
- * Provides request ID generation and context propagation for distributed tracing.
5
- * Request IDs enable tracking a single request across multiple services and logs.
6
- *
7
- * WARNING: This module uses Node.js-specific APIs (async_hooks, crypto).
8
- * Do NOT import in client-side code or edge runtime.
9
- */
10
- import { AsyncLocalStorage } from 'node:async_hooks';
11
- import { randomUUID } from 'node:crypto';
12
- /**
13
- * AsyncLocalStorage for request context
14
- * Provides request-scoped storage without passing context through every function
15
- */
16
- const requestContextStorage = new AsyncLocalStorage();
17
- /**
18
- * Generate a new request ID
19
- * Uses UUID v4 for guaranteed uniqueness
20
- */
21
- export function generateRequestId() {
22
- return randomUUID();
23
- }
24
- /**
25
- * Get the current request context
26
- * Returns undefined if not in a request context
27
- */
28
- export function getRequestContext() {
29
- return requestContextStorage.getStore();
30
- }
31
- /**
32
- * Get the current request ID
33
- * Returns undefined if not in a request context
34
- */
35
- export function getRequestId() {
36
- return getRequestContext()?.requestId;
37
- }
38
- /**
39
- * Run a function within a request context
40
- *
41
- * @param context - Request context data
42
- * @param fn - Function to run within the context
43
- * @returns Result of the function
44
- *
45
- * @example
46
- * ```typescript
47
- * await runInRequestContext(
48
- * {
49
- * requestId: generateRequestId(),
50
- * startTime: Date.now(),
51
- * userId: 'user-123',
52
- * path: '/api/users',
53
- * method: 'GET',
54
- * },
55
- * async () => {
56
- * // All code here has access to request context
57
- * const requestId = getRequestId()
58
- * logger.info('Processing request', { requestId })
59
- * }
60
- * )
61
- * ```
62
- */
63
- export function runInRequestContext(context, fn) {
64
- return requestContextStorage.run(context, fn);
65
- }
66
- /**
67
- * Update the current request context with additional data
68
- *
69
- * @param updates - Partial context updates to merge
70
- *
71
- * @example
72
- * ```typescript
73
- * updateRequestContext({ userId: 'user-123' })
74
- * ```
75
- */
76
- export function updateRequestContext(updates) {
77
- const current = getRequestContext();
78
- if (current) {
79
- Object.assign(current, updates);
80
- }
81
- }
82
- /**
83
- * Extract request ID from various header formats
84
- *
85
- * Checks multiple common header names:
86
- * - x-request-id (standard)
87
- * - x-correlation-id (correlation pattern)
88
- * - x-trace-id (OpenTelemetry)
89
- * - request-id (simple)
90
- *
91
- * @param headers - Request headers (any format)
92
- * @returns Request ID or undefined
93
- */
94
- export function extractRequestId(headers) {
95
- const headerNames = ['x-request-id', 'x-correlation-id', 'x-trace-id', 'request-id'];
96
- for (const name of headerNames) {
97
- const value = headers[name];
98
- if (value) {
99
- return Array.isArray(value) ? value[0] : value;
100
- }
101
- }
102
- return undefined;
103
- }
104
- /**
105
- * Create request context from HTTP request
106
- *
107
- * @param options - Request information
108
- * @returns Request context
109
- *
110
- * @example
111
- * ```typescript
112
- * const context = createRequestContext({
113
- * headers: request.headers,
114
- * path: request.url,
115
- * method: request.method,
116
- * ip: request.ip,
117
- * })
118
- * ```
119
- */
120
- export function createRequestContext(options) {
121
- // Try to extract existing request ID from headers, or generate new one
122
- const requestId = options.headers ? extractRequestId(options.headers) : undefined;
123
- return {
124
- requestId: requestId || generateRequestId(),
125
- startTime: Date.now(),
126
- path: options.path,
127
- method: options.method,
128
- ip: options.ip,
129
- userId: options.userId,
130
- userAgent: options.headers?.['user-agent'],
131
- };
132
- }
133
- /**
134
- * Get request duration in milliseconds
135
- *
136
- * @returns Duration in ms, or undefined if not in request context
137
- */
138
- export function getRequestDuration() {
139
- const context = getRequestContext();
140
- if (!context)
141
- return undefined;
142
- return Date.now() - context.startTime;
143
- }
144
- /**
145
- * Request context headers for propagating across services
146
- *
147
- * Use these when making HTTP requests to other services to maintain trace continuity
148
- *
149
- * @returns Headers object with request ID
150
- *
151
- * @example
152
- * ```typescript
153
- * const response = await fetch('https://api.example.com/users', {
154
- * headers: {
155
- * ...getRequestHeaders(),
156
- * 'Authorization': 'Bearer token',
157
- * }
158
- * })
159
- * ```
160
- */
161
- export function getRequestHeaders() {
162
- const requestId = getRequestId();
163
- if (!requestId)
164
- return {};
165
- return {
166
- 'x-request-id': requestId,
167
- };
168
- }
169
- //# sourceMappingURL=request-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../../../../../core/src/utils/request-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AA+BxC;;;GAGG;AACH,MAAM,qBAAqB,GAAG,IAAI,iBAAiB,EAAkB,CAAA;AAErE;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,EAAE,CAAA;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,qBAAqB,CAAC,QAAQ,EAAE,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,iBAAiB,EAAE,EAAE,SAAS,CAAA;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,mBAAmB,CAAI,OAAuB,EAAE,EAAW;IACzE,OAAO,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgC;IACnE,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAsD;IAEtD,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;IAEpF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAChD,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAMpC;IACC,uEAAuE;IACvE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEjF,OAAO;QACL,SAAS,EAAE,SAAS,IAAI,iBAAiB,EAAE;QAC3C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,YAAY,CAAuB;KACjE,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAA;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IAEzB,OAAO;QACL,cAAc,EAAE,SAAS;KAC1B,CAAA;AACH,CAAC"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Code Validator
3
- *
4
- * AI Code Standards Enforcer - Prevents technical debt in AI-generated code
5
- *
6
- * @example
7
- * ```typescript
8
- * import { createValidator } from 'dev/code-validator'
9
- *
10
- * const validator = await createValidator('.revealui/code-standards.json')
11
- * const result = validator.validate(code, { filePath: 'src/foo.ts' })
12
- *
13
- * if (!result.valid) {
14
- * process.stdout.write(validator.formatResult(result))
15
- * }
16
- * ```
17
- */
18
- export * from './types';
19
- export * from './validator';
20
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../dev/src/code-validator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Code Validator
3
- *
4
- * AI Code Standards Enforcer - Prevents technical debt in AI-generated code
5
- *
6
- * @example
7
- * ```typescript
8
- * import { createValidator } from 'dev/code-validator'
9
- *
10
- * const validator = await createValidator('.revealui/code-standards.json')
11
- * const result = validator.validate(code, { filePath: 'src/foo.ts' })
12
- *
13
- * if (!result.valid) {
14
- * process.stdout.write(validator.formatResult(result))
15
- * }
16
- * ```
17
- */
18
- export * from './types';
19
- export * from './validator';
20
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/src/code-validator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
@@ -1,67 +0,0 @@
1
- /**
2
- * Code Validator Types
3
- *
4
- * Type definitions for the AI code standards enforcer
5
- */
6
- export interface ValidationRule {
7
- id: string;
8
- name: string;
9
- pattern: string;
10
- severity: 'error' | 'warning' | 'info';
11
- message: string;
12
- suggestedFix?: string;
13
- exemptions?: {
14
- paths?: string[];
15
- comments?: string[];
16
- };
17
- }
18
- export interface AutoFixRule {
19
- id: string;
20
- find: string;
21
- replace: string;
22
- }
23
- export interface CodeStandards {
24
- $schema?: string;
25
- title: string;
26
- description: string;
27
- version: string;
28
- rules: ValidationRule[];
29
- autoFix?: {
30
- enabled: boolean;
31
- rules: AutoFixRule[];
32
- };
33
- reporting?: {
34
- format: 'detailed' | 'summary';
35
- showContext: boolean;
36
- contextLines: number;
37
- };
38
- }
39
- export interface ValidationViolation {
40
- ruleId: string;
41
- ruleName: string;
42
- severity: 'error' | 'warning' | 'info';
43
- message: string;
44
- line: number;
45
- column: number;
46
- lineContent: string;
47
- context?: string[];
48
- suggestedFix?: string;
49
- }
50
- export interface ValidationResult {
51
- valid: boolean;
52
- violations: ValidationViolation[];
53
- errors: number;
54
- warnings: number;
55
- info: number;
56
- stats: {
57
- linesScanned: number;
58
- rulesApplied: number;
59
- exemptionsApplied: number;
60
- };
61
- }
62
- export interface ValidateCodeOptions {
63
- filePath?: string;
64
- autoFix?: boolean;
65
- exemptionComments?: string[];
66
- }
67
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../dev/src/code-validator/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;CACF;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,OAAO,CAAA;QAChB,KAAK,EAAE,WAAW,EAAE,CAAA;KACrB,CAAA;IACD,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;QAC9B,WAAW,EAAE,OAAO,CAAA;QACpB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAA;QACpB,YAAY,EAAE,MAAM,CAAA;QACpB,iBAAiB,EAAE,MAAM,CAAA;KAC1B,CAAA;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC7B"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Code Validator Types
3
- *
4
- * Type definitions for the AI code standards enforcer
5
- */
6
- export {};
7
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../dev/src/code-validator/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Code Validator
3
- *
4
- * Core validation logic for AI-generated code
5
- */
6
- import type { CodeStandards, ValidateCodeOptions, ValidationResult } from './types.ts';
7
- export declare class CodeValidator {
8
- private standards;
9
- constructor(standards: CodeStandards);
10
- /**
11
- * Validate code content against standards
12
- */
13
- validate(code: string, options?: ValidateCodeOptions): ValidationResult;
14
- /**
15
- * Auto-fix violations (if enabled)
16
- */
17
- autoFix(code: string): {
18
- code: string;
19
- fixesApplied: number;
20
- };
21
- /**
22
- * Check if file path is exempted from rule
23
- */
24
- private isPathExempted;
25
- /**
26
- * Check if line has exemption comment
27
- */
28
- private hasExemptionComment;
29
- /**
30
- * Get context lines around a violation
31
- */
32
- private getContext;
33
- /**
34
- * Format validation result for display
35
- */
36
- formatResult(result: ValidationResult, options?: {
37
- colors?: boolean;
38
- }): string;
39
- }
40
- /**
41
- * Load code standards from JSON file
42
- */
43
- export declare function loadStandards(filePath: string): Promise<CodeStandards>;
44
- /**
45
- * Create validator instance with standards
46
- */
47
- export declare function createValidator(standardsPath: string): Promise<CodeValidator>;
48
- //# sourceMappingURL=validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../../../../dev/src/code-validator/validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAGjB,MAAM,YAAY,CAAA;AAEnB,qBAAa,aAAa;IACZ,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,aAAa;IAE5C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,gBAAgB;IA+D3E;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IAoB7D;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM;CAqDnF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAI5E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAGnF"}
@@ -1,176 +0,0 @@
1
- /**
2
- * Code Validator
3
- *
4
- * Core validation logic for AI-generated code
5
- */
6
- import { minimatch } from 'minimatch';
7
- export class CodeValidator {
8
- standards;
9
- constructor(standards) {
10
- this.standards = standards;
11
- }
12
- /**
13
- * Validate code content against standards
14
- */
15
- validate(code, options = {}) {
16
- const violations = [];
17
- const lines = code.split('\n');
18
- let exemptionsApplied = 0;
19
- for (const rule of this.standards.rules) {
20
- // Check if file path is exempted
21
- if (options.filePath && this.isPathExempted(options.filePath, rule)) {
22
- exemptionsApplied++;
23
- continue;
24
- }
25
- const regex = new RegExp(rule.pattern, 'g');
26
- for (let i = 0; i < lines.length; i++) {
27
- const line = lines[i];
28
- if (!line)
29
- continue;
30
- const lineNumber = i + 1;
31
- // Check if line has exemption comment
32
- if (this.hasExemptionComment(line, rule, options.exemptionComments)) {
33
- exemptionsApplied++;
34
- continue;
35
- }
36
- // Check for violations
37
- let match;
38
- // biome-ignore lint/suspicious/noAssignInExpressions: Standard regex iteration pattern
39
- while ((match = regex.exec(line)) !== null) {
40
- violations.push({
41
- ruleId: rule.id,
42
- ruleName: rule.name,
43
- severity: rule.severity,
44
- message: rule.message,
45
- line: lineNumber,
46
- column: match.index + 1,
47
- lineContent: line.trim(),
48
- context: this.getContext(lines, i),
49
- suggestedFix: rule.suggestedFix,
50
- });
51
- }
52
- }
53
- }
54
- const errors = violations.filter((v) => v.severity === 'error').length;
55
- const warnings = violations.filter((v) => v.severity === 'warning').length;
56
- const info = violations.filter((v) => v.severity === 'info').length;
57
- return {
58
- valid: errors === 0,
59
- violations,
60
- errors,
61
- warnings,
62
- info,
63
- stats: {
64
- linesScanned: lines.length,
65
- rulesApplied: this.standards.rules.length,
66
- exemptionsApplied,
67
- },
68
- };
69
- }
70
- /**
71
- * Auto-fix violations (if enabled)
72
- */
73
- autoFix(code) {
74
- if (!(this.standards.autoFix?.enabled && this.standards.autoFix.rules)) {
75
- return { code, fixesApplied: 0 };
76
- }
77
- let fixedCode = code;
78
- let fixesApplied = 0;
79
- for (const fixRule of this.standards.autoFix.rules) {
80
- const regex = new RegExp(fixRule.find, 'g');
81
- const matches = fixedCode.match(regex);
82
- if (matches) {
83
- fixedCode = fixedCode.replace(regex, fixRule.replace);
84
- fixesApplied += matches.length;
85
- }
86
- }
87
- return { code: fixedCode, fixesApplied };
88
- }
89
- /**
90
- * Check if file path is exempted from rule
91
- */
92
- isPathExempted(filePath, rule) {
93
- if (!rule.exemptions?.paths)
94
- return false;
95
- return rule.exemptions.paths.some((pattern) => minimatch(filePath, pattern));
96
- }
97
- /**
98
- * Check if line has exemption comment
99
- */
100
- hasExemptionComment(line, rule, additionalComments) {
101
- const exemptionComments = [...(rule.exemptions?.comments || []), ...(additionalComments || [])];
102
- return exemptionComments.some((comment) => line.includes(comment));
103
- }
104
- /**
105
- * Get context lines around a violation
106
- */
107
- getContext(lines, index) {
108
- const contextLines = this.standards.reporting?.contextLines || 2;
109
- if (!this.standards.reporting?.showContext)
110
- return undefined;
111
- const start = Math.max(0, index - contextLines);
112
- const end = Math.min(lines.length, index + contextLines + 1);
113
- return lines.slice(start, end).map((line, i) => {
114
- const lineNumber = start + i + 1;
115
- const marker = lineNumber === index + 1 ? '>' : ' ';
116
- return `${marker} ${lineNumber.toString().padStart(4)} | ${line}`;
117
- });
118
- }
119
- /**
120
- * Format validation result for display
121
- */
122
- formatResult(result, options = {}) {
123
- const { colors = true } = options;
124
- const lines = [];
125
- // Summary
126
- if (result.violations.length === 0) {
127
- lines.push(colors ? '\x1b[32m✓ Code passes all standards\x1b[0m' : '✓ Code passes all standards');
128
- return lines.join('\n');
129
- }
130
- lines.push(colors ? '\x1b[31m✗ Code violations found\x1b[0m' : '✗ Code violations found');
131
- lines.push('');
132
- // Violations
133
- for (const violation of result.violations) {
134
- const severityColor = colors
135
- ? violation.severity === 'error'
136
- ? '\x1b[31m'
137
- : violation.severity === 'warning'
138
- ? '\x1b[33m'
139
- : '\x1b[36m'
140
- : '';
141
- const reset = colors ? '\x1b[0m' : '';
142
- lines.push(`${severityColor}${violation.severity.toUpperCase()}${reset} [${violation.ruleId}] ${violation.ruleName}`);
143
- lines.push(` at line ${violation.line}:${violation.column}`);
144
- lines.push(` ${violation.message}`);
145
- if (violation.context && this.standards.reporting?.showContext) {
146
- lines.push('');
147
- lines.push(...violation.context.map((line) => ` ${line}`));
148
- }
149
- if (violation.suggestedFix) {
150
- lines.push(` ${colors ? '\x1b[36m' : ''}Suggested fix:${reset}`);
151
- lines.push(` ${violation.suggestedFix}`);
152
- }
153
- lines.push('');
154
- }
155
- // Stats
156
- lines.push(`Summary: ${result.errors} errors, ${result.warnings} warnings, ${result.info} info`);
157
- lines.push(`Scanned ${result.stats.linesScanned} lines with ${result.stats.rulesApplied} rules (${result.stats.exemptionsApplied} exemptions)`);
158
- return lines.join('\n');
159
- }
160
- }
161
- /**
162
- * Load code standards from JSON file
163
- */
164
- export async function loadStandards(filePath) {
165
- const fs = await import('node:fs/promises');
166
- const content = await fs.readFile(filePath, 'utf-8');
167
- return JSON.parse(content);
168
- }
169
- /**
170
- * Create validator instance with standards
171
- */
172
- export async function createValidator(standardsPath) {
173
- const standards = await loadStandards(standardsPath);
174
- return new CodeValidator(standards);
175
- }
176
- //# sourceMappingURL=validator.js.map