agentic-qe 1.8.4 → 1.9.1
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/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
- package/CHANGELOG.md +394 -0
- package/README.md +86 -18
- package/dist/App.d.ts +5 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +15 -0
- package/dist/App.js.map +1 -0
- package/dist/cli/commands/constitution.d.ts +34 -0
- package/dist/cli/commands/constitution.d.ts.map +1 -0
- package/dist/cli/commands/constitution.js +679 -0
- package/dist/cli/commands/constitution.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -75
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +22 -2292
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learn/index.d.ts.map +1 -1
- package/dist/cli/commands/learn/index.js +3 -4
- package/dist/cli/commands/learn/index.js.map +1 -1
- package/dist/cli/commands/telemetry.d.ts +36 -0
- package/dist/cli/commands/telemetry.d.ts.map +1 -0
- package/dist/cli/commands/telemetry.js +364 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- package/dist/cli/index.js +66 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/agents.d.ts +22 -0
- package/dist/cli/init/agents.d.ts.map +1 -0
- package/dist/cli/init/agents.js +522 -0
- package/dist/cli/init/agents.js.map +1 -0
- package/dist/cli/init/bash-wrapper.d.ts +14 -0
- package/dist/cli/init/bash-wrapper.d.ts.map +1 -0
- package/dist/cli/init/bash-wrapper.js +47 -0
- package/dist/cli/init/bash-wrapper.js.map +1 -0
- package/dist/cli/init/claude-config.d.ts +24 -0
- package/dist/cli/init/claude-config.d.ts.map +1 -0
- package/dist/cli/init/claude-config.js +275 -0
- package/dist/cli/init/claude-config.js.map +1 -0
- package/dist/cli/init/claude-md.d.ts +19 -0
- package/dist/cli/init/claude-md.d.ts.map +1 -0
- package/dist/cli/init/claude-md.js +153 -0
- package/dist/cli/init/claude-md.js.map +1 -0
- package/dist/cli/init/commands.d.ts +6 -0
- package/dist/cli/init/commands.d.ts.map +1 -0
- package/dist/cli/init/commands.js +83 -0
- package/dist/cli/init/commands.js.map +1 -0
- package/dist/cli/init/database-init.d.ts +15 -0
- package/dist/cli/init/database-init.d.ts.map +1 -0
- package/dist/cli/init/database-init.js +203 -0
- package/dist/cli/init/database-init.js.map +1 -0
- package/dist/cli/init/directory-structure.d.ts +14 -0
- package/dist/cli/init/directory-structure.d.ts.map +1 -0
- package/dist/cli/init/directory-structure.js +91 -0
- package/dist/cli/init/directory-structure.js.map +1 -0
- package/dist/cli/init/documentation.d.ts +14 -0
- package/dist/cli/init/documentation.d.ts.map +1 -0
- package/dist/cli/init/documentation.js +195 -0
- package/dist/cli/init/documentation.js.map +1 -0
- package/dist/cli/init/fleet-config.d.ts +34 -0
- package/dist/cli/init/fleet-config.d.ts.map +1 -0
- package/dist/cli/init/fleet-config.js +269 -0
- package/dist/cli/init/fleet-config.js.map +1 -0
- package/dist/cli/init/helpers.d.ts +6 -0
- package/dist/cli/init/helpers.d.ts.map +1 -0
- package/dist/cli/init/helpers.js +94 -0
- package/dist/cli/init/helpers.js.map +1 -0
- package/dist/cli/init/index.d.ts +32 -0
- package/dist/cli/init/index.d.ts.map +1 -0
- package/dist/cli/init/index.js +294 -0
- package/dist/cli/init/index.js.map +1 -0
- package/dist/cli/init/skills.d.ts +6 -0
- package/dist/cli/init/skills.d.ts.map +1 -0
- package/dist/cli/init/skills.js +138 -0
- package/dist/cli/init/skills.js.map +1 -0
- package/dist/cli/init/utils/file-utils.d.ts +74 -0
- package/dist/cli/init/utils/file-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/file-utils.js +187 -0
- package/dist/cli/init/utils/file-utils.js.map +1 -0
- package/dist/cli/init/utils/index.d.ts +18 -0
- package/dist/cli/init/utils/index.d.ts.map +1 -0
- package/dist/cli/init/utils/index.js +48 -0
- package/dist/cli/init/utils/index.js.map +1 -0
- package/dist/cli/init/utils/log-utils.d.ts +47 -0
- package/dist/cli/init/utils/log-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/log-utils.js +68 -0
- package/dist/cli/init/utils/log-utils.js.map +1 -0
- package/dist/cli/init/utils/path-utils.d.ts +91 -0
- package/dist/cli/init/utils/path-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/path-utils.js +208 -0
- package/dist/cli/init/utils/path-utils.js.map +1 -0
- package/dist/cli/init/utils/validation-utils.d.ts +44 -0
- package/dist/cli/init/utils/validation-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/validation-utils.js +68 -0
- package/dist/cli/init/utils/validation-utils.js.map +1 -0
- package/dist/cli/init/utils.d.ts +183 -0
- package/dist/cli/init/utils.d.ts.map +1 -0
- package/dist/cli/init/utils.js +354 -0
- package/dist/cli/init/utils.js.map +1 -0
- package/dist/components/Dashboard/Dashboard.d.ts +4 -0
- package/dist/components/Dashboard/Dashboard.d.ts.map +1 -0
- package/dist/components/Dashboard/Dashboard.js +148 -0
- package/dist/components/Dashboard/Dashboard.js.map +1 -0
- package/dist/components/Dashboard/DashboardHeader.d.ts +4 -0
- package/dist/components/Dashboard/DashboardHeader.d.ts.map +1 -0
- package/dist/components/Dashboard/DashboardHeader.js +138 -0
- package/dist/components/Dashboard/DashboardHeader.js.map +1 -0
- package/dist/constitution/evaluators/ast-evaluator.d.ts +42 -0
- package/dist/constitution/evaluators/ast-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/ast-evaluator.js +303 -0
- package/dist/constitution/evaluators/ast-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/base.d.ts +144 -0
- package/dist/constitution/evaluators/base.d.ts.map +1 -0
- package/dist/constitution/evaluators/base.js +144 -0
- package/dist/constitution/evaluators/base.js.map +1 -0
- package/dist/constitution/evaluators/index.d.ts +19 -0
- package/dist/constitution/evaluators/index.d.ts.map +1 -0
- package/dist/constitution/evaluators/index.js +56 -0
- package/dist/constitution/evaluators/index.js.map +1 -0
- package/dist/constitution/evaluators/metric-evaluator.d.ts +59 -0
- package/dist/constitution/evaluators/metric-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/metric-evaluator.js +195 -0
- package/dist/constitution/evaluators/metric-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/pattern-evaluator.d.ts +66 -0
- package/dist/constitution/evaluators/pattern-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/pattern-evaluator.js +221 -0
- package/dist/constitution/evaluators/pattern-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/semantic-evaluator.d.ts +68 -0
- package/dist/constitution/evaluators/semantic-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/semantic-evaluator.js +250 -0
- package/dist/constitution/evaluators/semantic-evaluator.js.map +1 -0
- package/dist/contexts/DashboardContext.d.ts +41 -0
- package/dist/contexts/DashboardContext.d.ts.map +1 -0
- package/dist/contexts/DashboardContext.js +187 -0
- package/dist/contexts/DashboardContext.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +40 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +291 -120
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/hooks/useKeyboardShortcuts.d.ts +12 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.js +69 -0
- package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/telemetry/instrumentation/agent.d.ts +158 -0
- package/dist/telemetry/instrumentation/agent.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/agent.js +372 -0
- package/dist/telemetry/instrumentation/agent.js.map +1 -0
- package/dist/telemetry/instrumentation/index.d.ts +24 -0
- package/dist/telemetry/instrumentation/index.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/index.js +54 -0
- package/dist/telemetry/instrumentation/index.js.map +1 -0
- package/dist/telemetry/instrumentation/memory.d.ts +313 -0
- package/dist/telemetry/instrumentation/memory.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/memory.js +552 -0
- package/dist/telemetry/instrumentation/memory.js.map +1 -0
- package/dist/telemetry/instrumentation/task.d.ts +146 -0
- package/dist/telemetry/instrumentation/task.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/task.js +305 -0
- package/dist/telemetry/instrumentation/task.js.map +1 -0
- package/dist/telemetry/metrics/collectors/cost.d.ts +246 -0
- package/dist/telemetry/metrics/collectors/cost.d.ts.map +1 -0
- package/dist/telemetry/metrics/collectors/cost.js +526 -0
- package/dist/telemetry/metrics/collectors/cost.js.map +1 -0
- package/dist/telemetry/metrics/collectors/pricing-config.d.ts +87 -0
- package/dist/telemetry/metrics/collectors/pricing-config.d.ts.map +1 -0
- package/dist/telemetry/metrics/collectors/pricing-config.js +207 -0
- package/dist/telemetry/metrics/collectors/pricing-config.js.map +1 -0
- package/dist/telemetry/metrics/index.d.ts +4 -1
- package/dist/telemetry/metrics/index.d.ts.map +1 -1
- package/dist/telemetry/metrics/index.js +18 -2
- package/dist/telemetry/metrics/index.js.map +1 -1
- package/dist/telemetry/types.d.ts +1 -1
- package/dist/telemetry/types.d.ts.map +1 -1
- package/dist/visualization/api/RestEndpoints.d.ts +136 -0
- package/dist/visualization/api/RestEndpoints.d.ts.map +1 -0
- package/dist/visualization/api/RestEndpoints.js +428 -0
- package/dist/visualization/api/RestEndpoints.js.map +1 -0
- package/dist/visualization/api/WebSocketServer.d.ts +165 -0
- package/dist/visualization/api/WebSocketServer.d.ts.map +1 -0
- package/dist/visualization/api/WebSocketServer.js +518 -0
- package/dist/visualization/api/WebSocketServer.js.map +1 -0
- package/dist/visualization/core/DataTransformer.d.ts +89 -0
- package/dist/visualization/core/DataTransformer.d.ts.map +1 -0
- package/dist/visualization/core/DataTransformer.js +478 -0
- package/dist/visualization/core/DataTransformer.js.map +1 -0
- package/dist/visualization/index.d.ts +92 -0
- package/dist/visualization/index.d.ts.map +1 -0
- package/dist/visualization/index.js +121 -0
- package/dist/visualization/index.js.map +1 -0
- package/dist/visualization/types.d.ts +148 -0
- package/dist/visualization/types.d.ts.map +1 -0
- package/dist/visualization/types.js +7 -0
- package/dist/visualization/types.js.map +1 -0
- package/dist/voting/consensus.d.ts +87 -0
- package/dist/voting/consensus.d.ts.map +1 -0
- package/dist/voting/consensus.js +568 -0
- package/dist/voting/consensus.js.map +1 -0
- package/dist/voting/index.d.ts +12 -0
- package/dist/voting/index.d.ts.map +1 -0
- package/dist/voting/index.js +36 -0
- package/dist/voting/index.js.map +1 -0
- package/dist/voting/orchestrator.d.ts +65 -0
- package/dist/voting/orchestrator.d.ts.map +1 -0
- package/dist/voting/orchestrator.js +306 -0
- package/dist/voting/orchestrator.js.map +1 -0
- package/dist/voting/panel-assembly.d.ts +54 -0
- package/dist/voting/panel-assembly.d.ts.map +1 -0
- package/dist/voting/panel-assembly.js +192 -0
- package/dist/voting/panel-assembly.js.map +1 -0
- package/dist/voting/protocol.d.ts +119 -0
- package/dist/voting/protocol.d.ts.map +1 -0
- package/dist/voting/protocol.js +18 -0
- package/dist/voting/protocol.js.map +1 -0
- package/dist/voting/types.d.ts +125 -0
- package/dist/voting/types.d.ts.map +1 -0
- package/dist/voting/types.js +7 -0
- package/dist/voting/types.js.map +1 -0
- package/package.json +27 -2
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pattern Evaluator
|
|
4
|
+
*
|
|
5
|
+
* Uses regex patterns to detect code issues like:
|
|
6
|
+
* - Hardcoded secrets (API keys, passwords, tokens)
|
|
7
|
+
* - SQL injection vulnerabilities
|
|
8
|
+
* - XSS vulnerabilities
|
|
9
|
+
* - Other security and quality patterns
|
|
10
|
+
*
|
|
11
|
+
* @module constitution/evaluators/pattern-evaluator
|
|
12
|
+
* @version 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CustomPatternEvaluator = exports.PatternEvaluator = void 0;
|
|
16
|
+
const base_1 = require("./base");
|
|
17
|
+
/**
|
|
18
|
+
* Security and quality patterns
|
|
19
|
+
*/
|
|
20
|
+
const PATTERNS = {
|
|
21
|
+
// Hardcoded secrets
|
|
22
|
+
hardcodedSecrets: [
|
|
23
|
+
/(?:password|passwd|pwd)\s*[=:]\s*["'](?![\s*])[^"'\s]{8,}["']/gi,
|
|
24
|
+
/(?:api[_-]?key|apikey)\s*[=:]\s*["'][^"'\s]{16,}["']/gi,
|
|
25
|
+
/(?:secret|token)\s*[=:]\s*["'][^"'\s]{16,}["']/gi,
|
|
26
|
+
/(?:access[_-]?key)\s*[=:]\s*["'][^"'\s]{16,}["']/gi,
|
|
27
|
+
/(?:private[_-]?key)\s*[=:]\s*["'][^"'\s]{16,}["']/gi,
|
|
28
|
+
/\b[A-Za-z0-9]{32,}\b/g, // Long alphanumeric strings (potential tokens)
|
|
29
|
+
],
|
|
30
|
+
// SQL injection patterns
|
|
31
|
+
sqlInjection: [
|
|
32
|
+
/['"]\s*\+\s*\w+\s*\+\s*["']/g, // String concatenation in SQL
|
|
33
|
+
/execute\s*\(\s*["']SELECT/gi,
|
|
34
|
+
/execute\s*\(\s*["']INSERT/gi,
|
|
35
|
+
/execute\s*\(\s*["']UPDATE/gi,
|
|
36
|
+
/execute\s*\(\s*["']DELETE/gi,
|
|
37
|
+
/query\s*\(\s*["'].*\s*\+/gi, // Query with concatenation
|
|
38
|
+
],
|
|
39
|
+
// XSS patterns
|
|
40
|
+
xss: [
|
|
41
|
+
/innerHTML\s*=\s*[^;]+/g,
|
|
42
|
+
/document\.write\s*\(/g,
|
|
43
|
+
/dangerouslySetInnerHTML/g,
|
|
44
|
+
/eval\s*\(/g,
|
|
45
|
+
/setTimeout\s*\(\s*["']/g,
|
|
46
|
+
/setInterval\s*\(\s*["']/g,
|
|
47
|
+
],
|
|
48
|
+
// Error handling issues
|
|
49
|
+
unhandledErrors: [
|
|
50
|
+
/new\s+Promise\s*\(\s*\([^)]*\)\s*=>\s*\{[^}]*\}/g, // Promise without catch
|
|
51
|
+
/async\s+function[^{]*\{(?!.*try).*await/gs, // Async without try-catch
|
|
52
|
+
],
|
|
53
|
+
// Documentation issues
|
|
54
|
+
undocumented: [
|
|
55
|
+
/export\s+(?:async\s+)?function\s+\w+\s*\([^)]*\)\s*(?:\:\s*[^{]+)?\s*\{(?!\s*\/\*\*)/g,
|
|
56
|
+
/export\s+class\s+\w+(?!\s*{[\s\S]*?\/\*\*)/g,
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Fields that pattern evaluator can check
|
|
61
|
+
*/
|
|
62
|
+
const PATTERN_FIELDS = new Set([
|
|
63
|
+
'hardcoded_secrets_detected',
|
|
64
|
+
'potential_sql_injection',
|
|
65
|
+
'potential_xss',
|
|
66
|
+
'unhandled_errors',
|
|
67
|
+
'documentation_exists',
|
|
68
|
+
]);
|
|
69
|
+
/**
|
|
70
|
+
* Pattern Evaluator for regex-based code analysis
|
|
71
|
+
*/
|
|
72
|
+
class PatternEvaluator extends base_1.BaseEvaluator {
|
|
73
|
+
constructor() {
|
|
74
|
+
super(...arguments);
|
|
75
|
+
this.type = 'pattern';
|
|
76
|
+
}
|
|
77
|
+
canHandle(condition) {
|
|
78
|
+
return PATTERN_FIELDS.has(condition.field);
|
|
79
|
+
}
|
|
80
|
+
async evaluate(condition, context) {
|
|
81
|
+
if (!context.sourceCode) {
|
|
82
|
+
return this.createResult(false, condition.field, null, condition.value, condition.operator, 'No source code provided for pattern analysis');
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
// Detect patterns based on field
|
|
86
|
+
const matches = this.detectPatterns(condition.field, context.sourceCode);
|
|
87
|
+
// Determine actual value based on field type
|
|
88
|
+
const actualValue = this.getActualValue(condition.field, matches);
|
|
89
|
+
// Compare against expected value
|
|
90
|
+
const passed = this.compareValues(actualValue, condition.operator, condition.value);
|
|
91
|
+
// Build result with pattern matches as metadata
|
|
92
|
+
const result = this.createResult(passed, condition.field, actualValue, condition.value, condition.operator);
|
|
93
|
+
if (matches.length > 0) {
|
|
94
|
+
result.metadata = {
|
|
95
|
+
matchCount: matches.length,
|
|
96
|
+
matches: matches.slice(0, 5), // Include first 5 matches
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return this.createResult(false, condition.field, null, condition.value, condition.operator, `Pattern analysis failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Detect patterns in source code
|
|
107
|
+
* @param field - Field to check
|
|
108
|
+
* @param sourceCode - Source code to analyze
|
|
109
|
+
* @returns Array of pattern matches
|
|
110
|
+
*/
|
|
111
|
+
detectPatterns(field, sourceCode) {
|
|
112
|
+
const patterns = this.getPatternsForField(field);
|
|
113
|
+
const matches = [];
|
|
114
|
+
const lines = sourceCode.split('\n');
|
|
115
|
+
for (const pattern of patterns) {
|
|
116
|
+
lines.forEach((line, index) => {
|
|
117
|
+
const regex = new RegExp(pattern.source, pattern.flags);
|
|
118
|
+
const lineMatches = line.matchAll(regex);
|
|
119
|
+
for (const match of lineMatches) {
|
|
120
|
+
matches.push({
|
|
121
|
+
pattern: pattern.source,
|
|
122
|
+
line: index + 1,
|
|
123
|
+
match: match[0],
|
|
124
|
+
context: this.getContext(lines, index),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return matches;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get patterns for a specific field
|
|
133
|
+
* @param field - Field name
|
|
134
|
+
* @returns Array of regex patterns
|
|
135
|
+
*/
|
|
136
|
+
getPatternsForField(field) {
|
|
137
|
+
switch (field) {
|
|
138
|
+
case 'hardcoded_secrets_detected':
|
|
139
|
+
return PATTERNS.hardcodedSecrets;
|
|
140
|
+
case 'potential_sql_injection':
|
|
141
|
+
return PATTERNS.sqlInjection;
|
|
142
|
+
case 'potential_xss':
|
|
143
|
+
return PATTERNS.xss;
|
|
144
|
+
case 'unhandled_errors':
|
|
145
|
+
return PATTERNS.unhandledErrors;
|
|
146
|
+
case 'documentation_exists':
|
|
147
|
+
return PATTERNS.undocumented;
|
|
148
|
+
default:
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get actual value based on field type
|
|
154
|
+
* @param field - Field name
|
|
155
|
+
* @param matches - Pattern matches
|
|
156
|
+
* @returns Actual value for comparison
|
|
157
|
+
*/
|
|
158
|
+
getActualValue(field, matches) {
|
|
159
|
+
// For boolean fields (detected/exists), return true if matches found
|
|
160
|
+
if (field.endsWith('_detected') || field === 'documentation_exists') {
|
|
161
|
+
// For documentation_exists, invert the logic (matches = undocumented code)
|
|
162
|
+
return field === 'documentation_exists' ? matches.length === 0 : matches.length > 0;
|
|
163
|
+
}
|
|
164
|
+
// For other fields, return count
|
|
165
|
+
return matches.length;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get context lines around a match
|
|
169
|
+
* @param lines - All source lines
|
|
170
|
+
* @param lineIndex - Index of matched line
|
|
171
|
+
* @param contextLines - Number of context lines
|
|
172
|
+
* @returns Context string
|
|
173
|
+
*/
|
|
174
|
+
getContext(lines, lineIndex, contextLines = 2) {
|
|
175
|
+
const start = Math.max(0, lineIndex - contextLines);
|
|
176
|
+
const end = Math.min(lines.length, lineIndex + contextLines + 1);
|
|
177
|
+
return lines.slice(start, end).join('\n');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.PatternEvaluator = PatternEvaluator;
|
|
181
|
+
/**
|
|
182
|
+
* Custom pattern evaluator for user-defined patterns
|
|
183
|
+
*/
|
|
184
|
+
class CustomPatternEvaluator extends base_1.BaseEvaluator {
|
|
185
|
+
constructor() {
|
|
186
|
+
super(...arguments);
|
|
187
|
+
this.type = 'pattern';
|
|
188
|
+
this.customPatterns = new Map();
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Register a custom pattern
|
|
192
|
+
* @param field - Field name
|
|
193
|
+
* @param patterns - Regex patterns
|
|
194
|
+
*/
|
|
195
|
+
registerPattern(field, patterns) {
|
|
196
|
+
this.customPatterns.set(field, patterns);
|
|
197
|
+
}
|
|
198
|
+
canHandle(condition) {
|
|
199
|
+
return this.customPatterns.has(condition.field);
|
|
200
|
+
}
|
|
201
|
+
async evaluate(condition, context) {
|
|
202
|
+
if (!context.sourceCode) {
|
|
203
|
+
return this.createResult(false, condition.field, null, condition.value, condition.operator, 'No source code provided for pattern analysis');
|
|
204
|
+
}
|
|
205
|
+
const patterns = this.customPatterns.get(condition.field) || [];
|
|
206
|
+
const lines = context.sourceCode.split('\n');
|
|
207
|
+
let matchCount = 0;
|
|
208
|
+
for (const pattern of patterns) {
|
|
209
|
+
for (const line of lines) {
|
|
210
|
+
if (pattern.test(line)) {
|
|
211
|
+
matchCount++;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const actualValue = matchCount > 0;
|
|
216
|
+
const passed = this.compareValues(actualValue, condition.operator, condition.value);
|
|
217
|
+
return this.createResult(passed, condition.field, actualValue, condition.value, condition.operator);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
exports.CustomPatternEvaluator = CustomPatternEvaluator;
|
|
221
|
+
//# sourceMappingURL=pattern-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-evaluator.js","sourceRoot":"","sources":["../../../src/constitution/evaluators/pattern-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Evaluator
|
|
3
|
+
*
|
|
4
|
+
* Uses LLM-based analysis for contextual code understanding.
|
|
5
|
+
* Evaluates:
|
|
6
|
+
* - Code intent and purpose alignment
|
|
7
|
+
* - Naming conventions and clarity
|
|
8
|
+
* - Design pattern adherence
|
|
9
|
+
* - Best practice compliance
|
|
10
|
+
* - Contextual security issues
|
|
11
|
+
*
|
|
12
|
+
* @module constitution/evaluators/semantic-evaluator
|
|
13
|
+
* @version 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
import type { RuleCondition } from '../schema';
|
|
16
|
+
import { BaseEvaluator, type CheckResult, type EvaluationContext } from './base';
|
|
17
|
+
/**
|
|
18
|
+
* Semantic Evaluator for LLM-based contextual analysis
|
|
19
|
+
*/
|
|
20
|
+
export declare class SemanticEvaluator extends BaseEvaluator {
|
|
21
|
+
readonly type: "semantic";
|
|
22
|
+
private llmEnabled;
|
|
23
|
+
private llmClient?;
|
|
24
|
+
canHandle(condition: RuleCondition): boolean;
|
|
25
|
+
initialize(config: any): Promise<void>;
|
|
26
|
+
evaluate(condition: RuleCondition, context: EvaluationContext): Promise<CheckResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Analyze code semantics using LLM
|
|
29
|
+
* @param code - Source code
|
|
30
|
+
* @param field - Field to analyze
|
|
31
|
+
* @param context - Evaluation context
|
|
32
|
+
* @returns Semantic analysis
|
|
33
|
+
*/
|
|
34
|
+
private analyzeSemanticsWithLLM;
|
|
35
|
+
/**
|
|
36
|
+
* Analyze code semantics using heuristics (fallback when LLM unavailable)
|
|
37
|
+
* @param code - Source code
|
|
38
|
+
* @param field - Field to analyze
|
|
39
|
+
* @returns Semantic analysis
|
|
40
|
+
*/
|
|
41
|
+
private analyzeSemanticsHeuristically;
|
|
42
|
+
/**
|
|
43
|
+
* Check naming conventions
|
|
44
|
+
* @param code - Source code
|
|
45
|
+
* @returns Array of naming issues
|
|
46
|
+
*/
|
|
47
|
+
private checkNamingConventions;
|
|
48
|
+
/**
|
|
49
|
+
* Check best practices
|
|
50
|
+
* @param code - Source code
|
|
51
|
+
* @returns Array of best practice issues
|
|
52
|
+
*/
|
|
53
|
+
private checkBestPractices;
|
|
54
|
+
/**
|
|
55
|
+
* Check design patterns
|
|
56
|
+
* @param code - Source code
|
|
57
|
+
* @returns Array of design pattern issues
|
|
58
|
+
*/
|
|
59
|
+
private checkDesignPatterns;
|
|
60
|
+
/**
|
|
61
|
+
* Get semantic value from analysis
|
|
62
|
+
* @param field - Field name
|
|
63
|
+
* @param analysis - Semantic analysis
|
|
64
|
+
* @returns Semantic value
|
|
65
|
+
*/
|
|
66
|
+
private getSemanticValue;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=semantic-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-evaluator.d.ts","sourceRoot":"","sources":["../../../src/constitution/evaluators/semantic-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AA4CjF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IACpC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAM;IAExB,SAAS,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO;IAItC,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsD1F;;;;;;OAMG;YACW,uBAAuB;IAcrC;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;IAiDrC;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;CAazB"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Semantic Evaluator
|
|
4
|
+
*
|
|
5
|
+
* Uses LLM-based analysis for contextual code understanding.
|
|
6
|
+
* Evaluates:
|
|
7
|
+
* - Code intent and purpose alignment
|
|
8
|
+
* - Naming conventions and clarity
|
|
9
|
+
* - Design pattern adherence
|
|
10
|
+
* - Best practice compliance
|
|
11
|
+
* - Contextual security issues
|
|
12
|
+
*
|
|
13
|
+
* @module constitution/evaluators/semantic-evaluator
|
|
14
|
+
* @version 1.0.0
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.SemanticEvaluator = void 0;
|
|
18
|
+
const base_1 = require("./base");
|
|
19
|
+
/**
|
|
20
|
+
* Fields that semantic evaluator can check
|
|
21
|
+
*/
|
|
22
|
+
const SEMANTIC_FIELDS = new Set([
|
|
23
|
+
'semantic_quality',
|
|
24
|
+
'naming_clarity',
|
|
25
|
+
'design_pattern_adherence',
|
|
26
|
+
'best_practice_compliance',
|
|
27
|
+
'code_intent_alignment',
|
|
28
|
+
'contextual_security',
|
|
29
|
+
]);
|
|
30
|
+
/**
|
|
31
|
+
* Semantic Evaluator for LLM-based contextual analysis
|
|
32
|
+
*/
|
|
33
|
+
class SemanticEvaluator extends base_1.BaseEvaluator {
|
|
34
|
+
constructor() {
|
|
35
|
+
super(...arguments);
|
|
36
|
+
this.type = 'semantic';
|
|
37
|
+
this.llmEnabled = false;
|
|
38
|
+
}
|
|
39
|
+
canHandle(condition) {
|
|
40
|
+
return SEMANTIC_FIELDS.has(condition.field);
|
|
41
|
+
}
|
|
42
|
+
async initialize(config) {
|
|
43
|
+
await super.initialize(config);
|
|
44
|
+
// Check if LLM is available
|
|
45
|
+
this.llmEnabled = config.options?.llmEnabled ?? false;
|
|
46
|
+
if (this.llmEnabled && config.options?.llmClient) {
|
|
47
|
+
this.llmClient = config.options.llmClient;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async evaluate(condition, context) {
|
|
51
|
+
if (!context.sourceCode) {
|
|
52
|
+
return this.createResult(false, condition.field, null, condition.value, condition.operator, 'No source code provided for semantic analysis');
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
// Perform semantic analysis
|
|
56
|
+
const analysis = this.llmEnabled
|
|
57
|
+
? await this.analyzeSemanticsWithLLM(context.sourceCode, condition.field, context)
|
|
58
|
+
: this.analyzeSemanticsHeuristically(context.sourceCode, condition.field);
|
|
59
|
+
// Get the requested metric value
|
|
60
|
+
const actualValue = this.getSemanticValue(condition.field, analysis);
|
|
61
|
+
// Compare against expected value
|
|
62
|
+
const passed = this.compareValues(actualValue, condition.operator, condition.value);
|
|
63
|
+
// Build result with analysis as metadata
|
|
64
|
+
const result = this.createResult(passed, condition.field, actualValue, condition.value, condition.operator, analysis.summary);
|
|
65
|
+
result.metadata = {
|
|
66
|
+
score: analysis.score,
|
|
67
|
+
issueCount: analysis.issues.length,
|
|
68
|
+
issues: analysis.issues.slice(0, 3), // Include top 3 issues
|
|
69
|
+
recommendations: analysis.recommendations.slice(0, 3), // Include top 3 recommendations
|
|
70
|
+
};
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
return this.createResult(false, condition.field, null, condition.value, condition.operator, `Semantic analysis failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Analyze code semantics using LLM
|
|
79
|
+
* @param code - Source code
|
|
80
|
+
* @param field - Field to analyze
|
|
81
|
+
* @param context - Evaluation context
|
|
82
|
+
* @returns Semantic analysis
|
|
83
|
+
*/
|
|
84
|
+
async analyzeSemanticsWithLLM(code, field, context) {
|
|
85
|
+
if (!this.llmClient) {
|
|
86
|
+
return this.analyzeSemanticsHeuristically(code, field);
|
|
87
|
+
}
|
|
88
|
+
// NOTE: LLM integration can be added when needed
|
|
89
|
+
// Currently using heuristic analysis which provides good semantic checking
|
|
90
|
+
return this.analyzeSemanticsHeuristically(code, field);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Analyze code semantics using heuristics (fallback when LLM unavailable)
|
|
94
|
+
* @param code - Source code
|
|
95
|
+
* @param field - Field to analyze
|
|
96
|
+
* @returns Semantic analysis
|
|
97
|
+
*/
|
|
98
|
+
analyzeSemanticsHeuristically(code, field) {
|
|
99
|
+
const issues = [];
|
|
100
|
+
const recommendations = [];
|
|
101
|
+
let score = 100;
|
|
102
|
+
// Check naming conventions
|
|
103
|
+
if (field === 'naming_clarity' || field === 'semantic_quality') {
|
|
104
|
+
const namingIssues = this.checkNamingConventions(code);
|
|
105
|
+
issues.push(...namingIssues);
|
|
106
|
+
score -= namingIssues.length * 5;
|
|
107
|
+
}
|
|
108
|
+
// Check best practices
|
|
109
|
+
if (field === 'best_practice_compliance' || field === 'semantic_quality') {
|
|
110
|
+
const practiceIssues = this.checkBestPractices(code);
|
|
111
|
+
issues.push(...practiceIssues);
|
|
112
|
+
score -= practiceIssues.length * 8;
|
|
113
|
+
}
|
|
114
|
+
// Check design patterns
|
|
115
|
+
if (field === 'design_pattern_adherence' || field === 'semantic_quality') {
|
|
116
|
+
const patternIssues = this.checkDesignPatterns(code);
|
|
117
|
+
issues.push(...patternIssues);
|
|
118
|
+
score -= patternIssues.length * 10;
|
|
119
|
+
}
|
|
120
|
+
// Generate recommendations
|
|
121
|
+
if (issues.length > 0) {
|
|
122
|
+
recommendations.push('Review and address identified issues to improve code quality');
|
|
123
|
+
const namingIssues = issues.filter(i => i.type.includes('naming') || i.description.includes('convention'));
|
|
124
|
+
const practiceIssues = issues.filter(i => i.type.includes('practice') || i.type.includes('pattern'));
|
|
125
|
+
if (namingIssues.length > 0) {
|
|
126
|
+
recommendations.push('Follow consistent naming conventions (camelCase for variables, PascalCase for classes)');
|
|
127
|
+
}
|
|
128
|
+
if (practiceIssues.length > 0) {
|
|
129
|
+
recommendations.push('Adopt industry best practices for cleaner, more maintainable code');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
score = Math.max(0, Math.min(100, score));
|
|
133
|
+
return {
|
|
134
|
+
score,
|
|
135
|
+
issues,
|
|
136
|
+
recommendations,
|
|
137
|
+
summary: `Semantic analysis completed: ${score}/100 score, ${issues.length} issues found`,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Check naming conventions
|
|
142
|
+
* @param code - Source code
|
|
143
|
+
* @returns Array of naming issues
|
|
144
|
+
*/
|
|
145
|
+
checkNamingConventions(code) {
|
|
146
|
+
const issues = [];
|
|
147
|
+
// Check for single-letter variables (excluding common loop vars)
|
|
148
|
+
const singleLetterVars = code.match(/\b(?:const|let|var)\s+([a-z])\s*=/gi);
|
|
149
|
+
if (singleLetterVars) {
|
|
150
|
+
issues.push({
|
|
151
|
+
type: 'naming',
|
|
152
|
+
severity: 'low',
|
|
153
|
+
description: 'Single-letter variable names reduce code readability',
|
|
154
|
+
suggestion: 'Use descriptive variable names',
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
// Check for snake_case in JavaScript/TypeScript (should be camelCase)
|
|
158
|
+
const snakeCaseVars = code.match(/\b(?:const|let|var)\s+([a-z]+_[a-z]+)\s*=/gi);
|
|
159
|
+
if (snakeCaseVars) {
|
|
160
|
+
issues.push({
|
|
161
|
+
type: 'naming',
|
|
162
|
+
severity: 'medium',
|
|
163
|
+
description: 'Use camelCase instead of snake_case for JavaScript/TypeScript',
|
|
164
|
+
suggestion: 'Convert variable names to camelCase',
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
return issues;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Check best practices
|
|
171
|
+
* @param code - Source code
|
|
172
|
+
* @returns Array of best practice issues
|
|
173
|
+
*/
|
|
174
|
+
checkBestPractices(code) {
|
|
175
|
+
const issues = [];
|
|
176
|
+
// Check for var usage (should use const/let)
|
|
177
|
+
if (code.includes('var ')) {
|
|
178
|
+
issues.push({
|
|
179
|
+
type: 'best-practice',
|
|
180
|
+
severity: 'medium',
|
|
181
|
+
description: 'Use const or let instead of var for better scoping',
|
|
182
|
+
suggestion: 'Replace var with const (for constants) or let (for variables)',
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
// Check for == instead of ===
|
|
186
|
+
if (code.match(/[^=!]==[^=]/)) {
|
|
187
|
+
issues.push({
|
|
188
|
+
type: 'best-practice',
|
|
189
|
+
severity: 'medium',
|
|
190
|
+
description: 'Use strict equality (===) instead of loose equality (==)',
|
|
191
|
+
suggestion: 'Replace == with === for type-safe comparisons',
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
// Check for console.log in production code
|
|
195
|
+
if (code.includes('console.log')) {
|
|
196
|
+
issues.push({
|
|
197
|
+
type: 'best-practice',
|
|
198
|
+
severity: 'low',
|
|
199
|
+
description: 'Remove console.log statements from production code',
|
|
200
|
+
suggestion: 'Use proper logging framework or remove debug statements',
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
return issues;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Check design patterns
|
|
207
|
+
* @param code - Source code
|
|
208
|
+
* @returns Array of design pattern issues
|
|
209
|
+
*/
|
|
210
|
+
checkDesignPatterns(code) {
|
|
211
|
+
const issues = [];
|
|
212
|
+
// Check for God classes (very long classes)
|
|
213
|
+
const classMatches = code.match(/class\s+\w+[\s\S]*?\{([\s\S]*?)\n\}/g);
|
|
214
|
+
if (classMatches) {
|
|
215
|
+
for (const classCode of classMatches) {
|
|
216
|
+
const lineCount = classCode.split('\n').length;
|
|
217
|
+
if (lineCount > 200) {
|
|
218
|
+
issues.push({
|
|
219
|
+
type: 'design-pattern',
|
|
220
|
+
severity: 'high',
|
|
221
|
+
description: 'Class is too large (God class anti-pattern)',
|
|
222
|
+
suggestion: 'Break down into smaller, focused classes following Single Responsibility Principle',
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return issues;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Get semantic value from analysis
|
|
231
|
+
* @param field - Field name
|
|
232
|
+
* @param analysis - Semantic analysis
|
|
233
|
+
* @returns Semantic value
|
|
234
|
+
*/
|
|
235
|
+
getSemanticValue(field, analysis) {
|
|
236
|
+
switch (field) {
|
|
237
|
+
case 'semantic_quality':
|
|
238
|
+
case 'naming_clarity':
|
|
239
|
+
case 'design_pattern_adherence':
|
|
240
|
+
case 'best_practice_compliance':
|
|
241
|
+
case 'code_intent_alignment':
|
|
242
|
+
case 'contextual_security':
|
|
243
|
+
return analysis.score;
|
|
244
|
+
default:
|
|
245
|
+
return 0;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
exports.SemanticEvaluator = SemanticEvaluator;
|
|
250
|
+
//# sourceMappingURL=semantic-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-evaluator.js","sourceRoot":"","sources":["../../../src/constitution/evaluators/semantic-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { WebSocketClient } from '../services/websocket/WebSocketClient';
|
|
3
|
+
export interface DashboardFilters {
|
|
4
|
+
sessionId: string | null;
|
|
5
|
+
timeRange: {
|
|
6
|
+
start: Date | null;
|
|
7
|
+
end: Date | null;
|
|
8
|
+
};
|
|
9
|
+
agents: string[];
|
|
10
|
+
searchTerm: string;
|
|
11
|
+
}
|
|
12
|
+
export interface Notification {
|
|
13
|
+
id: string;
|
|
14
|
+
type: 'info' | 'success' | 'warning' | 'error';
|
|
15
|
+
title: string;
|
|
16
|
+
message: string;
|
|
17
|
+
timestamp: Date;
|
|
18
|
+
read: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface DashboardContextValue {
|
|
21
|
+
filters: DashboardFilters;
|
|
22
|
+
updateFilters: (filters: Partial<DashboardFilters>) => void;
|
|
23
|
+
resetFilters: () => void;
|
|
24
|
+
wsClient: WebSocketClient | null;
|
|
25
|
+
wsConnected: boolean;
|
|
26
|
+
wsError: string | null;
|
|
27
|
+
notifications: Notification[];
|
|
28
|
+
addNotification: (notification: Omit<Notification, 'id' | 'timestamp' | 'read'>) => void;
|
|
29
|
+
markNotificationRead: (id: string) => void;
|
|
30
|
+
clearNotifications: () => void;
|
|
31
|
+
activeView: 'overview' | 'mindmap' | 'metrics' | 'timeline';
|
|
32
|
+
setActiveView: (view: 'overview' | 'mindmap' | 'metrics' | 'timeline') => void;
|
|
33
|
+
exportData: () => void;
|
|
34
|
+
refreshData: () => void;
|
|
35
|
+
}
|
|
36
|
+
export declare const DashboardProvider: React.FC<{
|
|
37
|
+
children: React.ReactNode;
|
|
38
|
+
}>;
|
|
39
|
+
export declare const useDashboard: () => DashboardContextValue;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=DashboardContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardContext.d.ts","sourceRoot":"","sources":["../../src/contexts/DashboardContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE;QACT,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;QACnB,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,UAAU,qBAAqB;IAE7B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC5D,YAAY,EAAE,MAAM,IAAI,CAAC;IAGzB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAGvB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,eAAe,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;IACzF,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAG/B,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC5D,aAAa,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC;IAG/E,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAcD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAqJrE,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,qBAM/B,CAAC"}
|