@su-record/vibe 3.2.18 → 3.2.20

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 (80) hide show
  1. package/CLAUDE.md +1 -0
  2. package/dist/cli/commands/remove.d.ts.map +1 -1
  3. package/dist/cli/commands/remove.js +15 -6
  4. package/dist/cli/commands/remove.js.map +1 -1
  5. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  6. package/dist/cli/setup/ProjectSetup.js +13 -1
  7. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  8. package/dist/tools/dispatch/costGate.d.ts +59 -0
  9. package/dist/tools/dispatch/costGate.d.ts.map +1 -0
  10. package/dist/tools/dispatch/costGate.js +85 -0
  11. package/dist/tools/dispatch/costGate.js.map +1 -0
  12. package/dist/tools/dispatch/deterministicSignals.d.ts +61 -0
  13. package/dist/tools/dispatch/deterministicSignals.d.ts.map +1 -0
  14. package/dist/tools/dispatch/deterministicSignals.js +136 -0
  15. package/dist/tools/dispatch/deterministicSignals.js.map +1 -0
  16. package/dist/tools/dispatch/index.d.ts +5 -0
  17. package/dist/tools/dispatch/index.d.ts.map +1 -0
  18. package/dist/tools/dispatch/index.js +3 -0
  19. package/dist/tools/dispatch/index.js.map +1 -0
  20. package/dist/tools/dispatch/vibePaths.d.ts +7 -0
  21. package/dist/tools/dispatch/vibePaths.d.ts.map +1 -0
  22. package/dist/tools/dispatch/vibePaths.js +35 -0
  23. package/dist/tools/dispatch/vibePaths.js.map +1 -0
  24. package/dist/tools/index.d.ts +5 -0
  25. package/dist/tools/index.d.ts.map +1 -1
  26. package/dist/tools/index.js +4 -0
  27. package/dist/tools/index.js.map +1 -1
  28. package/dist/tools/spec/index.d.ts +2 -0
  29. package/dist/tools/spec/index.d.ts.map +1 -1
  30. package/dist/tools/spec/index.js +2 -0
  31. package/dist/tools/spec/index.js.map +1 -1
  32. package/dist/tools/spec/validateSpecDocument.d.ts +30 -0
  33. package/dist/tools/spec/validateSpecDocument.d.ts.map +1 -0
  34. package/dist/tools/spec/validateSpecDocument.js +201 -0
  35. package/dist/tools/spec/validateSpecDocument.js.map +1 -0
  36. package/hooks/scripts/code-check.js +90 -16
  37. package/hooks/scripts/lib/anchor.js +15 -4
  38. package/hooks/scripts/lib/inbox.js +10 -2
  39. package/package.json +1 -1
  40. package/skills/vibe/SKILL.md +18 -5
  41. package/skills/vibe.image/SKILL.md +8 -0
  42. package/skills/vibe.review/SKILL.md +8 -0
  43. package/skills/vibe.spec/SKILL.md +21 -0
  44. package/vibe/rules/loop-contract.md +31 -0
  45. package/dist/infra/lib/DeepInit.d.ts +0 -60
  46. package/dist/infra/lib/DeepInit.d.ts.map +0 -1
  47. package/dist/infra/lib/DeepInit.js +0 -245
  48. package/dist/infra/lib/DeepInit.js.map +0 -1
  49. package/dist/infra/lib/FrameworkDetector.d.ts +0 -56
  50. package/dist/infra/lib/FrameworkDetector.d.ts.map +0 -1
  51. package/dist/infra/lib/FrameworkDetector.js +0 -287
  52. package/dist/infra/lib/FrameworkDetector.js.map +0 -1
  53. package/dist/infra/lib/ModelRouter.d.ts +0 -48
  54. package/dist/infra/lib/ModelRouter.d.ts.map +0 -1
  55. package/dist/infra/lib/ModelRouter.js +0 -216
  56. package/dist/infra/lib/ModelRouter.js.map +0 -1
  57. package/dist/infra/lib/OrchestrateWorkflow.d.ts +0 -88
  58. package/dist/infra/lib/OrchestrateWorkflow.d.ts.map +0 -1
  59. package/dist/infra/lib/OrchestrateWorkflow.js +0 -259
  60. package/dist/infra/lib/OrchestrateWorkflow.js.map +0 -1
  61. package/dist/infra/lib/ReviewRace.d.ts +0 -86
  62. package/dist/infra/lib/ReviewRace.d.ts.map +0 -1
  63. package/dist/infra/lib/ReviewRace.js +0 -454
  64. package/dist/infra/lib/ReviewRace.js.map +0 -1
  65. package/dist/infra/lib/RuleBuildSystem.d.ts +0 -157
  66. package/dist/infra/lib/RuleBuildSystem.d.ts.map +0 -1
  67. package/dist/infra/lib/RuleBuildSystem.js +0 -550
  68. package/dist/infra/lib/RuleBuildSystem.js.map +0 -1
  69. package/dist/infra/lib/SkillQualityGate.d.ts +0 -42
  70. package/dist/infra/lib/SkillQualityGate.d.ts.map +0 -1
  71. package/dist/infra/lib/SkillQualityGate.js +0 -220
  72. package/dist/infra/lib/SkillQualityGate.js.map +0 -1
  73. package/dist/infra/lib/SkillRepository.d.ts +0 -134
  74. package/dist/infra/lib/SkillRepository.d.ts.map +0 -1
  75. package/dist/infra/lib/SkillRepository.js +0 -500
  76. package/dist/infra/lib/SkillRepository.js.map +0 -1
  77. package/dist/infra/lib/UltraQA.d.ts +0 -89
  78. package/dist/infra/lib/UltraQA.d.ts.map +0 -1
  79. package/dist/infra/lib/UltraQA.js +0 -301
  80. package/dist/infra/lib/UltraQA.js.map +0 -1
