-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathruntime-modification.ts
More file actions
95 lines (78 loc) · 2.36 KB
/
runtime-modification.ts
File metadata and controls
95 lines (78 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/**
* Example 2: Runtime AI Modification Flow
*/
import { RuntimeEngine, ConstraintsManager } from '../src/index';
// Initialize the runtime engine with custom constraints
const engine = new RuntimeEngine({
maxTokens: 3000,
maxComponents: 5,
maxLinesPerComponent: 150,
allowedLibraries: ['react', 'react-dom', 'styled-components'],
forbiddenPatterns: [
/eval\(/,
/dangerouslySetInnerHTML/,
/fetch\(/, // Must use secure fetch
],
});
// Simulate AI generating code based on user request
async function handleUserRequest(userQuery: string) {
console.log('User Request:', userQuery);
// Step 1: AI generates code (simulated here)
const aiGeneratedCode = `
import React from 'react';
export function CustomButton({ onClick, label }) {
return (
<button
onClick={onClick}
style={{
padding: '10px 20px',
background: 'blue',
color: 'white'
}}
>
{label}
</button>
);
}
`;
// Step 2: Process through runtime engine
const result = await engine.processModification({
userQuery,
generatedCode: aiGeneratedCode,
});
if (result.success) {
console.log('✓ Code validated and applied');
console.log('Rollback token:', result.rollbackToken);
console.log('Tokens used:', result.validation.metadata?.tokensUsed);
// Step 3: Can rollback if needed
// engine.rollback(result.rollbackToken);
} else {
console.error('✗ Validation failed');
console.error('Errors:', result.validation.errors);
}
return result;
}
// Example usage
handleUserRequest('Create a blue button component with click handler');
// Example: Update constraints dynamically
engine.updateConstraints({
maxTokens: 5000, // Increase limit for complex UI
});
// Example: Attempt to generate code that violates constraints
async function attemptDangerousCode() {
const dangerousCode = `
import React from 'react';
export function DangerousComponent() {
// This will be caught by validator
eval('alert("XSS")');
return <div>Unsafe</div>;
}
`;
const result = await engine.processModification({
userQuery: 'Create component',
generatedCode: dangerousCode,
});
console.log('Dangerous code blocked:', !result.success);
console.log('Errors:', result.validation.errors);
}
attemptDangerousCode();