@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.
- package/LICENSE +22 -0
- package/LICENSE.commercial +111 -0
- package/README.md +3 -0
- package/dist/{packages/mcp/src/adapters → adapters}/db.d.ts +1 -1
- package/dist/adapters/db.d.ts.map +1 -0
- package/dist/adapters/db.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js.map +1 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js.map +1 -0
- package/dist/{packages/mcp/src/hypervisor.d.ts → hypervisor.d.ts} +56 -0
- package/dist/hypervisor.d.ts.map +1 -0
- package/dist/{packages/mcp/src/hypervisor.js → hypervisor.js} +209 -1
- package/dist/hypervisor.js.map +1 -0
- package/dist/{packages/mcp/src/index.d.ts → index.d.ts} +9 -5
- package/dist/index.d.ts.map +1 -0
- package/dist/{packages/mcp/src/index.js → index.js} +8 -4
- package/dist/index.js.map +1 -0
- package/dist/{packages/mcp/src/servers → servers}/adapter.d.ts +11 -1
- package/dist/servers/adapter.d.ts.map +1 -0
- package/dist/{packages/mcp/src/servers → servers}/adapter.js +20 -4
- package/dist/servers/adapter.js.map +1 -0
- package/dist/servers/revealui-content.d.ts +21 -0
- package/dist/servers/revealui-content.d.ts.map +1 -0
- package/dist/servers/revealui-content.js +211 -0
- package/dist/servers/revealui-content.js.map +1 -0
- package/dist/servers/revealui-email.d.ts +18 -0
- package/dist/servers/revealui-email.d.ts.map +1 -0
- package/dist/servers/revealui-email.js +190 -0
- package/dist/servers/revealui-email.js.map +1 -0
- package/dist/servers/revealui-stripe.d.ts +19 -0
- package/dist/servers/revealui-stripe.d.ts.map +1 -0
- package/dist/servers/revealui-stripe.js +228 -0
- package/dist/servers/revealui-stripe.js.map +1 -0
- package/package.json +50 -11
- package/.env.example +0 -9
- package/MCP_MAINTENANCE.md +0 -265
- package/__tests__/crdt.integration.test.ts +0 -156
- package/configs/README.md +0 -77
- package/configs/claude-template.json +0 -54
- package/dist/packages/core/src/database/ssl-config.d.ts +0 -9
- package/dist/packages/core/src/database/ssl-config.d.ts.map +0 -1
- package/dist/packages/core/src/database/ssl-config.js +0 -8
- package/dist/packages/core/src/database/ssl-config.js.map +0 -1
- package/dist/packages/core/src/features.d.ts +0 -86
- package/dist/packages/core/src/features.d.ts.map +0 -1
- package/dist/packages/core/src/features.js +0 -93
- package/dist/packages/core/src/features.js.map +0 -1
- package/dist/packages/core/src/license.d.ts +0 -75
- package/dist/packages/core/src/license.d.ts.map +0 -1
- package/dist/packages/core/src/license.js +0 -174
- package/dist/packages/core/src/license.js.map +0 -1
- package/dist/packages/core/src/monitoring/alerts.d.ts +0 -118
- package/dist/packages/core/src/monitoring/alerts.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/alerts.js +0 -325
- package/dist/packages/core/src/monitoring/alerts.js.map +0 -1
- package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +0 -71
- package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/cleanup-manager.js +0 -227
- package/dist/packages/core/src/monitoring/cleanup-manager.js.map +0 -1
- package/dist/packages/core/src/monitoring/health-monitor.d.ts +0 -22
- package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/health-monitor.js +0 -143
- package/dist/packages/core/src/monitoring/health-monitor.js.map +0 -1
- package/dist/packages/core/src/monitoring/index.d.ts +0 -14
- package/dist/packages/core/src/monitoring/index.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/index.js +0 -18
- package/dist/packages/core/src/monitoring/index.js.map +0 -1
- package/dist/packages/core/src/monitoring/process-registry.d.ts +0 -97
- package/dist/packages/core/src/monitoring/process-registry.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/process-registry.js +0 -223
- package/dist/packages/core/src/monitoring/process-registry.js.map +0 -1
- package/dist/packages/core/src/monitoring/types.d.ts +0 -231
- package/dist/packages/core/src/monitoring/types.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/types.js +0 -43
- package/dist/packages/core/src/monitoring/types.js.map +0 -1
- package/dist/packages/core/src/monitoring/zombie-detector.d.ts +0 -81
- package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +0 -1
- package/dist/packages/core/src/monitoring/zombie-detector.js +0 -232
- package/dist/packages/core/src/monitoring/zombie-detector.js.map +0 -1
- package/dist/packages/core/src/observability/logger.d.ts +0 -47
- package/dist/packages/core/src/observability/logger.d.ts.map +0 -1
- package/dist/packages/core/src/observability/logger.js +0 -141
- package/dist/packages/core/src/observability/logger.js.map +0 -1
- package/dist/packages/core/src/utils/logger-server.d.ts +0 -32
- package/dist/packages/core/src/utils/logger-server.d.ts.map +0 -1
- package/dist/packages/core/src/utils/logger-server.js +0 -69
- package/dist/packages/core/src/utils/logger-server.js.map +0 -1
- package/dist/packages/core/src/utils/request-context.d.ts +0 -143
- package/dist/packages/core/src/utils/request-context.d.ts.map +0 -1
- package/dist/packages/core/src/utils/request-context.js +0 -169
- package/dist/packages/core/src/utils/request-context.js.map +0 -1
- package/dist/packages/dev/src/code-validator/index.d.ts +0 -20
- package/dist/packages/dev/src/code-validator/index.d.ts.map +0 -1
- package/dist/packages/dev/src/code-validator/index.js +0 -20
- package/dist/packages/dev/src/code-validator/index.js.map +0 -1
- package/dist/packages/dev/src/code-validator/types.d.ts +0 -67
- package/dist/packages/dev/src/code-validator/types.d.ts.map +0 -1
- package/dist/packages/dev/src/code-validator/types.js +0 -7
- package/dist/packages/dev/src/code-validator/types.js.map +0 -1
- package/dist/packages/dev/src/code-validator/validator.d.ts +0 -48
- package/dist/packages/dev/src/code-validator/validator.d.ts.map +0 -1
- package/dist/packages/dev/src/code-validator/validator.js +0 -176
- package/dist/packages/dev/src/code-validator/validator.js.map +0 -1
- package/dist/packages/mcp/src/adapters/db.d.ts.map +0 -1
- package/dist/packages/mcp/src/adapters/db.js.map +0 -1
- package/dist/packages/mcp/src/config/index.d.ts.map +0 -1
- package/dist/packages/mcp/src/config/index.js.map +0 -1
- package/dist/packages/mcp/src/contracts.d.ts.map +0 -1
- package/dist/packages/mcp/src/contracts.js.map +0 -1
- package/dist/packages/mcp/src/hypervisor.d.ts.map +0 -1
- package/dist/packages/mcp/src/hypervisor.js.map +0 -1
- package/dist/packages/mcp/src/index.d.ts.map +0 -1
- package/dist/packages/mcp/src/index.js.map +0 -1
- package/dist/packages/mcp/src/servers/adapter.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/adapter.js.map +0 -1
- package/dist/packages/mcp/src/servers/code-validator.d.ts +0 -24
- package/dist/packages/mcp/src/servers/code-validator.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/code-validator.js +0 -156
- package/dist/packages/mcp/src/servers/code-validator.js.map +0 -1
- package/dist/packages/mcp/src/servers/neon.d.ts +0 -11
- package/dist/packages/mcp/src/servers/neon.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/neon.js +0 -90
- package/dist/packages/mcp/src/servers/neon.js.map +0 -1
- package/dist/packages/mcp/src/servers/next-devtools.d.ts +0 -11
- package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/next-devtools.js +0 -215
- package/dist/packages/mcp/src/servers/next-devtools.js.map +0 -1
- package/dist/packages/mcp/src/servers/playwright.d.ts +0 -11
- package/dist/packages/mcp/src/servers/playwright.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/playwright.js +0 -68
- package/dist/packages/mcp/src/servers/playwright.js.map +0 -1
- package/dist/packages/mcp/src/servers/stripe.d.ts +0 -11
- package/dist/packages/mcp/src/servers/stripe.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/stripe.js +0 -86
- package/dist/packages/mcp/src/servers/stripe.js.map +0 -1
- package/dist/packages/mcp/src/servers/supabase.d.ts +0 -11
- package/dist/packages/mcp/src/servers/supabase.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/supabase.js +0 -144
- package/dist/packages/mcp/src/servers/supabase.js.map +0 -1
- package/dist/packages/mcp/src/servers/vercel.d.ts +0 -11
- package/dist/packages/mcp/src/servers/vercel.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/vercel.js +0 -87
- package/dist/packages/mcp/src/servers/vercel.js.map +0 -1
- package/dist/packages/mcp/src/servers/vultr-test.d.ts +0 -3
- package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +0 -1
- package/dist/packages/mcp/src/servers/vultr-test.js +0 -82
- package/dist/packages/mcp/src/servers/vultr-test.js.map +0 -1
- package/dist/scripts/lib/analyzers/console-analyzer.d.ts +0 -188
- package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +0 -1
- package/dist/scripts/lib/analyzers/console-analyzer.js +0 -432
- package/dist/scripts/lib/analyzers/console-analyzer.js.map +0 -1
- package/dist/scripts/lib/analyzers/index.d.ts +0 -11
- package/dist/scripts/lib/analyzers/index.d.ts.map +0 -1
- package/dist/scripts/lib/analyzers/index.js +0 -11
- package/dist/scripts/lib/analyzers/index.js.map +0 -1
- package/dist/scripts/lib/args.d.ts +0 -104
- package/dist/scripts/lib/args.d.ts.map +0 -1
- package/dist/scripts/lib/args.js +0 -304
- package/dist/scripts/lib/args.js.map +0 -1
- package/dist/scripts/lib/cache.d.ts +0 -185
- package/dist/scripts/lib/cache.d.ts.map +0 -1
- package/dist/scripts/lib/cache.js +0 -390
- package/dist/scripts/lib/cache.js.map +0 -1
- package/dist/scripts/lib/cli/dispatch.d.ts +0 -116
- package/dist/scripts/lib/cli/dispatch.d.ts.map +0 -1
- package/dist/scripts/lib/cli/dispatch.js +0 -206
- package/dist/scripts/lib/cli/dispatch.js.map +0 -1
- package/dist/scripts/lib/cli/index.d.ts +0 -10
- package/dist/scripts/lib/cli/index.d.ts.map +0 -1
- package/dist/scripts/lib/cli/index.js +0 -10
- package/dist/scripts/lib/cli/index.js.map +0 -1
- package/dist/scripts/lib/database/ssl-config.d.ts +0 -26
- package/dist/scripts/lib/database/ssl-config.d.ts.map +0 -1
- package/dist/scripts/lib/database/ssl-config.js +0 -47
- package/dist/scripts/lib/database/ssl-config.js.map +0 -1
- package/dist/scripts/lib/errors.d.ts +0 -218
- package/dist/scripts/lib/errors.d.ts.map +0 -1
- package/dist/scripts/lib/errors.js +0 -543
- package/dist/scripts/lib/errors.js.map +0 -1
- package/dist/scripts/lib/exec.d.ts +0 -107
- package/dist/scripts/lib/exec.d.ts.map +0 -1
- package/dist/scripts/lib/exec.js +0 -232
- package/dist/scripts/lib/exec.js.map +0 -1
- package/dist/scripts/lib/index.d.ts +0 -50
- package/dist/scripts/lib/index.d.ts.map +0 -1
- package/dist/scripts/lib/index.js +0 -65
- package/dist/scripts/lib/index.js.map +0 -1
- package/dist/scripts/lib/logger.d.ts +0 -50
- package/dist/scripts/lib/logger.d.ts.map +0 -1
- package/dist/scripts/lib/logger.js +0 -159
- package/dist/scripts/lib/logger.js.map +0 -1
- package/dist/scripts/lib/output.d.ts +0 -149
- package/dist/scripts/lib/output.d.ts.map +0 -1
- package/dist/scripts/lib/output.js +0 -263
- package/dist/scripts/lib/output.js.map +0 -1
- package/dist/scripts/lib/parallel.d.ts +0 -164
- package/dist/scripts/lib/parallel.d.ts.map +0 -1
- package/dist/scripts/lib/parallel.js +0 -355
- package/dist/scripts/lib/parallel.js.map +0 -1
- package/dist/scripts/lib/paths.d.ts +0 -92
- package/dist/scripts/lib/paths.d.ts.map +0 -1
- package/dist/scripts/lib/paths.js +0 -171
- package/dist/scripts/lib/paths.js.map +0 -1
- package/dist/scripts/lib/state/adapters/memory.d.ts +0 -42
- package/dist/scripts/lib/state/adapters/memory.d.ts.map +0 -1
- package/dist/scripts/lib/state/adapters/memory.js +0 -110
- package/dist/scripts/lib/state/adapters/memory.js.map +0 -1
- package/dist/scripts/lib/state/adapters/pglite.d.ts +0 -46
- package/dist/scripts/lib/state/adapters/pglite.d.ts.map +0 -1
- package/dist/scripts/lib/state/adapters/pglite.js +0 -256
- package/dist/scripts/lib/state/adapters/pglite.js.map +0 -1
- package/dist/scripts/lib/state/index.d.ts +0 -16
- package/dist/scripts/lib/state/index.d.ts.map +0 -1
- package/dist/scripts/lib/state/index.js +0 -16
- package/dist/scripts/lib/state/index.js.map +0 -1
- package/dist/scripts/lib/state/types.d.ts +0 -111
- package/dist/scripts/lib/state/types.d.ts.map +0 -1
- package/dist/scripts/lib/state/types.js +0 -8
- package/dist/scripts/lib/state/types.js.map +0 -1
- package/dist/scripts/lib/state/workflow-state.d.ts +0 -110
- package/dist/scripts/lib/state/workflow-state.d.ts.map +0 -1
- package/dist/scripts/lib/state/workflow-state.js +0 -331
- package/dist/scripts/lib/state/workflow-state.js.map +0 -1
- package/dist/scripts/lib/telemetry.d.ts +0 -194
- package/dist/scripts/lib/telemetry.d.ts.map +0 -1
- package/dist/scripts/lib/telemetry.js +0 -394
- package/dist/scripts/lib/telemetry.js.map +0 -1
- package/dist/scripts/lib/utils.d.ts +0 -270
- package/dist/scripts/lib/utils.d.ts.map +0 -1
- package/dist/scripts/lib/utils.js +0 -473
- package/dist/scripts/lib/utils.js.map +0 -1
- package/dist/scripts/lib/validation/database.d.ts +0 -83
- package/dist/scripts/lib/validation/database.d.ts.map +0 -1
- package/dist/scripts/lib/validation/database.js +0 -199
- package/dist/scripts/lib/validation/database.js.map +0 -1
- package/dist/scripts/lib/validation/env.d.ts +0 -80
- package/dist/scripts/lib/validation/env.d.ts.map +0 -1
- package/dist/scripts/lib/validation/env.js +0 -246
- package/dist/scripts/lib/validation/env.js.map +0 -1
- package/dist/scripts/lib/validation/index.d.ts +0 -16
- package/dist/scripts/lib/validation/index.d.ts.map +0 -1
- package/dist/scripts/lib/validation/index.js +0 -16
- package/dist/scripts/lib/validation/index.js.map +0 -1
- package/dist/scripts/lib/validation/post-execution.d.ts +0 -74
- package/dist/scripts/lib/validation/post-execution.d.ts.map +0 -1
- package/dist/scripts/lib/validation/post-execution.js +0 -110
- package/dist/scripts/lib/validation/post-execution.js.map +0 -1
- package/dist/scripts/lib/validation/pre-execution.d.ts +0 -165
- package/dist/scripts/lib/validation/pre-execution.d.ts.map +0 -1
- package/dist/scripts/lib/validation/pre-execution.js +0 -466
- package/dist/scripts/lib/validation/pre-execution.js.map +0 -1
- package/dist/scripts/lib/validators/documentation-validator.d.ts +0 -242
- package/dist/scripts/lib/validators/documentation-validator.d.ts.map +0 -1
- package/dist/scripts/lib/validators/documentation-validator.js +0 -584
- package/dist/scripts/lib/validators/documentation-validator.js.map +0 -1
- package/dist/scripts/lib/validators/index.d.ts +0 -11
- package/dist/scripts/lib/validators/index.d.ts.map +0 -1
- package/dist/scripts/lib/validators/index.js +0 -11
- package/dist/scripts/lib/validators/index.js.map +0 -1
- package/docker-compose.yml +0 -46
- package/docs/INDEX.md +0 -88
- package/docs/README.md +0 -774
- package/docs/SETUP.md +0 -264
- package/docs/servers/code-validator.md +0 -586
- package/eslint.config.js +0 -7
- package/migrations/0001_add_crdt_columns.sql +0 -8
- package/migrations/0001_rollback.sql +0 -6
- package/migrations/005_performance_indexes.sql +0 -190
- package/migrations/backfill_crdt_meta.js +0 -45
- package/src/__tests__/hypervisor.test.ts +0 -212
- package/src/adapters/db.ts +0 -180
- package/src/config/config.json +0 -49
- package/src/config/index.ts +0 -30
- package/src/contracts.ts +0 -221
- package/src/hypervisor.ts +0 -464
- package/src/index.ts +0 -87
- package/src/servers/adapter.ts +0 -643
- package/src/servers/code-validator.ts +0 -188
- package/src/servers/neon.ts +0 -103
- package/src/servers/next-devtools.ts +0 -230
- package/src/servers/playwright.ts +0 -77
- package/src/servers/stripe.ts +0 -99
- package/src/servers/supabase.ts +0 -161
- package/src/servers/vercel.ts +0 -100
- package/src/servers/vultr-test.ts +0 -97
- package/tsconfig.json +0 -12
- package/vitest.config.ts +0 -22
- /package/dist/{packages/mcp/src/adapters → adapters}/db.js +0 -0
- /package/dist/{packages/mcp/src/config → config}/index.d.ts +0 -0
- /package/dist/{packages/mcp/src/config → config}/index.js +0 -0
- /package/dist/{packages/mcp/src/contracts.d.ts → contracts.d.ts} +0 -0
- /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 +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
|