@@ -1,550 +0,0 @@
1
- /**
2
- * Rule Build System - Compile individual rule files into consolidated AGENTS.md
3
- * Inspired by agent-skills architecture
4
- */
5
- import { readFile, writeFile, readdir } from 'fs/promises';
6
- import { join, basename } from 'path';
7
- export const IMPACT_ORDER = {
8
- 'CRITICAL': 0,
9
- 'HIGH': 1,
10
- 'MEDIUM-HIGH': 2,
11
- 'MEDIUM': 3,
12
- 'LOW-MEDIUM': 4,
13
- 'LOW': 5
14
- };
15
- /**
16
- * Parse YAML frontmatter from markdown file
17
- */
18
- function parseFrontmatter(content) {
19
- const frontmatter = {};
20
- let body = content;
21
- if (content.startsWith('---')) {
22
- const endIndex = content.indexOf('---', 3);
23
- if (endIndex !== -1) {
24
- const frontmatterText = content.slice(3, endIndex).trim();
25
- frontmatterText.split('\n').forEach(line => {
26
- const colonIndex = line.indexOf(':');
27
- if (colonIndex !== -1) {
28
- const key = line.slice(0, colonIndex).trim();
29
- const value = line.slice(colonIndex + 1).trim().replace(/^["']|["']$/g, '');
30
- frontmatter[key] = value;
31
- }
32
- });
33
- body = content.slice(endIndex + 3).trim();
34
- }
35
- }
36
- return { frontmatter, body };
37
- }
38
- /**
39
- * Parse a rule markdown file
40
- */
41
- export async function parseRuleFile(filePath) {
42
- const rawContent = await readFile(filePath, 'utf-8');
43
- const content = rawContent.replace(/\r\n/g, '\n'); // Normalize line endings
44
- const { frontmatter, body } = parseFrontmatter(content);
45
- const lines = body.split('\n');
46
- // Extract title (first ## heading)
47
- let title = '';
48
- let titleLine = 0;
49
- for (let i = 0; i < lines.length; i++) {
50
- if (lines[i].startsWith('##')) {
51
- title = lines[i].replace(/^##+\s*/, '').trim();
52
- titleLine = i;
53
- break;
54
- }
55
- }
56
- let impact = 'MEDIUM';
57
- let impactDescription = '';
58
- let explanation = '';
59
- const examples = [];
60
- const references = [];
61
- let currentExample = null;
62
- let inCodeBlock = false;
63
- let codeBlockLanguage = 'typescript';
64
- let codeBlockContent = [];
65
- let afterCodeBlock = false;
66
- let additionalText = [];
67
- for (let i = titleLine + 1; i < lines.length; i++) {
68
- const line = lines[i];
69
- // Impact line
70
- if (line.includes('**Impact:')) {
71
- const match = line.match(/\*\*Impact:\s*(\w+(?:-\w+)?)\s*(?:\(([^)]+)\))?/i);
72
- if (match) {
73
- impact = match[1].toUpperCase();
74
- impactDescription = match[2] || '';
75
- }
76
- continue;
77
- }
78
- // Code block handling
79
- if (line.startsWith('```')) {
80
- if (inCodeBlock) {
81
- if (currentExample) {
82
- currentExample.code = codeBlockContent.join('\n');
83
- currentExample.language = codeBlockLanguage;
84
- }
85
- codeBlockContent = [];
86
- inCodeBlock = false;
87
- afterCodeBlock = true;
88
- }
89
- else {
90
- inCodeBlock = true;
91
- codeBlockLanguage = line.slice(3).trim() || 'typescript';
92
- codeBlockContent = [];
93
- afterCodeBlock = false;
94
- }
95
- continue;
96
- }
97
- if (inCodeBlock) {
98
- codeBlockContent.push(line);
99
- continue;
100
- }
101
- // Example label detection
102
- const labelMatch = line.match(/^\*\*([^:]+?):\*?\*?$/);
103
- if (labelMatch) {
104
- if (currentExample) {
105
- if (additionalText.length > 0) {
106
- currentExample.additionalText = additionalText.join('\n\n');
107
- additionalText = [];
108
- }
109
- examples.push(currentExample);
110
- }
111
- afterCodeBlock = false;
112
- const fullLabel = labelMatch[1].trim();
113
- const descMatch = fullLabel.match(/^([A-Za-z]+(?:\s+[A-Za-z]+)*)\s*\(([^()]+)\)$/);
114
- currentExample = {
115
- label: descMatch ? descMatch[1].trim() : fullLabel,
116
- description: descMatch ? descMatch[2].trim() : undefined,
117
- code: '',
118
- language: codeBlockLanguage,
119
- };
120
- continue;
121
- }
122
- // Reference links
123
- if (line.startsWith('Reference:') || line.startsWith('References:')) {
124
- if (currentExample) {
125
- if (additionalText.length > 0) {
126
- currentExample.additionalText = additionalText.join('\n\n');
127
- additionalText = [];
128
- }
129
- examples.push(currentExample);
130
- currentExample = null;
131
- }
132
- const refMatch = line.match(/\[([^\]]+)\]\(([^)]+)\)/g);
133
- if (refMatch) {
134
- refMatch.forEach(ref => {
135
- const m = ref.match(/\[([^\]]+)\]\(([^)]+)\)/);
136
- if (m)
137
- references.push(m[2]);
138
- });
139
- }
140
- continue;
141
- }
142
- // Regular text
143
- if (line.trim() && !line.startsWith('#')) {
144
- if (!currentExample && !inCodeBlock) {
145
- explanation += (explanation ? '\n\n' : '') + line;
146
- }
147
- else if (currentExample && afterCodeBlock) {
148
- additionalText.push(line);
149
- }
150
- }
151
- }
152
- // Handle last example
153
- if (currentExample) {
154
- if (additionalText.length > 0) {
155
- currentExample.additionalText = additionalText.join('\n\n');
156
- }
157
- examples.push(currentExample);
158
- }
159
- // Section mapping from filename prefix
160
- const filename = basename(filePath);
161
- const sectionMap = {
162
- security: 1,
163
- performance: 2,
164
- architecture: 3,
165
- complexity: 4,
166
- testing: 5,
167
- typescript: 6,
168
- react: 7,
169
- advanced: 8,
170
- };
171
- const area = filename.split('-')[0];
172
- const section = frontmatter.section ? parseInt(frontmatter.section) : (sectionMap[area] || 0);
173
- const rule = {
174
- id: '',
175
- title: frontmatter.title || title,
176
- section,
177
- impact: frontmatter.impact || impact,
178
- impactDescription: frontmatter.impactDescription || impactDescription,
179
- explanation: explanation.trim(),
180
- examples,
181
- references: frontmatter.references
182
- ? frontmatter.references.split(',').map(r => r.trim())
183
- : references,
184
- tags: frontmatter.tags
185
- ? frontmatter.tags.split(',').map(t => t.trim())
186
- : undefined,
187
- };
188
- return { section, rule };
189
- }
190
- /**
191
- * Generate markdown from sections
192
- */
193
- export function generateMarkdown(sections, metadata) {
194
- let md = `# ${metadata.title}\n\n`;
195
- md += `**Version ${metadata.version}**\n`;
196
- if (metadata.organization) {
197
- md += `${metadata.organization}\n`;
198
- }
199
- md += `${metadata.date}\n\n`;
200
- md += `> **Note:**\n`;
201
- md += `> This document is for AI agents and LLMs to follow when maintaining,\n`;
202
- md += `> generating, or refactoring code. Optimized for automation.\n\n`;
203
- md += `---\n\n`;
204
- md += `## Abstract\n\n`;
205
- md += `${metadata.abstract}\n\n`;
206
- md += `---\n\n`;
207
- md += `## Table of Contents\n\n`;
208
- // Generate TOC
209
- sections.forEach(section => {
210
- const anchor = `${section.number}-${section.title.toLowerCase().replace(/\s+/g, '-')}`;
211
- md += `${section.number}. [${section.title}](#${anchor}) — **${section.impact}**\n`;
212
- section.rules.forEach(rule => {
213
- const ruleAnchor = `${rule.id}-${rule.title}`.toLowerCase().replace(/\s+/g, '-').replace(/[^\w-]/g, '');
214
- md += ` - ${rule.id} [${rule.title}](#${ruleAnchor})\n`;
215
- });
216
- });
217
- md += `\n---\n\n`;
218
- // Generate sections
219
- sections.forEach(section => {
220
- md += `## ${section.number}. ${section.title}\n\n`;
221
- md += `**Impact: ${section.impact}${section.impactDescription ? ` (${section.impactDescription})` : ''}**\n\n`;
222
- if (section.introduction) {
223
- md += `${section.introduction}\n\n`;
224
- }
225
- section.rules.forEach(rule => {
226
- md += `### ${rule.id} ${rule.title}\n\n`;
227
- md += `**Impact: ${rule.impact}${rule.impactDescription ? ` (${rule.impactDescription})` : ''}**\n\n`;
228
- md += `${rule.explanation}\n\n`;
229
- rule.examples.forEach(example => {
230
- if (example.description) {
231
- md += `**${example.label}: ${example.description}**\n\n`;
232
- }
233
- else {
234
- md += `**${example.label}:**\n\n`;
235
- }
236
- if (example.code && example.code.trim()) {
237
- md += `\`\`\`${example.language || 'typescript'}\n`;
238
- md += `${example.code}\n`;
239
- md += `\`\`\`\n\n`;
240
- }
241
- if (example.additionalText) {
242
- md += `${example.additionalText}\n\n`;
243
- }
244
- });
245
- if (rule.references && rule.references.length > 0) {
246
- md += `Reference: ${rule.references.map(ref => `[${ref}](${ref})`).join(', ')}\n\n`;
247
- }
248
- });
249
- md += `---\n\n`;
250
- });
251
- // Add references section
252
- if (metadata.references && metadata.references.length > 0) {
253
- md += `## References\n\n`;
254
- metadata.references.forEach((ref, i) => {
255
- md += `${i + 1}. [${ref}](${ref})\n`;
256
- });
257
- }
258
- return md;
259
- }
260
- /**
261
- * Build AGENTS.md from individual rule files
262
- */
263
- export async function buildRulesDocument(rulesDir, outputFile, metadata) {
264
- const files = await readdir(rulesDir);
265
- const ruleFiles = files.filter(f => f.endsWith('.md') && !f.startsWith('_') && f !== 'README.md').sort();
266
- const ruleData = [];
267
- for (const file of ruleFiles) {
268
- const filePath = join(rulesDir, file);
269
- try {
270
- const parsed = await parseRuleFile(filePath);
271
- ruleData.push(parsed);
272
- }
273
- catch (error) {
274
- console.error(`Error parsing ${file}:`, error);
275
- }
276
- }
277
- // Group by section
278
- const sectionsMap = new Map();
279
- ruleData.forEach(({ section, rule }) => {
280
- if (!sectionsMap.has(section)) {
281
- const sectionMeta = metadata.sectionMeta?.[section];
282
- sectionsMap.set(section, {
283
- number: section,
284
- title: sectionMeta?.title || `Section ${section}`,
285
- impact: sectionMeta?.impact || rule.impact,
286
- introduction: sectionMeta?.introduction,
287
- rules: [],
288
- });
289
- }
290
- sectionsMap.get(section).rules.push(rule);
291
- });
292
- // Sort rules and assign IDs
293
- sectionsMap.forEach(section => {
294
- section.rules.sort((a, b) => a.title.localeCompare(b.title, 'en-US'));
295
- section.rules.forEach((rule, index) => {
296
- rule.id = `${section.number}.${index + 1}`;
297
- rule.subsection = index + 1;
298
- });
299
- });
300
- const sections = Array.from(sectionsMap.values()).sort((a, b) => a.number - b.number);
301
- const markdown = generateMarkdown(sections, {
302
- version: metadata.version,
303
- title: metadata.title,
304
- organization: metadata.organization,
305
- date: metadata.date || new Date().toLocaleDateString('en-US', { month: 'long', year: 'numeric' }),
306
- abstract: metadata.abstract,
307
- references: metadata.references,
308
- });
309
- await writeFile(outputFile, markdown, 'utf-8');
310
- return { sections: sections.length, rules: ruleData.length };
311
- }
312
- /**
313
- * Extract test cases from rules for LLM evaluation
314
- */
315
- export function extractTestCases(rules) {
316
- const testCases = [];
317
- rules.forEach(rule => {
318
- rule.examples.forEach(example => {
319
- const label = example.label.toLowerCase();
320
- const isBad = label.includes('incorrect') || label.includes('wrong') || label.includes('bad');
321
- const isGood = label.includes('correct') || label.includes('good');
322
- if ((isBad || isGood) && example.code.trim()) {
323
- testCases.push({
324
- ruleId: rule.id,
325
- ruleTitle: rule.title,
326
- type: isBad ? 'bad' : 'good',
327
- code: example.code,
328
- language: example.language || 'typescript',
329
- description: example.description || `${example.label} example for ${rule.title}`,
330
- });
331
- }
332
- });
333
- });
334
- return testCases;
335
- }
336
- /**
337
- * Extract test cases from rules directory
338
- */
339
- export async function extractTestCasesFromDir(rulesDir, outputFile) {
340
- const files = await readdir(rulesDir);
341
- const ruleFiles = files.filter(f => f.endsWith('.md') && !f.startsWith('_') && f !== 'README.md');
342
- const allTestCases = [];
343
- for (const file of ruleFiles) {
344
- const filePath = join(rulesDir, file);
345
- try {
346
- const { rule } = await parseRuleFile(filePath);
347
- rule.id = file.replace('.md', ''); // Temporary ID
348
- const testCases = extractTestCases([rule]);
349
- allTestCases.push(...testCases);
350
- }
351
- catch (error) {
352
- console.error(`Error processing ${file}:`, error);
353
- }
354
- }
355
- await writeFile(outputFile, JSON.stringify(allTestCases, null, 2), 'utf-8');
356
- return {
357
- total: allTestCases.length,
358
- bad: allTestCases.filter(tc => tc.type === 'bad').length,
359
- good: allTestCases.filter(tc => tc.type === 'good').length,
360
- };
361
- }
362
- /**
363
- * Validate rule file structure
364
- */
365
- export function validateRule(rule) {
366
- const errors = [];
367
- if (!rule.title)
368
- errors.push('Missing title');
369
- if (!rule.explanation)
370
- errors.push('Missing explanation');
371
- if (!rule.impact)
372
- errors.push('Missing impact level');
373
- if (rule.examples.length === 0)
374
- errors.push('No examples provided');
375
- const hasIncorrect = rule.examples.some(e => e.label.toLowerCase().includes('incorrect') || e.label.toLowerCase().includes('bad'));
376
- const hasCorrect = rule.examples.some(e => e.label.toLowerCase().includes('correct') || e.label.toLowerCase().includes('good'));
377
- if (!hasIncorrect && !hasCorrect) {
378
- errors.push('Should have at least one Incorrect or Correct example');
379
- }
380
- return { valid: errors.length === 0, errors };
381
- }
382
- /**
383
- * Get impact level color for display
384
- */
385
- export function getImpactColor(impact) {
386
- switch (impact) {
387
- case 'CRITICAL': return '\x1b[31m'; // Red
388
- case 'HIGH': return '\x1b[33m'; // Yellow
389
- case 'MEDIUM-HIGH': return '\x1b[33m';
390
- case 'MEDIUM': return '\x1b[36m'; // Cyan
391
- case 'LOW-MEDIUM': return '\x1b[36m';
392
- case 'LOW': return '\x1b[32m'; // Green
393
- default: return '\x1b[0m';
394
- }
395
- }
396
- /**
397
- * Compare two impact levels
398
- */
399
- export function compareImpact(a, b) {
400
- return IMPACT_ORDER[a] - IMPACT_ORDER[b];
401
- }
402
- // --- Rules TDD (Pressure Testing) ---
403
- const DEFAULT_PRESSURE_CONFIG = {
404
- minExamples: 2,
405
- requireBothTypes: true,
406
- requireRationalization: false,
407
- minCodeLength: 20,
408
- };
409
- const RATIONALIZATION_KEYWORDS = [
410
- 'excuse', 'why wrong', 'avoid', 'rationalization',
411
- '변명', '왜 틀렸', '합리화', '회피',
412
- ];
413
- /**
414
- * Pressure-test a single rule for completeness and quality
415
- * Returns weighted score (0-100) with 70+ = passed
416
- */
417
- export function pressureTestRule(rule, config = {}) {
418
- const cfg = { ...DEFAULT_PRESSURE_CONFIG, ...config };
419
- const issues = [];
420
- // Check 1: Has examples (20 points)
421
- const hasExamples = rule.examples.length >= 1;
422
- if (!hasExamples)
423
- issues.push('No examples provided');
424
- // Check 2: Has both Incorrect + Correct (25 points)
425
- const hasIncorrect = rule.examples.some(e => /incorrect|wrong|bad|❌/i.test(e.label));
426
- const hasCorrect = rule.examples.some(e => /correct|good|✅/i.test(e.label));
427
- const hasBothTypes = hasIncorrect && hasCorrect;
428
- if (!hasBothTypes)
429
- issues.push('Missing Incorrect or Correct example');
430
- // Check 3: Has rationalization counters (20 points)
431
- const fullText = `${rule.explanation} ${rule.examples.map(e => e.code).join(' ')}`;
432
- const hasRationalization = RATIONALIZATION_KEYWORDS.some(kw => fullText.toLowerCase().includes(kw.toLowerCase()));
433
- if (cfg.requireRationalization && !hasRationalization) {
434
- issues.push('No rationalization counter patterns found');
435
- }
436
- // Check 4: Has edge cases / 3+ examples (15 points)
437
- const hasEdgeCases = rule.examples.length >= 3;
438
- if (!hasEdgeCases)
439
- issues.push(`Only ${rule.examples.length} examples (recommend 3+)`);
440
- // Check 5: Example code quality (20 points)
441
- const codeExamples = rule.examples.filter(e => e.code.trim().length > 0);
442
- const avgCodeLength = codeExamples.length > 0
443
- ? codeExamples.reduce((sum, e) => sum + e.code.length, 0) / codeExamples.length
444
- : 0;
445
- const exampleQuality = Math.min(100, Math.round((avgCodeLength / cfg.minCodeLength) * 100));
446
- // Calculate weighted coverage score
447
- const coverageScore = (hasExamples ? 20 : 0) +
448
- (hasBothTypes ? 25 : 0) +
449
- (hasRationalization ? 20 : 0) +
450
- (hasEdgeCases ? 15 : 0) +
451
- Math.round(exampleQuality * 0.2);
452
- return {
453
- ruleId: rule.id,
454
- ruleTitle: rule.title,
455
- scores: {
456
- hasExamples,
457
- hasBothTypes,
458
- hasRationalization,
459
- hasEdgeCases,
460
- exampleQuality,
461
- coverageScore,
462
- },
463
- issues,
464
- passed: coverageScore >= 70,
465
- };
466
- }
467
- /**
468
- * Batch pressure-test all rules in a directory
469
- */
470
- export async function pressureTestRulesDirectory(rulesDir, config = {}) {
471
- const files = await readdir(rulesDir);
472
- const ruleFiles = files.filter(f => f.endsWith('.md') && !f.startsWith('_') && f !== 'README.md');
473
- const results = [];
474
- for (const file of ruleFiles) {
475
- const filePath = join(rulesDir, file);
476
- try {
477
- const { rule } = await parseRuleFile(filePath);
478
- rule.id = file.replace('.md', '');
479
- results.push(pressureTestRule(rule, config));
480
- }
481
- catch {
482
- results.push({
483
- ruleId: file,
484
- ruleTitle: file,
485
- scores: {
486
- hasExamples: false,
487
- hasBothTypes: false,
488
- hasRationalization: false,
489
- hasEdgeCases: false,
490
- exampleQuality: 0,
491
- coverageScore: 0,
492
- },
493
- issues: ['Failed to parse rule file'],
494
- passed: false,
495
- });
496
- }
497
- }
498
- return {
499
- total: results.length,
500
- passed: results.filter(r => r.passed).length,
501
- failed: results.filter(r => !r.passed).length,
502
- results,
503
- };
504
- }
505
- /**
506
- * Format pressure test results as markdown report
507
- */
508
- export function formatPressureTestReport(summary) {
509
- const lines = [];
510
- const passRate = summary.total > 0
511
- ? Math.round((summary.passed / summary.total) * 100)
512
- : 0;
513
- lines.push('# Rules TDD - Pressure Test Report\n');
514
- lines.push(`| Metric | Value |`);
515
- lines.push(`|--------|-------|`);
516
- lines.push(`| Total Rules | ${summary.total} |`);
517
- lines.push(`| Passed | ${summary.passed} |`);
518
- lines.push(`| Failed | ${summary.failed} |`);
519
- lines.push(`| Pass Rate | ${passRate}% |`);
520
- lines.push('');
521
- const failed = summary.results.filter(r => !r.passed);
522
- if (failed.length > 0) {
523
- lines.push('## Failed Rules\n');
524
- for (const r of failed) {
525
- lines.push(`### ${r.ruleId}: ${r.ruleTitle} (${r.scores.coverageScore}/100)\n`);
526
- lines.push(`| Check | Status |`);
527
- lines.push(`|-------|--------|`);
528
- lines.push(`| Examples | ${r.scores.hasExamples ? '✅' : '❌'} |`);
529
- lines.push(`| Both Types | ${r.scores.hasBothTypes ? '✅' : '❌'} |`);
530
- lines.push(`| Rationalization | ${r.scores.hasRationalization ? '✅' : '❌'} |`);
531
- lines.push(`| Edge Cases (3+) | ${r.scores.hasEdgeCases ? '✅' : '❌'} |`);
532
- lines.push(`| Code Quality | ${r.scores.exampleQuality}/100 |`);
533
- if (r.issues.length > 0) {
534
- lines.push(`\n**Issues:** ${r.issues.join(', ')}\n`);
535
- }
536
- }
537
- }
538
- const passed = summary.results.filter(r => r.passed);
539
- if (passed.length > 0) {
540
- lines.push('## Passed Rules\n');
541
- lines.push(`| Rule | Score | Rationalization |`);
542
- lines.push(`|------|-------|-----------------|`);
543
- for (const r of passed) {
544
- const rat = r.scores.hasRationalization ? '✅' : '⚠️';
545
- lines.push(`| ${r.ruleTitle} | ${r.scores.coverageScore}/100 | ${rat} |`);
546
- }
547
- }
548
- return lines.join('\n');
549
- }
550
- //# sourceMappingURL=RuleBuildSystem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RuleBuildSystem.js","sourceRoot":"","sources":["../../../src/infra/lib/RuleBuildSystem.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAKtC,MAAM,CAAC,MAAM,YAAY,GAAgC;IACvD,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC;IACX,YAAY,EAAE,CAAC;IACf,KAAK,EAAE,CAAC;CACT,CAAC;AAwFF;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,IAAI,IAAI,GAAG,OAAO,CAAC;IAEnB,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;oBAC5E,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB;IAE5E,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,mCAAmC;IACnC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,MAAM,GAAgB,QAAQ,CAAC;IACnC,IAAI,iBAAiB,GAAG,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,cAAc,GAAuB,IAAI,CAAC;IAC9C,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,iBAAiB,GAAG,YAAY,CAAC;IACrC,IAAI,gBAAgB,GAAa,EAAE,CAAC;IACpC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,cAAc,GAAa,EAAE,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,cAAc;QACd,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAC7E,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAiB,CAAC;gBAC/C,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,CAAC;YACD,SAAS;QACX,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,cAAc,EAAE,CAAC;oBACnB,cAAc,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClD,cAAc,CAAC,QAAQ,GAAG,iBAAiB,CAAC;gBAC9C,CAAC;gBACD,gBAAgB,GAAG,EAAE,CAAC;gBACtB,WAAW,GAAG,KAAK,CAAC;gBACpB,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,IAAI,CAAC;gBACnB,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC;gBACzD,gBAAgB,GAAG,EAAE,CAAC;gBACtB,cAAc,GAAG,KAAK,CAAC;YACzB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,0BAA0B;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5D,cAAc,GAAG,EAAE,CAAC;gBACtB,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChC,CAAC;YACD,cAAc,GAAG,KAAK,CAAC;YAEvB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnF,cAAc,GAAG;gBACf,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;gBAClD,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;gBACxD,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,iBAAiB;aAC5B,CAAC;YACF,SAAS;QACX,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACpE,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5D,cAAc,GAAG,EAAE,CAAC;gBACtB,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9B,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACxD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACrB,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;oBAC/C,IAAI,CAAC;wBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACL,CAAC;YACD,SAAS;QACX,CAAC;QAED,eAAe;QACf,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,WAAW,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YACpD,CAAC;iBAAM,IAAI,cAAc,IAAI,cAAc,EAAE,CAAC;gBAC5C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;IAED,uCAAuC;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,UAAU,GAA2B;QACzC,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC;KACZ,CAAC;IAEF,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9F,MAAM,IAAI,GAAS;QACjB,EAAE,EAAE,EAAE;QACN,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,KAAK;QACjC,OAAO;QACP,MAAM,EAAG,WAAW,CAAC,MAAsB,IAAI,MAAM;QACrD,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,IAAI,iBAAiB;QACrE,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;QAC/B,QAAQ;QACR,UAAU,EAAE,WAAW,CAAC,UAAU;YAChC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,CAAC,CAAC,UAAU;QACd,IAAI,EAAE,WAAW,CAAC,IAAI;YACpB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChD,CAAC,CAAC,SAAS;KACd,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAmB,EACnB,QAOC;IAED,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,KAAK,MAAM,CAAC;IACnC,EAAE,IAAI,aAAa,QAAQ,CAAC,OAAO,MAAM,CAAC;IAC1C,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,EAAE,IAAI,GAAG,QAAQ,CAAC,YAAY,IAAI,CAAC;IACrC,CAAC;IACD,EAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,MAAM,CAAC;IAC7B,EAAE,IAAI,eAAe,CAAC;IACtB,EAAE,IAAI,yEAAyE,CAAC;IAChF,EAAE,IAAI,kEAAkE,CAAC;IACzE,EAAE,IAAI,SAAS,CAAC;IAChB,EAAE,IAAI,iBAAiB,CAAC;IACxB,EAAE,IAAI,GAAG,QAAQ,CAAC,QAAQ,MAAM,CAAC;IACjC,EAAE,IAAI,SAAS,CAAC;IAChB,EAAE,IAAI,0BAA0B,CAAC;IAEjC,eAAe;IACf,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QACvF,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,KAAK,MAAM,MAAM,SAAS,OAAO,CAAC,MAAM,MAAM,CAAC;QACpF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC3B,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACxG,EAAE,IAAI,QAAQ,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,MAAM,UAAU,KAAK,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,IAAI,WAAW,CAAC;IAElB,oBAAoB;IACpB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,EAAE,IAAI,MAAM,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,MAAM,CAAC;QACnD,EAAE,IAAI,aAAa,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;QAC/G,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,MAAM,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC3B,EAAE,IAAI,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,MAAM,CAAC;YACzC,EAAE,IAAI,aAAa,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;YACtG,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,MAAM,CAAC;YAEhC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC9B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACxB,EAAE,IAAI,KAAK,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,QAAQ,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,EAAE,IAAI,KAAK,OAAO,CAAC,KAAK,SAAS,CAAC;gBACpC,CAAC;gBACD,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBACxC,EAAE,IAAI,SAAS,OAAO,CAAC,QAAQ,IAAI,YAAY,IAAI,CAAC;oBACpD,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC;oBAC1B,EAAE,IAAI,YAAY,CAAC;gBACrB,CAAC;gBACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;oBAC3B,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,MAAM,CAAC;gBACxC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,EAAE,IAAI,cAAc,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACtF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,IAAI,SAAS,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,EAAE,IAAI,mBAAmB,CAAC;QAC1B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACrC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,UAAkB,EAClB,QAQC;IAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,WAAW,CAC7D,CAAC,IAAI,EAAE,CAAC;IAET,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;YACpD,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE;gBACvB,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,WAAW,OAAO,EAAE;gBACjD,MAAM,EAAE,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM;gBAC1C,YAAY,EAAE,WAAW,EAAE,YAAY;gBACvC,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;QACL,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,4BAA4B;IAC5B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACpC,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAEtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,EAAE;QAC1C,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjG,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE/C,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9F,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEnE,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC;oBACb,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,SAAS,EAAE,IAAI,CAAC,KAAK;oBACrB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;oBAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAY;oBAC1C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG,OAAO,CAAC,KAAK,gBAAgB,IAAI,CAAC,KAAK,EAAE;iBACjF,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,UAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,WAAW,CAC7D,CAAC;IAEF,MAAM,YAAY,GAAe,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe;YAClD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAE5E,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,MAAM;QAC1B,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM;QACxD,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM;KAC3D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU;IACrC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC1C,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACrF,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACxC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CACpF,CAAC;IAEF,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM;QAC1C,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,CAAM,SAAS;QAC9C,KAAK,aAAa,CAAC,CAAC,OAAO,UAAU,CAAC;QACtC,KAAK,QAAQ,CAAC,CAAC,OAAO,UAAU,CAAC,CAAI,OAAO;QAC5C,KAAK,YAAY,CAAC,CAAC,OAAO,UAAU,CAAC;QACrC,KAAK,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC,CAAO,QAAQ;QAC7C,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,CAAc,EAAE,CAAc;IAC1D,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,uCAAuC;AAEvC,MAAM,uBAAuB,GAA2B;IACtD,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,IAAI;IACtB,sBAAsB,EAAE,KAAK;IAC7B,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC/B,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB;IACjD,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI;CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAU,EACV,SAA0C,EAAE;IAE5C,MAAM,GAAG,GAAG,EAAE,GAAG,uBAAuB,EAAE,GAAG,MAAM,EAAE,CAAC;IACtD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,oCAAoC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,WAAW;QAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAEtD,oDAAoD;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC1C,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CACvC,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACxC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAChC,CAAC;IACF,MAAM,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC;IAChD,IAAI,CAAC,YAAY;QAAE,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAEvE,oDAAoD;IACpD,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACnF,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAC5D,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAClD,CAAC;IACF,IAAI,GAAG,CAAC,sBAAsB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,oDAAoD;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,YAAY;QAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,0BAA0B,CAAC,CAAC;IAEvF,4CAA4C;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;QAC3C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM;QAC/E,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAE5F,oCAAoC;IACpC,MAAM,aAAa,GACjB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;IAEnC,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,SAAS,EAAE,IAAI,CAAC,KAAK;QACrB,MAAM,EAAE;YACN,WAAW;YACX,YAAY;YACZ,kBAAkB;YAClB,YAAY;YACZ,cAAc;YACd,aAAa;SACd;QACD,MAAM;QACN,MAAM,EAAE,aAAa,IAAI,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,QAAgB,EAChB,SAA0C,EAAE;IAE5C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,WAAW,CAC7D,CAAC;IAEF,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE;oBACN,WAAW,EAAE,KAAK;oBAClB,YAAY,EAAE,KAAK;oBACnB,kBAAkB,EAAE,KAAK;oBACzB,YAAY,EAAE,KAAK;oBACnB,cAAc,EAAE,CAAC;oBACjB,aAAa,EAAE,CAAC;iBACjB;gBACD,MAAM,EAAE,CAAC,2BAA2B,CAAC;gBACrC,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;QAC5C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;QAC7C,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAgC;IACvE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;QAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QACpD,CAAC,CAAC,CAAC,CAAC;IAEN,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,KAAK,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,SAAS,CAAC,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC/E,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,cAAc,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,UAAU,GAAG,IAAI,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Skill Quality Gate
3
- * 저장할 메모리/스킬의 품질을 검증
4
- *
5
- * @deprecated Not wired into the vibe runtime (no hook/skill/CLI consumer).
6
- * No consumer in the shipped pipeline.
7
- * Retained for API compatibility; may be removed in a future major.
8
- */
9
- export interface QualityCheckResult {
10
- isValid: boolean;
11
- score: number;
12
- issues: string[];
13
- suggestions: string[];
14
- category: 'principle' | 'discovery' | 'decision' | 'code' | 'generic';
15
- }
16
- /**
17
- * 메모리/스킬 품질 검증
18
- */
19
- export declare function validateSkillQuality(key: string, value: string, category?: string): QualityCheckResult;
20
- /**
21
- * 원칙 형태로 변환 도우미
22
- */
23
- export declare function suggestPrincipleFormat(value: string): string;
24
- /**
25
- * 스킬 분류
26
- */
27
- export declare function classifySkill(value: string): {
28
- type: 'principle' | 'discovery' | 'decision' | 'reference' | 'generic';
29
- confidence: number;
30
- };
31
- /**
32
- * 저장 전 검증 래퍼
33
- */
34
- export declare function validateBeforeSave(key: string, value: string, options?: {
35
- bypassValidation?: boolean;
36
- minScore?: number;
37
- }): {
38
- canSave: boolean;
39
- result: QualityCheckResult;
40
- formattedFeedback: string;
41
- };
42
- //# sourceMappingURL=SkillQualityGate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkillQualityGate.d.ts","sourceRoot":"","sources":["../../../src/infra/lib/SkillQualityGate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;CACvE;AAoDD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,CAyFpB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;IAC5C,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IACvE,UAAU,EAAE,MAAM,CAAC;CACpB,CAsCA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CA6B7E"}