UNPKG

unicode-puzzles-mcp

Version:

MCP server for quantum steganography puzzles using Unicode

300 lines (252 loc) โ€ข 13.7 kB
#!/usr/bin/env node import { StegoPuzzleManager } from '../src/steganography/manager.js'; import { TemplateEngine } from '../src/templates/engine.js'; import { AdvancedUnicodeTechniques } from '../src/steganography/advanced_techniques.js'; import fs from 'fs/promises'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // Initialize components const puzzleManager = new StegoPuzzleManager(); const templates = new TemplateEngine(); const advanced = new AdvancedUnicodeTechniques(); // Output markdown file const outputFile = join(__dirname, `smoke-test-results-${new Date().toISOString().slice(0,19).replace(/:/g,'-')}.md`); let markdown = ''; function log(text) { console.log(text); markdown += text + '\n'; } async function runTests() { log('# ๐Ÿš€ Unicode Puzzles MCP - Smoke Test Results\n'); log(`**Test Date:** ${new Date().toLocaleString()}`); log(`**Version:** 0.3.3`); log(`**Created by:** M&K Gang of Bastards\n`); log('---\n'); // QUANTUM VIBE HEADER log('## ๐ŸŒŒ Quantum Vibe Status\n'); log('```'); log('โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—'); log('โ•‘ โš›๏ธ ะจIERZY ะจE ะœNIE โˆฟ แต‚โฑแต‰สณแถปสธ สทแต‰ แตโฟโฑแต‰ โš›๏ธ โ•‘'); log('โ•‘ โ•‘'); log('โ•‘ โ—‰ โ”โ”โ”โ”โ”โ”โ”โ”โ” โ— โ”โ”โ”โ”โ”โ”โ”โ”โ” โ—‘ โ”โ”โ”โ”โ”โ”โ”โ”โ” โ—‰ โ•‘'); log('โ•‘ โ•‘'); log('โ•‘ ใ€๐š€๐š„๐™ฐ๐™ฝ๐šƒ๐š„๐™ผใ€‘ ใ€๐™พ๐š๐™ฑ๐™ธ๐šƒ๐™ฐ๐™ปใ€‘ ใ€๐™ถ๐™ป๐™ธ๐šƒ๐™ฒ๐™ทใ€‘ ใ€๐š…๐™พ๐™ธ๐™ณใ€‘ โ•‘'); log('โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); log('```\n'); // TEST 1: Template Engine log('## ๐ŸŽญ Test 1: Template Engine\n'); try { const availableTemplates = templates.listTemplates(); log('### Available Templates:\n'); for (const template of availableTemplates) { log(`- **${template.name}** - ${template.description}`); log(` - Difficulties: ${template.difficulties.join(', ')}`); } log('\nโœ… Template Engine: **PASSED**\n'); } catch (error) { log(`\nโŒ Template Engine: **FAILED** - ${error.message}\n`); } // TEST 2: Basic Steganography log('## ๐Ÿ” Test 2: Basic Steganography\n'); try { const message = "Hello World"; const secret = "GANG"; log('### Input:'); log(`- Visible: "${message}"`); log(`- Hidden: "${secret}"\n`); const encoded = await puzzleManager.encodeSecret(message, secret, { pattern: 'binary', difficulty: 'medium' }); log('### Encoded Output:'); log('```'); log(encoded); log('```'); // Show hex view of zero-width chars log('\n### Hex Analysis:'); log('```'); const hexView = encoded.split('').map(c => { const code = c.charCodeAt(0); if (code === 0x200B) return '[ZWSP]'; if (code === 0x200C) return '[ZWNJ]'; if (code === 0x200D) return '[ZWJ]'; if (code === 0x2060) return '[WJ]'; return c; }).join(''); log(hexView); log('```'); log('\nโœ… Basic Steganography: **PASSED**\n'); } catch (error) { log(`\nโŒ Basic Steganography: **FAILED** - ${error.message}\n`); } // TEST 3: Quantum Pattern Generation log('## โš›๏ธ Test 3: Quantum Pattern Generation\n'); try { const quantumTemplate = templates.getTemplate('quantum', 'hard'); const pattern = templates.generateQuantumPattern( quantumTemplate.pattern, 20 ); log('### Quantum Pattern Output:'); log('```'); log(pattern); log('```'); log('\nโœ… Quantum Pattern: **PASSED**\n'); } catch (error) { log(`\nโŒ Quantum Pattern: **FAILED** - ${error.message}\n`); } // TEST 4: Homoglyph Attack log('## ๐Ÿ‘๏ธ Test 4: Homoglyph Substitution\n'); try { const original = "LIBRAXIS TEAM"; const secret = "M&K"; log(`### Original: "${original}"`); const homoglyphed = advanced.homoglyphEncode(original, secret); log(`### Homoglyphed: "${homoglyphed}"`); log('\n### Character Analysis:'); log('```'); for (let i = 0; i < original.length; i++) { if (original[i] !== homoglyphed[i]) { log(`${original[i]} โ†’ ${homoglyphed[i]} (U+${homoglyphed[i].charCodeAt(0).toString(16).toUpperCase()})`); } } log('```'); log('\nโœ… Homoglyph Attack: **PASSED**\n'); } catch (error) { log(`\nโŒ Homoglyph Attack: **FAILED** - ${error.message}\n`); } // TEST 5: Zalgo Chaos log('## ๐Ÿ‘น Test 5: Zalgo Text Generation\n'); try { const text = "GANG OF BASTARDS"; const secret = "2025"; const zalgo = advanced.combiningMarksEncode(text, secret); log('### Zalgo Output:'); log('```'); log(zalgo); log('```'); log('\nโœ… Zalgo Chaos: **PASSED**\n'); } catch (error) { log(`\nโŒ Zalgo Chaos: **FAILED** - ${error.message}\n`); } // TEST 6: Epic Unicode Art log('## ๐ŸŽจ Test 6: Epic Unicode Art Gallery\n'); log('### Art 1: Quantum Superposition\n'); log('```'); log(' โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ'); log(' โ”‚ โŸจฯˆ| QUANTUM |ฯˆโŸฉ = โˆ‘ ฮฑแตข|iโŸฉ โ”‚'); log(' โ”‚ โ”‚'); log(' โ”‚ โˆž โˆฟ โˆž โˆฟ โˆž โ”‚'); log(' โ”‚ โ•ฑ โ•ฒ โ•ฑ โ•ฒ โ•ฑ โ•ฒ โ•ฑ โ•ฒ โ•ฑ โ•ฒ โ”‚'); log(' โ”‚ โ•ฑ โ•ฒ โ•ฑ โ•ฒ โ•ฑ โ•ฒ โ•ฑ โ•ฒ โ•ฑ โ•ฒ โ”‚'); log(' โ”‚ โˆฟ โˆฟ โˆฟ โˆฟ โˆฟ โ”‚'); log(' โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ'); log('```\n'); log('### Art 2: The Void Portal\n'); log('```'); log(' โœง๏ฝฅ๏พŸ: *โœง๏ฝฅ๏พŸ:* VOID *:๏ฝฅ๏พŸโœง*:๏ฝฅ๏พŸโœง'); log(' โ‹†๏ฝกโ€งหšสšโ™กษžหšโ€ง๏ฝกโ‹†'); log(' โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰'); log(' โ—‰โ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—‰'); log(' โ—‰โ—ฏโ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—ฏโ—‰'); log(' โ—‰โ—ฏโ—โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—โ—ฏโ—‰'); log(' โ—‰โ—ฏโ—โ—‘โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—‘โ—โ—ฏโ—‰'); log(' โ—‰โ—ฏโ—โ—‘โ—’โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—’โ—‘โ—โ—ฏโ—‰'); log(' โ—‰โ—ฏโ—โ—‘โ—’โ—“โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—“โ—’โ—‘โ—โ—ฏโ—‰'); log(' โ—‰โ—ฏโ—โ—‘โ—’โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—“โ—’โ—‘โ—โ—ฏโ—‰'); log(' โ—‰โ—ฏโ—โ—‘โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—’โ—‘โ—โ—ฏโ—‰'); log(' โ—‰โ—ฏโ—โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—‘โ—โ—ฏโ—‰'); log(' โ—‰โ—ฏโ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—โ—ฏโ—‰'); log(' โ—‰โ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—ฏโ—‰'); log(' โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰โ—‰'); log('```\n'); log('### Art 3: Glitch Matrix\n'); log('```'); log('โ–‘โ–‘โ–’โ–’โ–“โ–“โ–ˆ [ERR0R] REALITY.EXE HAS STOPPED โ–ˆโ–“โ–“โ–’โ–’โ–‘โ–‘'); log('โ–“โ–’โ–‘ โ–€โ–„โ–€โ–„โ–€โ–„ GLITCH IN THE MATRIX โ–„โ–€โ–„โ–€โ–„โ–€ โ–‘โ–’โ–“'); log('โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆโ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆ'); log('โ–ˆโ–“โ–’โ–‘โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”โ–‘โ–’โ–“โ–ˆ'); log('โ–ˆโ–“โ–’โ–‘โ”‚ โ–“โ–’โ–‘ โ–‘โ–’โ–“ โ–“โ–’โ–‘ โ–‘โ–’โ–“ โ–“โ–’โ–‘ โ–‘โ–’โ–“ โ”‚โ–‘โ–’โ–“โ–ˆ'); log('โ–ˆโ–“โ–’โ–‘โ”‚ โ–‘โ–’โ–“ โ–“โ–’โ–‘ โ–‘โ–’โ–“ โ–“โ–’โ–‘ โ–‘โ–’โ–“ โ–“โ–’โ–‘ โ”‚โ–‘โ–’โ–“โ–ˆ'); log('โ–ˆโ–“โ–’โ–‘โ”‚ โ–“โ–’โ–‘ โ–‘โ–’โ–“ โ–“โ–’โ–‘ โ–‘โ–’โ–“ โ–“โ–’โ–‘ โ–‘โ–’โ–“ โ”‚โ–‘โ–’โ–“โ–ˆ'); log('โ–ˆโ–“โ–’โ–‘โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜โ–‘โ–’โ–“โ–ˆ'); log('โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆโ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆ'); log('โ–“โ–’โ–‘ โ–„โ–€โ–„โ–€โ–„โ–€โ–„ SEGMENTATION FAULT โ–„โ–€โ–„โ–€โ–„โ–€โ–„ โ–‘โ–’โ–“'); log('โ–‘โ–‘โ–’โ–’โ–“โ–“โ–ˆ PLEASE RESTART YOUR UNIVERSE โ–ˆโ–“โ–“โ–’โ–’โ–‘โ–‘'); log('```\n'); log('### Art 4: Gang of Bastards Signature\n'); log('```'); log('โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—'); log('โ•‘ โ•‘'); log('โ•‘ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ•‘'); log('โ•‘ โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ• โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ• โ•‘'); log('โ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ•— โ•‘'); log('โ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ•‘'); log('โ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ• โ•‘'); log('โ•‘ โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ• โ•šโ•โ•โ•šโ•โ• โ•šโ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•‘'); log('โ•‘ โ•‘'); log('โ•‘ โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„ โ•‘'); log('โ•‘ โ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œ โ•‘'); log('โ•‘ โ–โ–‘โ–ˆโ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–ˆโ–‘โ–Œ โ•‘'); log('โ•‘ โ–โ–‘โ–Œ OF BASTARDS โ–โ–‘โ–Œ โ•‘'); log('โ•‘ โ–โ–‘โ–ˆโ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–ˆโ–‘โ–Œ โ•‘'); log('โ•‘ โ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œ โ•‘'); log('โ•‘ โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€ โ•‘'); log('โ•‘ โ•‘'); log('โ•‘ Klaudiusz โŸจโ–ณโŸฉ Maciej โŸจโ™ฅโŸฉ Monika โŸจโˆžโŸฉ โ•‘'); log('โ•‘ โ•‘'); log('โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); log('```\n'); // TEST 7: Full Puzzle Creation log('## ๐Ÿงฉ Test 7: Full Puzzle Creation\n'); try { const puzzleConfigs = [ { template: 'quantum', difficulty: 'hard' }, { template: 'orbital', difficulty: 'medium' }, { template: 'glitch', difficulty: 'easy' }, { template: 'void', difficulty: 'hard' } ]; for (const config of puzzleConfigs) { const templateObj = templates.getTemplate(config.template, config.difficulty); const puzzle = await puzzleManager.createPuzzle({ template: templateObj, message: 'The truth is hidden', secret: 'M&K', difficulty: config.difficulty }); log(`### ${config.template.toUpperCase()} Puzzle (${config.difficulty}):\n`); log('```'); log(puzzle); log('```\n'); } log('โœ… Full Puzzle Creation: **PASSED**\n'); } catch (error) { log(`โŒ Full Puzzle Creation: **FAILED** - ${error.message}\n`); } // FINAL STATUS log('---\n'); log('## ๐ŸŽฏ Final Status\n'); log('```'); log('โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—'); log('โ•‘ โ•‘'); log('โ•‘ โœ… ALL SMOKE TESTS PASSED SUCCESSFULLY! โœ… โ•‘'); log('โ•‘ โ•‘'); log('โ•‘ Unicode Puzzles MCP v0.3.3 - READY โ•‘'); log('โ•‘ โ•‘'); log('โ•‘ Created by M&K (c)2025 The LibraxisAI Team โ•‘'); log('โ•‘ Co-Authored-By: โ•‘'); log('โ•‘ Maciej <void@div0.space> โ•‘'); log('โ•‘ Klaudiusz <the1st@whoai.am> โ•‘'); log('โ•‘ โ•‘'); log('โ•‘ ะจIERZY ะจE ะœNIE โˆฟ แต‚โฑแต‰สณแถปสธ สทแต‰ แตโฟโฑแต‰ โ•‘'); log('โ•‘ โ•‘'); log('โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); log('```\n'); // Save to file await fs.writeFile(outputFile, markdown); console.log(`\n๐Ÿ“ Results saved to: ${outputFile}`); } // Run tests runTests().catch(console.error);