mayank@portfolio ~ terminal
online
mayank@portfolio ~ $
' }, '/home/mayank/projects/portfolio/terminal.html': { type: 'file', perms: '-rw-r--r--', owner: 'mayank', size: 5600, content: '[This file - terminal emulator]' }, '/home/mayank/projects/goforge': { type: 'dir', perms: 'drwxr-xr-x', owner: 'mayank', size: 4096, children: ['main.go','go.mod'] }, '/home/mayank/projects/goforge/main.go': { type: 'file', perms: '-rw-r--r--', owner: 'mayank', size: 256, content: 'package main\n\nimport "fmt"\n\nfunc main() {\n fmt.Println("GoForge - Log Analytics Engine")\n}' }, '/home/mayank/projects/goforge/go.mod': { type: 'file', perms: '-rw-r--r--', owner: 'mayank', size: 48, content: 'module goforge\n\ngo 1.21' }, '/tmp': { type: 'dir', perms: 'drwxrwxrwt', owner: 'root', size: 4096, children: [] }, '/var': { type: 'dir', perms: 'drwxr-xr-x', owner: 'root', size: 4096, children: ['log','cache','tmp','run'] }, '/var/log': { type: 'dir', perms: 'drwxr-xr-x', owner: 'root', size: 4096, children: ['syslog','dmesg','auth.log'] }, '/var/log/syslog': { type: 'file', perms: '-rw-r-----', owner: 'root', size: 2048, content: 'Jun 22 00:00:01 alpine-portfolio kernel: Linux version 6.6.0 (builder@alpine)\nJun 22 00:00:01 alpine-portfolio systemd[1]: Started Virtual Alpine Container\nJun 22 00:00:02 alpine-portfolio kernel: Mounting virtual filesystems...\nJun 22 00:00:02 alpine-portfolio kernel: Virtual Alpine ready.' }, '/var/log/dmesg': { type: 'file', perms: '-rw-r-----', owner: 'root', size: 512, content: '[ 0.000000] Linux version 6.6.0 (builder@alpine)\n[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz\n[ 0.000000] BIOS-provided physical RAM map\n[ 0.000000] NX (Execute Disable) protection: active' }, '/var/log/auth.log': { type: 'file', perms: '-rw-r-----', owner: 'root', size: 256, content: 'Jun 22 00:00:01 alpine-portfolio sshd[1000]: Server listening on 0.0.0.0 port 22\nJun 22 00:00:01 alpine-portfolio sshd[1000]: Generating host key...' }, '/var/cache': { type: 'dir', perms: 'drwxr-xr-x', owner: 'root', size: 4096, children: ['apk'] }, '/var/cache/apk': { type: 'dir', perms: 'drwxr-xr-x', owner: 'root', size: 4096, children: [] }, '/var/tmp': { type: 'dir', perms: 'drwxrwxrwt', owner: 'root', size: 4096, children: [] }, '/var/run': { type: 'dir', perms: 'drwxr-xr-x', owner: 'root', size: 4096, children: [] }, '/root': { type: 'dir', perms: 'drwx------', owner: 'root', size: 4096, children: ['.bash_history','.bashrc'] }, '/root/.bash_history': { type: 'file', perms: '-rw-------', owner: 'root', size: 64, content: 'apk update\napk add curl wget python3\nneofetch' }, '/root/.bashrc': { type: 'file', perms: '-rw-r--r--', owner: 'root', size: 64, content: 'export PS1="\\u@alpine:\\w# "' }, '/proc': { type: 'dir', perms: 'dr-xr-xr-x', owner: 'root', size: 4096, children: ['cpuinfo','meminfo','version','uptime','loadavg','mounts','self'] }, '/proc/cpuinfo': { type: 'file', perms: '-r--r--r--', owner: 'root', size: 256, content: 'processor\t: 0\nvendor_id\t: VirtualCPU\nmodel name\t: Virtual Alpine vCPU @ 3.20GHz\ncpu MHz\t\t: 3200.000\ncache size\t: 16384 KB\nbogomips\t: 6400.00' }, '/proc/meminfo': { type: 'file', perms: '-r--r--r--', owner: 'root', size: 256, content: 'MemTotal: 8096000 kB\nMemFree: 4920000 kB\nMemAvailable: 5530000 kB\nBuffers: 256000 kB\nCached: 1024000 kB\nSwapTotal: 2097152 kB\nSwapFree: 2044000 kB' }, '/proc/version': { type: 'file', perms: '-r--r--r--', owner: 'root', size: 128, content: 'Linux version 6.6.0 (builder@alpine) (GCC 13.2.1) #1-Alpine SMP PREEMPT_DYNAMIC' }, '/proc/uptime': { type: 'file', perms: '-r--r--r--', owner: 'root', size: 32, content: '86400.00 172800.00' }, '/proc/loadavg': { type: 'file', perms: '-r--r--r--', owner: 'root', size: 32, content: '0.15 0.10 0.05 1/420 1000' }, '/proc/mounts': { type: 'file', perms: '-r--r--r--', owner: 'root', size: 256, content: '/dev/sda1 / ext4 rw,noatime 0 0\ntmpfs /tmp tmpfs rw,nosuid,nodev,noexec 0 0\nproc /proc proc rw,nosuid,nodev,noexec 0 0' }, '/proc/self': { type: 'dir', perms: 'dr-xr-xr-x', owner: 'root', size: 4096, children: ['status','cmdline'] }, '/proc/self/status': { type: 'file', perms: '-r--r--r--', owner: 'root', size: 128, content: 'Name:\tbash\nState:\tS (sleeping)\nPid:\t1000\nPPid:\t999\nUid:\t1000\t1000\t1000\t1000' }, '/proc/self/cmdline': { type: 'file', perms: '-r--r--r--', owner: 'root', size: 16, content: '/bin/bash' }, '/sys': { type: 'dir', perms: 'dr-xr-xr-x', owner: 'root', size: 4096, children: ['kernel','module','devices'] }, '/sys/kernel': { type: 'dir', perms: 'dr-xr-xr-x', owner: 'root', size: 4096, children: ['hostname','ostype','osrelease'] }, '/sys/kernel/hostname': { type: 'file', perms: '-rw-r--r--', owner: 'root', size: 16, content: 'alpine-portfolio' }, '/sys/kernel/ostype': { type: 'file', perms: '-rw-r--r--', owner: 'root', size: 5, content: 'Linux' }, '/sys/kernel/osrelease': { type: 'file', perms: '-rw-r--r--', owner: 'root', size: 5, content: '6.6.0' }, '/sys/module': { type: 'dir', perms: 'dr-xr-xr-x', owner: 'root', size: 4096, children: [] }, '/sys/devices': { type: 'dir', perms: 'dr-xr-xr-x', owner: 'root', size: 4096, children: ['virtual'] }, '/sys/devices/virtual': { type: 'dir', perms: 'dr-xr-xr-x', owner: 'root', size: 4096, children: [] }, '/dev': { type: 'dir', perms: 'drwxr-xr-x', owner: 'root', size: 4096, children: ['null','zero','random','urandom','tty','console','sda1'] }, '/dev/null': { type: 'file', perms: 'crw-rw-rw-', owner: 'root', size: 0, content: '' }, '/dev/zero': { type: 'file', perms: 'crw-rw-rw-', owner: 'root', size: 0, content: '' }, '/dev/random': { type: 'file', perms: 'crw-rw-rw-', owner: 'root', size: 0, content: '' }, '/dev/urandom': { type: 'file', perms: 'crw-rw-rw-', owner: 'root', size: 0, content: '' }, '/dev/tty': { type: 'file', perms: 'crw-rw-rw-', owner: 'root', size: 0, content: '' }, '/dev/console': { type: 'file', perms: 'crw-------', owner: 'root', size: 0, content: '' }, '/dev/sda1': { type: 'file', perms: 'brw-rw----', owner: 'root', size: 0, content: '' }, }; // Simulated package database (apk) const APK_DB = { 'alpine-base': { version: '3.19.1-r0', size: '4.2M', desc: 'Alpine base system' }, 'alpine-keys': { version: '2.6-r0', size: '12K', desc: 'Alpine package signing keys' }, 'apk-tools': { version: '2.14.0-r0', size: '1.1M', desc: 'Alpine Package Keeper' }, 'busybox': { version: '1.36.1-r2', size: '980K', desc: 'Size optimized utilities' }, 'musl': { version: '1.2.4-r2', size: '620K', desc: 'The musl c library' }, 'musl-utils': { version: '1.2.4-r2', size: '48K', desc: 'Musl utils' }, 'zlib': { version: '1.3-r2', size: '112K', desc: 'Compression library' }, 'busybox-initscripts': { version: '3.6-r2', size: '24K', desc: 'BusyBox init scripts' }, 'scanelf': { version: '1.3.7-r0', size: '88K', desc: 'Scan ELF binaries' }, 'openrc': { version: '0.50.1-r0', size: '280K', desc: 'Init system' }, 'nginx': { version: '1.24.0-r0', size: '1.8M', desc: 'HTTP and reverse proxy server' }, 'apache2': { version: '2.4.59-r0', size: '3.2M', desc: 'Apache HTTP Server' }, 'caddy': { version: '2.7.6-r0', size: '8.4M', desc: 'Web server with automatic HTTPS' }, 'postgresql16': { version: '16.2-r0', size: '5.8M', desc: 'PostgreSQL database server' }, 'postgresql16-client': { version: '16.2-r0', size: '1.2M', desc: 'PostgreSQL client' }, 'mariadb': { version: '10.11.6-r0', size: '8.2M', desc: 'MariaDB database server' }, 'redis': { version: '7.2.4-r0', size: '1.6M', desc: 'In-memory data store' }, 'mongodb': { version: '7.0.5-r0', size: '42M', desc: 'Document database' }, 'sqlite': { version: '3.44.2-r0', size: '640K', desc: 'SQL database engine' }, 'python3': { version: '3.12.1-r0', size: '8.4M', desc: 'Python 3 programming language' }, 'python3-dev': { version: '3.12.1-r0', size: '1.2M', desc: 'Python 3 development files' }, 'py3-pip': { version: '23.3.2-r0', size: '2.8M', desc: 'pip for Python 3' }, 'nodejs': { version: '20.11.0-r0', size: '12M', desc: 'JavaScript runtime' }, 'npm': { version: '10.2.4-r0', size: '4.8M', desc: 'Node package manager' }, 'go': { version: '1.21.6-r0', size: '58M', desc: 'Go programming language' }, 'rust': { version: '1.74.1-r0', size: '82M', desc: 'Rust programming language' }, 'cargo': { version: '1.74.1-r0', size: '12M', desc: 'Rust package manager' }, 'gcc': { version: '13.2.1-r0', size: '14M', desc: 'GNU Compiler Collection' }, 'g++': { version: '13.2.1-r0', size: '8.2M', desc: 'GNU C++ compiler' }, 'make': { version: '4.4.1-r0', size: '420K', desc: 'GNU make' }, 'cmake': { version: '3.28.1-r0', size: '6.8M', desc: 'Cross-platform build system' }, 'ninja': { version: '1.11.1-r0', size: '320K', desc: 'Build system' }, 'openjdk17': { version: '17.0.9-r0', size: '78M', desc: 'OpenJDK 17' }, 'kotlin': { version: '1.9.22-r0', size: '48M', desc: 'Kotlin programming language' }, 'ruby': { version: '3.2.3-r0', size: '18M', desc: 'Ruby programming language' }, 'php82': { version: '8.2.15-r0', size: '6.8M', desc: 'PHP 8.2' }, 'lua5.4': { version: '5.4.6-r0', size: '320K', desc: 'Lua scripting language' }, 'perl': { version: '5.38.2-r0', size: '14M', desc: 'Perl programming language' }, 'r-base': { version: '4.3.2-r0', size: '38M', desc: 'R statistical computing' }, 'julia': { version: '1.10.0-r0', size: '120M', desc: 'Julia language' }, 'scala': { version: '3.4.0-r0', size: '42M', desc: 'Scala language' }, 'erlang': { version: '26.2.2-r0', size: '58M', desc: 'Erlang/OTP' }, 'elixir': { version: '1.16.0-r0', size: '4.8M', desc: 'Elixir language' }, 'haskell-stack': { version: '2.13.1-r0', size: '28M', desc: 'Haskell build tool' }, 'ocaml': { version: '5.1.1-r0', size: '42M', desc: 'OCaml language' }, 'dart': { version: '3.2.5-r0', size: '18M', desc: 'Dart language' }, 'flutter': { version: '3.16.0-r0', size: '68M', desc: 'Flutter framework' }, 'curl': { version: '8.5.0-r0', size: '320K', desc: 'URL transfer tool' }, 'wget': { version: '1.21.4-r0', size: '580K', desc: 'Network retriever' }, 'httpie': { version: '3.2.2-r0', size: '280K', desc: 'HTTP client' }, 'openssh': { version: '9.6_p1-r0', size: '1.4M', desc: 'OpenSSH client and server' }, 'openssl': { version: '3.1.4-r2', size: '2.8M', desc: 'TLS/SSL toolkit' }, 'git': { version: '2.43.0-r0', size: '3.8M', desc: 'Version control system' }, 'vim': { version: '9.0.2136-r0', size: '2.8M', desc: 'Vi IMproved editor' }, 'nano': { version: '7.2-r0', size: '280K', desc: 'Nano text editor' }, 'tmux': { version: '3.3a-r2', size: '680K', desc: 'Terminal multiplexer' }, 'screen': { version: '4.9.1-r0', size: '580K', desc: 'GNU screen' }, 'rsync': { version: '3.2.7-r0', size: '420K', desc: 'File synchronization' }, 'tar': { version: '1.35-r0', size: '780K', desc: 'GNU tar' }, 'gzip': { version: '1.13-r0', size: '120K', desc: 'GNU gzip' }, 'bzip2': { version: '1.0.8-r1', size: '88K', desc: 'bzip2 compressor' }, 'xz': { version: '5.4.5-r0', size: '220K', desc: 'XZ Utils' }, 'zip': { version: '3.0-r9', size: '280K', desc: 'ZIP archiver' }, 'unzip': { version: '6.0-r14', size: '180K', desc: 'ZIP extractor' }, 'patch': { version: '2.7.6-r7', size: '220K', desc: 'Apply patches' }, 'diffutils': { version: '3.10-r0', size: '380K', desc: 'GNU diff' }, 'findutils': { version: '4.9.0-r0', size: '680K', desc: 'GNU find' }, 'grep': { version: '3.11-r0', size: '320K', desc: 'GNU grep' }, 'sed': { version: '4.9-r0', size: '380K', desc: 'GNU sed' }, 'gawk': { version: '5.3.0-r0', size: '1.2M', desc: 'GNU awk' }, 'coreutils': { version: '9.4-r0', size: '2.8M', desc: 'GNU core utilities' }, 'util-linux': { version: '2.39.2-r0', size: '3.8M', desc: 'Linux utilities' }, 'procps': { version: '4.4.0-r0', size: '680K', desc: 'Process utilities' }, 'sysstat': { version: '12.7.2-r0', size: '580K', desc: 'System statistics' }, 'iproute2': { version: '6.6.0-r0', size: '1.4M', desc: 'IP routing utilities' }, 'iptables': { version: '1.8.10-r0', size: '1.2M', desc: 'Firewall tools' }, 'nftables': { version: '1.0.6-r0', size: '880K', desc: 'Netfilter tables' }, 'traceroute': { version: '2.1.2-r0', size: '88K', desc: 'Traceroute utility' }, 'bind-tools': { version: '9.18.19-r0', size: '2.4M', desc: 'DNS tools (dig, nslookup)' }, 'whois': { version: '5.5.20-r0', size: '280K', desc: 'WHOIS client' }, 'net-tools': { version: '2.10-r0', size: '280K', desc: 'Network tools' }, 'lsof': { version: '4.98.0-r0', size: '420K', desc: 'List open files' }, 'strace': { version: '6.7-r0', size: '580K', desc: 'System call tracer' }, 'gdb': { version: '14.2-r0', size: '6.8M', desc: 'GNU Debugger' }, 'valgrind': { version: '3.22.0-r0', size: '18M', desc: 'Memory debugging tool' }, 'nmap': { version: '7.94-r0', size: '8.8M', desc: 'Network scanner' }, 'masscan': { version: '1.3.2-r0', size: '1.2M', desc: 'Mass IP port scanner' }, 'sqlmap': { version: '1.7.12-r0', size: '4.8M', desc: 'SQL injection tool' }, 'nikto': { version: '2.5.0-r0', size: '2.8M', desc: 'Web server scanner' }, 'hydra': { version: '9.5-r0', size: '580K', desc: 'Login cracker' }, 'john': { version: '1.9.0-r0', size: '4.8M', desc: 'Password cracker' }, 'hashcat': { version: '6.2.6-r0', size: '2.8M', desc: 'Password recovery' }, 'metasploit': { version: '6.3.44-r0', size: '180M', desc: 'Penetration testing framework' }, 'burpsuite': { version: '2024.2.1.4-r0', size: '420M', desc: 'Web vulnerability scanner' }, 'docker': { version: '25.0.2-r0', size: '18M', desc: 'Container platform' }, 'podman': { version: '4.9.2-r0', size: '14M', desc: 'Container engine' }, 'kubectl': { version: '1.29.1-r0', size: '8.4M', desc: 'Kubernetes CLI' }, 'terraform': { version: '1.7.3-r0', size: '22M', desc: 'Infrastructure as Code' }, 'ansible': { version: '9.1.0-r0', size: '4.8M', desc: 'IT automation' }, 'ffmpeg': { version: '6.1.1-r0', size: '8.8M', desc: 'Multimedia framework' }, 'imagemagick': { version: '7.1.1.20-r0', size: '12M', desc: 'Image manipulation' }, 'tree': { version: '2.1.1-r0', size: '68K', desc: 'Directory tree viewer' }, 'htop': { version: '3.3.0-r0', size: '280K', desc: 'Interactive process viewer' }, 'neofetch': { version: '7.1.0-r0', size: '180K', desc: 'System info display' }, 'cowsay': { version: '3.7.0-r0', size: '48K', desc: 'Speaking cow' }, 'figlet': { version: '2.2.5-r0', size: '220K', desc: 'ASCII art text' }, 'jq': { version: '1.7.1-r0', size: '380K', desc: 'JSON processor' }, 'yq': { version: '4.40.5-r0', size: '4.8M', desc: 'YAML processor' }, 'ripgrep': { version: '14.0.3-r0', size: '1.2M', desc: 'Fast grep' }, 'fd': { version: '8.7.1-r0', size: '680K', desc: 'Fast find' }, 'bat': { version: '0.24.0-r0', size: '1.4M', desc: 'Cat with syntax highlighting' }, 'fzf': { version: '0.45.0-r0', size: '1.6M', desc: 'Fuzzy finder' }, 'zsh': { version: '5.9-r0', size: '1.4M', desc: 'Z shell' }, 'fish': { version: '3.6.1-r0', size: '2.8M', desc: 'Friendly interactive shell' }, 'dash': { version: '0.5.12-r0', size: '120K', desc: 'Debian Almquist Shell' }, 'man-db': { version: '2.12.0-r0', size: '1.4M', desc: 'Man page viewer' }, 'less': { version: '643-r0', size: '280K', desc: 'Pager' }, 'wget2': { version: '2.1.0-r0', size: '1.8M', desc: 'Enhanced wget' }, 'socat': { version: '1.8.0.0-r0', size: '480K', desc: 'Socket relay' }, 'ncat': { version: '7.94-r0', size: '280K', desc: 'Nmap netcat' }, 'proxychains-ng': { version: '4.17-r0', size: '180K', desc: 'Proxy wrapper' }, 'tor': { version: '0.4.8.12-r0', size: '3.8M', desc: 'The Onion Router' }, 'chisel': { version: '1.9.1-r0', size: '4.8M', desc: 'TCP tunnel' }, 'ligolo-ng': { version: '0.6.1-r0', size: '4.2M', desc: 'Pentesting tunnel' }, 'netexec': { version: '1.0.1-r0', size: '2.8M', desc: 'Network execution' }, 'enum4linux': { version: '0.9.1-r0', size: '280K', desc: 'SMB enumeration' }, 'smbmap': { version: '1.10.2-r0', size: '280K', desc: 'SMB share listing' }, 'crackmapexec': { version: '5.4.0-r0', size: '1.8M', desc: 'Network penetration testing' }, 'laZagne': { version: '2.4.6-r0', size: '1.8M', desc: 'Credential recovery' }, 'chafa': { version: '1.12.4-r0', size: '420K', desc: 'Terminal image viewer' }, 'links': { version: '2.29-r0', size: '2.8M', desc: 'Text web browser' }, 'lynx': { version: '2.9.0.1-r0', size: '1.4M', desc: 'Text browser' }, 'rsync': { version: '3.2.7-r0', size: '420K', desc: 'File sync' }, 'mtr': { version: '0.95-r0', size: '180K', desc: 'Network diagnostic' }, 'iputils': { version: '20231222-r0', size: '180K', desc: 'Ping and tracing' }, }; let vfsState = { cwd: '/home/mayank', env: { HOME: '/home/mayank', USER: 'mayank', SHELL: '/bin/bash', PATH: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', HOSTNAME: 'alpine-portfolio', TERM: 'xterm-256color', LANG: 'en_US.UTF-8', EDITOR: 'vim', PWD: '/home/mayank' }, installedPkgs: ['alpine-base','busybox','musl','curl','wget','python3','nodejs','openssh','git'] }; const SYSTEM_PROMPT = `You are a powerful AI terminal assistant inside Mayank Basena's portfolio. You have FULL CONTROL over the browser and a simulated Alpine Linux environment. You speak confidently, concisely, hacker-style. You know EVERYTHING about Mayank. ABOUT MAYANK: - 15yo, Nagpur India. Email: 0mayankbasena@gmail.com. GitHub: mayank-dev-15 - Philosophy: "No AI. No shortcuts. No excuses." - Age 3: first computer. Age 4: learned C, tried Unreal Engine. - Age 7: first Linux (Parrot OS). Used 50+ distros: Gentoo, Pentoo, Ubuntu, Kali, Garuda, Arch, Debian, Fedora, NixOS, Void, Alpine. - Age 12-13: dark web, Marinas web, Primarch web. Tor relay nodes, onion routing, protocol reverse engineering. - Schools: St Xavier's Cathedral School Amravati (2014-2022), St Vincent Pallotti School Besa Nagpur (2022-now), Webnet Institute Manewada (2024). - 101 skills across 11 categories. ICSO Olympiad winner every year. Goal: GSoC 2027. - GitHub: 191+ repos, 201+ stars, 631+ commits, 114+ PRs, 9+ OSS contributions. ALPINE LINUX ENVIRONMENT: - Full virtual filesystem mounted at / with Alpine Linux 3.19 - Package manager: apk (add, del, search, list, info, update, upgrade) - Shell: /bin/bash with full environment variables - Installed: curl, wget, python3, nodejs, openssh, git, coreutils - Working directory starts at /home/mayank - Can cd, ls, cat, grep, find, mkdir, touch, rm, cp, mv, chmod, chown, ln, tar, etc. - Environment variables: HOME, USER, SHELL, PATH, HOSTNAME, TERM, LANG, PWD - Process info: /proc/cpuinfo, /proc/meminfo, /proc/version, /proc/uptime - System logs: /var/log/syslog, /var/log/dmesg, /var/log/auth.log TOOLS — respond with JSON code blocks: \`\`\`tool {"name": "tool_name", "args": {"param": "value"}} \`\`\` === VIRTUAL TERMINAL (200+ TOOLS) === --- Code Execution (50+) --- 1. python3 — Execute Python: {"code":"print('hello')"} 2. go_run — Run Go code: {"code":"package main\nimport \"fmt\"\nfunc main() { fmt.Println(\"hi\") }"} 3. rustc — Compile Rust: {"code":"fn main() { println!(\"hello\"); }"} 4. node — Run Node.js: {"code":"console.log('hello')"} 5. gcc — Compile C: {"code":"#include\nint main() { printf(\"hello\"); return 0; }","flags":"-o out"} 6. gpp — Compile C++: {"code":"#include\nint main() { std::cout << \"hello\"; }"} 7. javac_compile — Compile Java: {"code":"public class Main { public static void main(String[] a) { System.out.println(\"hello\"); } }"} 8. ruby_exec — Run Ruby: {"code":"puts 'hello'"} 9. php_exec — Run PHP: {"code":""} 10. lua_exec — Run Lua: {"code":"print('hello')"} 11. tcl_exec — Run Tcl: {"code":"puts hello"} 12. perl_exec — Run Perl: {"code":"print \"hello\\n\""} 13. bash_exec — Run Bash script: {"code":"echo hello"} 14. sh_exec — Run sh script: {"code":"echo hello"} 15. dash_exec — Run dash script: {"code":"echo hello"} 16. zsh_exec — Run Zsh script: {"code":"echo hello"} 17. fish_exec — Run Fish script: {"code":"echo hello"} 18. powershell_exec — Run PowerShell: {"code":"Write-Output 'hello'"} 19. cmd_exec — Run cmd: {"code":"echo hello"} 20. r_exec — Run R: {"code":"cat('hello\\n')"} 21. julia_exec — Run Julia: {"code":"println(\"hello\")"} 22. scala_exec — Run Scala: {"code":"object Main extends App { println(\"hello\") }"} 23. kotlin_exec — Run Kotlin: {"code":"fun main() { println(\"hello\") }"} 24. swift_exec — Run Swift: {"code":"print(\"hello\")"} 25. dart_exec — Run Dart: {"code":"void main() { print('hello'); }"} 26. elixir_exec — Run Elixir: {"code":"IO.puts \"hello\""} 27. erlang_exec — Run Erlang: {"code":"io:format(\"hello~n\")."} 28. haskell_exec — Run Haskell: {"code":"main = putStrLn \"hello\""} 29. ocaml_exec — Run OCaml: {"code":"print_endline \"hello\""} 30. fsharp_exec — Run F#: {"code":"printfn \"hello\""} 31. clojure_exec — Run Clojure: {"code":"(println \"hello\")"} 32. lisp_exec — Run Lisp: {"code":"(print \"hello\")"} 33. scheme_exec — Run Scheme: {"code":"(display \"hello\") (newline)"} 34. prolog_exec — Run Prolog: {"code":"write('hello'), nl."} 35. ada_exec — Run Ada: {"code":"with Ada.Text_IO; procedure Main is begin Ada.Text_IO.Put_Line(\"hello\"); end;"} 36. cobol_exec — Run COBOL: {"code":"IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. DISPLAY \"hello\"."} 37. fortran_exec — Run Fortran: {"code":"program hello\n print *, 'hello'\nend program hello"} 38. pascal_exec — Run Pascal: {"code":"program Hello; begin writeln('hello'); end."} 39. basic_exec — Run BASIC: {"code":"10 PRINT \"hello\""} 40. vbscript_exec — Run VBScript: {"code":"WScript.Echo \"hello\""} 41. asm_exec — Run x86 assembly (simulated): {"code":"section .data\nmsg db 'hello',0\nsection .text\nglobal _start\n_start: mov eax,1; mov ebx,0; int 0x80"} 42. nasm_asm — Assemble NASM: {"code":"section .data\nmsg db 'hello',0","flags":"-f elf64"} 43. fasm_asm — Assemble FASM: {"code":"format ELF64\ndata 'hello',0"} 44. masm_asm — Assemble MASM (simulated): {"code":".data\nmsg BYTE 'hello',0\n.code\nmain PROC"} 45. gdb_debug — GDB debug session: {"code":"break main\nrun\nprint x"} 46. lldb_debug — LLDB debug session: {"code":"breakpoint set --name main\nrun\nframe variable"} 47. strace_cmd — Trace system calls: {"command":"ls -la"} 48. ltrace_cmd — Trace library calls: {"command":"ls"} 49. valgrind_cmd — Memory check: {"command":"./program"} 50. sanitize_run — Run with sanitizers: {"code":"int main(){}","flags":"-fsanitize=address"} 51. fuzz_test — Fuzz test: {"target":"./program","timeout":"30"} 52. coverage_run — Run with coverage: {"command":"gcc --coverage main.c && ./a.out"} --- File Operations (30+) --- 53. cat — Read file: {"path":"/etc/hostname"} 54. ls_cmd — List directory: {"path":"/home/mayank","flags":"-la"} 55. find_cmd — Find files: {"path":"/","name":"*.txt"} 56. grep_cmd — Search in files: {"pattern":"error","path":"/var/log"} 57. sed_cmd — Stream editor: {"expr":"s/old/new/g","file":"/etc/hostname"} 58. awk_cmd — AWK processing: {"program":"{print $1}","file":"/etc/passwd"} 59. sort_cmd — Sort lines: {"file":"/etc/passwd"} 60. uniq_cmd — Unique lines: {"file":"/tmp/data.txt"} 61. wc_cmd — Word count: {"file":"/etc/passwd"} 62. head_cmd — First lines: {"file":"/var/log/syslog","lines":10} 63. tail_cmd — Last lines: {"file":"/var/log/syslog","lines":10} 64. cp_cmd — Copy file: {"src":"/etc/hostname","dst":"/tmp/hostname.bak"} 65. mv_cmd — Move file: {"src":"/tmp/file","dst":"/home/mayank/file"} 66. rm_cmd — Remove file: {"path":"/tmp/file"} 67. mkdir_cmd — Create directory: {"path":"/home/mayank/newdir"} 68. touch_cmd — Create file: {"path":"/home/mayank/newfile.txt"} 69. chmod_cmd — Change permissions: {"mode":"755","path":"/home/mayank/script.sh"} 70. chown_cmd — Change owner: {"owner":"mayank","path":"/home/mayank/file"} 71. ln_cmd — Create link: {"target":"/etc/hostname","link":"/tmp/hostname-link","flags":"-s"} 72. tar_cmd — Archive: {"action":"-czf","archive":"/tmp/backup.tar.gz","path":"/home/mayank"} 73. zip_cmd — Zip: {"archive":"/tmp/file.zip","path":"/home/mayank/file"} 74. unzip_cmd — Unzip: {"archive":"/tmp/file.zip","dest":"/tmp"} 75. gzip_cmd — Gzip file: {"file":"/tmp/file"} 76. bzip2_cmd — Bzip2 file: {"file":"/tmp/file"} 77. xz_cmd — XZ compress: {"file":"/tmp/file"} 78. dd_cmd — Disk dump: {"if":"/dev/zero","of":"/tmp/test","bs":"1M","count":"1"} 79. df_cmd — Disk free: {"flags":"-h"} 80. du_cmd — Disk usage: {"path":"/home/mayank"} 81. mount_cmd — Mount (simulated): {"device":"/dev/sda1","mountpoint":"/mnt"} 82. umount_cmd — Unmount: {"mountpoint":"/mnt"} 83. fdisk_cmd — Partition table: {"device":"/dev/sda"} 84. parted_cmd — Partition tool: {"device":"/dev/sda","command":"print"} 85. losetup_cmd — Loop device: {"flags":"-a"} --- Web Tools (40+) --- 86. curl_cmd — HTTP request: {"url":"https://example.com","flags":"-I"} 87. wget_cmd — Download: {"url":"https://example.com","flags":"-q -O-"} 88. httpie_cmd — HTTP client: {"method":"GET","url":"https://example.com"} 89. ncat_cmd — Netcat: {"host":"example.com","port":"80","data":"GET / HTTP/1.0\r\n\r\n"} 90. socat_cmd — Socket relay: {"from":"TCP:8080","to":"TCP:example.com:80"} 91. dig_cmd — DNS lookup: {"domain":"example.com"} 92. nslookup_cmd — DNS lookup: {"domain":"example.com"} 93. whois_cmd — WHOIS: {"domain":"example.com"} 94. ping_cmd — Ping: {"host":"example.com","count":"4"} 95. traceroute_cmd — Traceroute: {"host":"example.com"} 96. mtr_cmd — MTR: {"host":"example.com","count":"5"} 97. nmap_cmd — Port scan: {"target":"example.com","flags":"-sV"} 98. masscan_cmd — Mass scan: {"target":"192.168.1.0/24","ports":"80,443"} 99. zmap_cmd — ZMap: {"target":"192.168.1.0/24","port":"80"} 100. subfinder_cmd — Subdomain enum: {"domain":"example.com"} 101. amass_cmd — Amass recon: {"domain":"example.com","flags":"-passive"} 102. assetfinder_cmd — Asset finder: {"domain":"example.com"} 103. httpx_cmd — HTTP probe: {"target":"list.txt"} 104. waybackurls_cmd — Wayback URLs: {"domain":"example.com"} 105. gau_cmd — Get all URLs: {"domain":"example.com"} 106. ffuf_cmd — Fuzzing: {"url":"https://example.com/FUZZ","wordlist":"/usr/share/wordlists/rockyou.txt"} 107. gobuster_cmd — Directory bust: {"url":"https://example.com","wordlist":"/usr/share/wordlists/common.txt"} 108. dirb_cmd — Dirb scan: {"url":"https://example.com"} 109. dirbuster_cmd — DirBuster: {"url":"https://example.com","wordlist":"common"} 110. wfuzz_cmd — Wfuzz: {"url":"https://example.com/FUZZ","wordlist":"common.txt"} 111. arjun_cmd — Parameter discovery: {"url":"https://example.com"} 112. paramspiller_cmd — Param discovery: {"url":"https://example.com"} 113. XSStrike_cmd — XSS scan: {"url":"https://example.com/page?id=1"} 114. dalfox_cmd — XSS scanner: {"url":"https://example.com/page?id=1"} 115. nosqlmap_cmd — NoSQL injection: {"url":"https://example.com/api"} 116. sqlmap_cmd — SQL injection: {"url":"https://example.com/page?id=1","flags":"--batch"} 117. curl_post_cmd — POST request: {"url":"https://api.example.com","data":"key=value"} 118. dns_enum_cmd — DNS enumeration: {"domain":"example.com"} 119. subdomain_brute_cmd — Subdomain brute: {"domain":"example.com","wordlist":"subdomains.txt"} 120. port_scan_full_cmd — Full port scan: {"target":"example.com"} --- System Tools (30+) --- 121. ps_cmd — Process list: {"flags":"aux"} 122. top_cmd — Top processes: {"flags":"-b -n 1"} 123. htop_cmd — HTop (simulated): {} 124. kill_cmd — Kill process: {"pid":"1234","signal":"SIGTERM"} 125. nice_cmd — Run with priority: {"command":"ls","priority":"10"} 126. nohup_cmd — No hangup: {"command":"sleep 100"} 127. systemctl_cmd — Service control: {"action":"status","service":"nginx"} 128. journalctl_cmd — Journal logs: {"flags":"-u nginx -n 50"} 129. dmesg_cmd — Kernel messages: {"flags":"-T"} 130. lsblk_cmd — Block devices: {} 131. lsusb_cmd — USB devices: {} 132. lspci_cmd — PCI devices: {} 133. lscpu_cmd — CPU info: {} 134. free_cmd — Memory info: {"flags":"-h"} 135. uptime_cmd — System uptime: {} 136. hostname_cmd — Show hostname: {} 137. uname_cmd — System info: {"flags":"-a"} 138. arch_cmd — Architecture: {} 139. lsof_cmd — Open files: {"flags":"-i :80"} 140. netstat_cmd — Network stats: {"flags":"-tlnp"} 141. ss_cmd — Socket stats: {"flags":"-tlnp"} 142. ip_cmd — IP config: {"flags":"addr"} 143. ifconfig_cmd — Interface config: {} 144. route_cmd — Routing table: {} 145. arp_cmd — ARP table: {} 146. iwconfig_cmd — Wireless config: {} 147. nmcli_cmd — NetworkManager: {"flags":"device status"} 148. proc_info_cmd — /proc info: {"file":"cpuinfo"} 149. dmesg_read_cmd — Read dmesg: {} 150. sysctl_cmd — Kernel params: {"key":"net.ipv4.ip_forward"} --- Security Tools (40+) --- 151. nmap_scan_cmd — Nmap scan: {"target":"192.168.1.1","flags":"-sV -sC"} 152. masscan_scan_cmd — Masscan: {"target":"10.0.0.0/8","ports":"80"} 153. zmap_scan_cmd — ZMap: {"target":"10.0.0.0/8","port":"80"} 154. sqlmap_inject_cmd — SQLMap: {"url":"http://target/page?id=1","flags":"--dbs --batch"} 155. nikto_scan_cmd — Nikto: {"target":"http://example.com"} 156. dirb_scan_cmd — Dirb: {"target":"http://example.com","wordlist":"common.txt"} 157. gobuster_dir_cmd — Gobuster dir: {"url":"http://example.com","wordlist":"common.txt"} 158. hydra_brute_cmd — Hydra brute: {"target":"192.168.1.1","service":"ssh","userlist":"users.txt","passlist":"passes.txt"} 159. john_crack_cmd — John: {"hashfile":"/tmp/hashes.txt","format":"raw-md5"} 160. hashcat_crack_cmd — Hashcat: {"hashfile":"/tmp/hashes.txt","mode":"0","hashtype":"md5"} 161. medusa_brute_cmd — Medusa: {"target":"192.168.1.1","service":"ssh","user":"admin","pass":"pass"} 162. ncrack_cmd — NCrack: {"target":"192.168.1.1","service":"ssh"} 163. ophcrack_cmd — OphCrack: {"hashfile":"/tmp/hashes.txt"} 164. rainbowcrack_cmd — RainbowCrack: {"hashfile":"/tmp/hashes.txt"} 165. mimikatz_cmd — Mimikatz (simulated): {"command":"sekurlsa::logonpasswords"} 166. msfconsole_cmd — Metasploit console: {"command":"use exploit/multi/handler"} 167. msfvenom_cmd — MSFVenom: {"payload":"linux/x64/meterpreter/reverse_tcp","lhost":"10.0.0.1","lport":"4444","format":"elf"} 168. burpsuite_scan_cmd — Burp scan: {"target":"http://example.com"} 169. owasp_zap_cmd — ZAP scan: {"target":"http://example.com"} 170. w3af_cmd — W3AF: {"target":"http://example.com"} 171. arachni_cmd — Arachni: {"target":"http://example.com"} 172. legion_scan_cmd — Legion: {"target":"192.168.1.0/24"} 173. crackmapexec_cmd — CME: {"target":"192.168.1.0/24","protocol":"smb"} 174. smbmap_cmd — SMBMap: {"target":"192.168.1.1"} 175. enum4linux_cmd — Enum4linux: {"target":"192.168.1.1"} 176. rpcclient_cmd — RPCClient: {"target":"192.168.1.1"} 177. netexec_cmd — NetExec: {"target":"192.168.1.1","protocol":"smb"} 178. rubeus_cmd — Rubeus (simulated): {"command":"kerberos::list"} 179. kerbrute_cmd — Kerbrute: {"domain":"example.com","userlist":"users.txt"} 180. bloodhound_cmd — BloodHound: {"collection":"all"} 181. lazagne_cmd — LaZagne: {"module":"all"} 182. chisel_cmd — Chisel tunnel: {"server":"10.0.0.1","port":"8080"} 183. ligolo_cmd — Ligolo: {"proxy":"10.0.0.1:11601"} 184. sshuttle_cmd — Sshuttle: {"target":"10.0.0.0/24","ssh":"user@host"} 185. proxychains_cmd — ProxyChains: {"command":"nmap -sV target"} 186. tor_cmd — Start Tor: {"flags":"--SocksPort 9050"} 187. netcat_listen_cmd — Netcat listen: {"port":"4444"} 188. socat_listen_cmd — Socat listen: {"port":"4444","to":"EXEC:/bin/sh"} 189. reverse_shell_cmd — Reverse shell (simulated): {"type":"bash","lhost":"10.0.0.1","lport":"4444"} --- AI/ML Tools (20+) --- 190. openai_query — OpenAI API: {"model":"gpt-4","prompt":"Hello"} 191. huggingface_infer — HF Inference: {"model":"gpt2","input":"Hello"} 192. pytorch_train — PyTorch train step: {"code":"import torch; m = torch.nn.Linear(10,1)"} 193. tensorflow_run — TensorFlow run: {"code":"import tensorflow as tf; print(tf.__version__)"} 194. keras_build — Keras model: {"code":"from keras.models import Sequential; m = Sequential()"} 195. sklearn_fit — scikit-learn: {"code":"from sklearn.linear_model import LinearRegression"} 196. nltk_process — NLTK: {"code":"import nltk; nltk.download('punkt')"} 197. spacy_load — spaCy: {"code":"import spacy; nlp = spacy.load('en_core_web_sm')"} 198. gensim_train — Gensim: {"code":"from gensim.models import Word2Vec"} 199. transformers_infer — Transformers: {"code":"from transformers import pipeline; p = pipeline('sentiment-analysis')"} 200. langchain_chain — LangChain: {"code":"from langchain.llms import OpenAI"} 201. llamaindex_index — LlamaIndex: {"code":"from llama_index import VectorStoreIndex"} 202. chromadb_store — ChromaDB: {"code":"import chromadb; c = chromadb.Client()"} 203. pinecone_store — Pinecone: {"code":"import pinecone; pinecone.init(api_key='key')"} 204. weaviate_store — Weaviate: {"code":"import weaviate; c = weaviate.Client()"} 205. milvus_store — Milvus: {"code":"from pymilvus import connections; connections.connect()"} 206. faiss_index — FAISS: {"code":"import faiss; index = faiss.IndexFlatL2(128)"} 207. annoy_index — Annoy: {"code":"from annoy import AnnoyIndex; t = AnnoyIndex(128, 'angular')"} 208. hnswlib_index — HNSWlib: {"code":"import hnswlib; p = hnswlib.Index('cosine', 128)"} 209. onnx_run — ONNX Runtime: {"code":"import onnxruntime as ort; s = ort.InferenceSession('model.onnx')"} 210. tensorrt_infer — TensorRT: {"code":"import tensorrt; print(tensorrt.__version__)"} --- DevOps (30+) --- 211. docker_run — Docker run: {"image":"alpine","command":"echo hello"} 212. docker_build — Docker build: {"path":"/home/mayank/project","tag":"myapp:v1"} 213. docker_ps — Docker ps: {"flags":"-a"} 214. docker_images — Docker images: {} 215. docker_stop — Docker stop: {"container":"myapp"} 216. docker_rm — Docker remove: {"container":"myapp"} 217. podman_run — Podman run: {"image":"alpine","command":"echo hello"} 218. kubectl_get — kubectl get: {"resource":"pods","namespace":"default"} 219. kubectl_describe — kubectl describe: {"resource":"pod","name":"my-pod"} 220. kubectl_logs — kubectl logs: {"pod":"my-pod"} 221. kubectl_exec — kubectl exec: {"pod":"my-pod","command":"ls"} 222. helm_install — Helm install: {"chart":"nginx","release":"my-nginx"} 223. terraform_init — Terraform init: {"dir":"/home/mayank/infra"} 224. terraform_plan — Terraform plan: {"dir":"/home/mayank/infra"} 225. terraform_apply — Terraform apply: {"dir":"/home/mayank/infra"} 226. ansible_playbook — Ansible: {"playbook":"deploy.yml","flags":"-i inventory"} 227. chef_client — Chef client: {} 228. puppet_agent — Puppet agent: {} 229. vagrant_up — Vagrant up: {"dir":"/home/mayank/vm"} 230. vagrant_ssh — Vagrant ssh: {"dir":"/home/mayank/vm"} 231. packer_build — Packer build: {"template":"ubuntu.json"} 232. jenkins_build — Jenkins build: {"job":"my-project"} 233. github_actions_run — GH Actions: {"workflow":"ci.yml","repo":"mayank-dev-15/project"} 234. argocd_sync — ArgoCD sync: {"app":"my-app"} 235. flux_apply — Flux apply: {"path":"/home/mayank/manifests"} 236. tekton_run — Tekton run: {"pipeline":"build-push"} 237. buildah_build — Buildah build: {"path":".","tag":"myapp:v1"} 238. skopeo_copy — Skopeo copy: {"src":"docker://myapp:v1","dest":"docker://registry/myapp:v1"} 239. crane_push — Crane push: {"image":"myapp:v1","dst":"registry/myapp:v1"} 240. ko_build — Ko build: {"path":"."} 241. bazel_build — Bazel build: {"target":"//app:all"} 242. make_cmd — Make: {"target":"all","dir":"/home/mayank/project"} 243. cmake_build — CMake: {"dir":"/home/mayank/build","flags":"--build ."} 244. ninja_build — Ninja: {"dir":"/home/mayank/build"} 245. gradle_build — Gradle: {"task":"build","dir":"/home/mayank/project"} 246. maven_build — Maven: {"goal":"package","dir":"/home/mayank/project"} 247. npm_cmd — NPM: {"command":"install","dir":"/home/mayank/project"} 248. yarn_cmd — Yarn: {"command":"install","dir":"/home/mayank/project"} 249. pnpm_cmd — PNPM: {"command":"install","dir":"/home/mayank/project"} 250. pip_cmd — Pip: {"command":"install","package":"requests"} 251. poetry_cmd — Poetry: {"command":"install","dir":"/home/mayank/project"} 252. cargo_cmd — Cargo: {"command":"build","dir":"/home/mayank/project"} 253. go_mod_cmd — Go modules: {"command":"mod tidy","dir":"/home/mayank/project"} === BROWSER NAVIGATION === 254. open_tab — Open new browser tab: {"url":"https://example.com"} 255. goto — Navigate current tab to URL: {"url":"https://example.com"} 256. go_back — Go back in history 257. go_forward — Go forward in history 258. refresh — Reload current page 259. close_tab — Close current tab (works if tab was opened by script) 260. new_window — Open new popup window: {"url":"https://example.com","width":800,"height":600} === PAGE SCROLLING === 261. scroll — Scroll page: {"direction":"down","amount":500} or {"direction":"up","amount":300} 262. scroll_to — Scroll to element: {"selector":"#section-id"} 263. scroll_to_top — Scroll to top of page 264. scroll_to_bottom — Scroll to bottom of page === DOM INTERACTION === 265. click — Click element: {"selector":".button-class"} or {"selector":"#id"} 266. double_click — Double click element: {"selector":".item"} 267. right_click — Right click element: {"selector":".item"} 268. type_text — Type into input: {"selector":"input[name=email]","text":"hello@example.com"} 269. clear_input — Clear input field: {"selector":"input.search"} 270. fill_form — Fill multiple fields: {"fields":[{"selector":"#name","value":"Mayank"},{"selector":"#email","value":"test@test.com"}]} 271. submit_form — Submit form: {"selector":"form#contact"} 272. select_option — Select dropdown: {"selector":"select#country","value":"IN"} 273. check_checkbox — Check checkbox: {"selector":"input[type=checkbox]"} 274. uncheck_checkbox — Uncheck checkbox: {"selector":"input[type=checkbox]"} 275. hover_element — Hover over element: {"selector":".menu-item"} 276. focus_element — Focus element: {"selector":"input#search"} 277. blur_element — Remove focus from element: {"selector":"input#search"} === SEARCH & INSPECTION === 278. search_page — Search text on page: {"query":"linux"} 279. get_info — Get page title and URL 280. get_text — Get text content: {"selector":"h1"} or {"selector":"p.intro"} 281. get_html — Get HTML of element: {"selector":".card"} 282. get_attr — Get attribute: {"selector":"a.link","attribute":"href"} 283. get_value — Get input value: {"selector":"input#email"} 284. count_elements — Count matching elements: {"selector":".skill-tag"} 285. list_elements — List elements: {"selector":"a","max":20} 286. list_links — List all links on page 287. list_images — List all images on page 288. list_forms — List all forms and their inputs 289. page_structure — Get page section structure 290. get_styles — Get computed styles: {"selector":".hero","properties":["color","fontSize","background"]} === CLIPBOARD === 291. copy_text — Copy text to clipboard: {"text":"hello world"} 292. read_clipboard — Read clipboard contents 293. copy_element — Copy element text: {"selector":"p"} === KEYBOARD === 294. press_key — Press a key: {"key":"Enter"} or {"key":"Escape"} 295. key_combo — Key combination: {"keys":"Control+c"} or {"keys":"Control+a"} 296. type_keys — Type characters with delay: {"text":"hello","delay":50} === STORAGE === 297. local_set — Set localStorage: {"key":"theme","value":"dark"} 298. local_get — Get localStorage: {"key":"theme"} 299. local_remove — Remove localStorage item: {"key":"theme"} 300. local_clear — Clear all localStorage 301. session_set — Set sessionStorage: {"key":"tab","value":"home"} 302. session_get — Get sessionStorage: {"key":"tab"} === VISUAL === 303. highlight — Highlight element (3s): {"selector":".hero-title"} 304. remove_highlights — Remove all highlights 305. inject_css — Inject CSS: {"css":".test{color:red!important}"} 306. remove_injected — Remove injected styles 307. fullscreen — Toggle fullscreen 308. zoom — Set page zoom: {"level":1.5} or {"level":0.8} 309. reset_zoom — Reset zoom to 100% 310. dark_mode — Set dark theme 311. light_mode — Set light theme === DOM MANIPULATION === 312. create_element — Create element: {"tag":"div","text":"Hello","parent":"body","classes":"test"} 313. modify_element — Modify element: {"selector":".card","styles":{"background":"red"},"attrs":{"data-test":"1"}} 314. delete_element — Remove element: {"selector":".ad-banner"} 315. clone_element — Clone element: {"selector":".card","parent":"body"} 316. add_class — Add CSS class: {"selector":".card","class":"active"} 317. remove_class — Remove CSS class: {"selector":".card","class":"active"} 318. toggle_class — Toggle CSS class: {"selector":".menu","class":"open"} === POWER TOOLS === 319. execute_js — Execute JavaScript: {"code":"document.title = 'Hacked'"} 320. wait_for — Wait for element: {"selector":"#loaded","timeout":5000} 321. get_cookies — Get cookies 322. set_cookie — Set cookie: {"name":"theme","value":"dark","days":30} 323. get_performance — Get page performance metrics 324. get_viewport — Get viewport size and scroll position === PACKAGE MANAGEMENT === 325. apk_update — Update repos: {} 326. apk_search — Search package: {"query":"nginx"} 327. apk_install — Install package: {"package":"nginx"} 328. apk_remove — Remove package: {"package":"nginx"} 329. apk_list — List packages: {"flags":"-I"} 330. apk_info — Package info: {"package":"nginx"} 331. apk_upgrade — Upgrade all: {} RULES: - Show your thinking process in tags before responding. - Use tools by outputting a \`\`\`tool code block with JSON. - You can use multiple tools in one response — output multiple tool blocks. - Respond concisely, terminal-style, with > or $ prefix. - You are Mayank's personal terminal entity with FULL browser + Linux control. - You have a complete Alpine Linux environment. Use it to execute code, install packages, run tools. - Always think step by step before acting. - When a tool returns data, include it in your response to the user. - You can chain commands with && and pipes in bash_exec/sh_exec. - For Linux commands (cat, ls, grep, find, etc.), use the corresponding tool names (cat, ls_cmd, grep_cmd, find_cmd). - Show command output formatted with proper terminal colors. - If a package is not installed, suggest using apk_install to install it.`; // ===== VFS HELPERS ===== function vfsResolve(path) { if (!path) return vfsState.cwd; if (path === '~') return '/home/mayank'; if (path.startsWith('~/')) return '/home/mayank/' + path.slice(2); if (!path.startsWith('/')) return vfsState.cwd + '/' + path; return path; } function vfsNormalize(path) { const parts = path.split('/').filter(Boolean); const stack = []; for (const p of parts) { if (p === '..') stack.pop(); else if (p !== '.') stack.push(p); } return '/' + stack.join('/'); } function vfsExists(path) { return VFS[vfsNormalize(path)] !== undefined; } function vfsIsDir(path) { const n = VFS[vfsNormalize(path)]; return n && n.type === 'dir'; } function vfsIsFile(path) { const n = VFS[vfsNormalize(path)]; return n && n.type === 'file'; } function vfsRead(path) { const n = VFS[vfsNormalize(path)]; return n ? (n.content || '') : null; } function vfsWrite(path, content) { const n = vfsNormalize(path); const parent = n.substring(0, n.lastIndexOf('/')) || '/'; if (!VFS[parent] || VFS[parent].type !== 'dir') return false; const name = n.substring(n.lastIndexOf('/') + 1); VFS[n] = { type: 'file', perms: '-rw-r--r--', owner: vfsState.env.USER, size: content.length, content }; if (VFS[parent].children && !VFS[parent].children.includes(name)) VFS[parent].children.push(name); return true; } function vfsMkdir(path) { const n = vfsNormalize(path); if (VFS[n]) return false; const parent = n.substring(0, n.lastIndexOf('/')) || '/'; if (!VFS[parent] || VFS[parent].type !== 'dir') return false; const name = n.substring(n.lastIndexOf('/') + 1); VFS[n] = { type: 'dir', perms: 'drwxr-xr-x', owner: vfsState.env.USER, size: 4096, children: [] }; if (VFS[parent].children) VFS[parent].children.push(name); return true; } function vfsRm(path) { const n = vfsNormalize(path); if (!VFS[n]) return false; const parent = n.substring(0, n.lastIndexOf('/')) || '/'; const name = n.substring(n.lastIndexOf('/') + 1); if (VFS[parent] && VFS[parent].children) VFS[parent].children = VFS[parent].children.filter(c => c !== name); delete VFS[n]; return true; } function vfsLs(path, flags) { const n = vfsNormalize(path || vfsState.cwd); const node = VFS[n]; if (!node) return null; if (node.type === 'file') return [n.split('/').pop()]; if (!node.children) return []; let items = node.children.slice(); if (flags && flags.includes('a')) { items = ['.', '..', ...items]; } if (flags && flags.includes('l')) { return items.map(name => { if (name === '.' || name === '..') return 'drwxr-xr-x 2 ' + (node.owner || 'root') + ' ' + (node.owner || 'root') + ' 4096 Jun 22 00:00 ' + name; const child = VFS[n + '/' + name]; if (!child) return '?--------- 0 ? ? 0 Jan 1 00:00 ' + name; const sz = String(child.size || 0).padStart(5); return child.perms + ' 1 ' + (child.owner || 'root') + ' ' + (child.owner || 'root') + ' ' + sz + ' Jun 22 00:00 ' + name; }); } return items; } // ===== VFS COMMAND HANDLERS ===== function vfsHandleCommand(cmd, args) { switch(cmd) { case 'ls': { const flagStr = (args || []).find(a => a.startsWith('-')) || ''; const target = (args || []).find(a => !a.startsWith('-')) || vfsState.cwd; const items = vfsLs(vfsResolve(target), flagStr); if (!items) return [cmd + ': cannot access \'' + target + '\': No such file or directory']; if (items.length === 0) return []; return items; } case 'cd': { const target = vfsResolve((args || [])[0] || '~'); if (!vfsExists(target)) return ['cd: no such file or directory: ' + ((args || [])[0] || '~')]; if (!vfsIsDir(target)) return ['cd: not a directory: ' + ((args || [])[0] || '~')]; vfsState.cwd = vfsNormalize(target); vfsState.env.PWD = vfsState.cwd; return null; } case 'pwd': return [vfsState.cwd]; case 'cat': { if (!(args || [])[0]) return ['cat: missing operand']; const path = vfsResolve(args[0]); if (!vfsExists(path)) return ['cat: ' + args[0] + ': No such file or directory']; if (vfsIsDir(path)) return ['cat: ' + args[0] + ': Is a directory']; return vfsRead(path).split('\n'); } case 'echo': { const full = (args || []).join(' '); if (full.includes('>') && !full.includes('>>')) { const parts = full.split('>').map(function(s) { return s.trim(); }); const val = parts[0].replace(/^"(.*)"$/, '$1').replace(/^\$(\w+)/g, function(m, k) { return vfsState.env[k] || ''; }); vfsWrite(vfsResolve(parts[1]), val); return []; } if (full.includes('>>')) { const parts = full.split('>>').map(function(s) { return s.trim(); }); const val = parts[0].replace(/^"(.*)"$/, '$1').replace(/^\$(\w+)/g, function(m, k) { return vfsState.env[k] || ''; }); const existing = vfsRead(vfsResolve(parts[1])) || ''; vfsWrite(vfsResolve(parts[1]), existing + val); return []; } return [full.replace(/^"(.*)"$/, '$1').replace(/^\$(\w+)/g, function(m, k) { return vfsState.env[k] || ''; })]; } case 'mkdir': { if (!(args || [])[0]) return ['mkdir: missing operand']; const path = vfsResolve(args[0]); if (vfsExists(path)) return ['mkdir: cannot create directory \'' + args[0] + '\': File exists']; if (!vfsMkdir(path)) return ['mkdir: cannot create directory \'' + args[0] + '\': No such file or directory']; return null; } case 'touch': { if (!(args || [])[0]) return ['touch: missing operand']; const path = vfsResolve(args[0]); if (!vfsExists(path)) vfsWrite(path, ''); return null; } case 'rm': { if (!(args || [])[0]) return ['rm: missing operand']; const target = (args || []).filter(function(a) { return !a.startsWith('-'); })[0]; const path = vfsResolve(target); if (!vfsExists(path)) return ['rm: cannot remove \'' + target + '\': No such file or directory']; if (vfsIsDir(path) && !(args || []).includes('-r') && !(args || []).includes('-rf')) return ['rm: cannot remove \'' + target + '\': Is a directory']; if (!vfsRm(path)) return ['rm: failed to remove \'' + target + '\'']; return null; } case 'cp': { if ((args || []).length < 2) return ['cp: missing operand']; const src = vfsResolve(args[0]); const dst = vfsResolve(args[1]); if (!vfsExists(src)) return ['cp: cannot stat \'' + args[0] + '\': No such file or directory']; vfsWrite(dst, vfsRead(src) || ''); return null; } case 'mv': { if ((args || []).length < 2) return ['mv: missing operand']; const src = vfsResolve(args[0]); const dst = vfsResolve(args[1]); if (!vfsExists(src)) return ['mv: cannot stat \'' + args[0] + '\': No such file or directory']; vfsWrite(dst, vfsRead(src) || ''); vfsRm(src); return null; } case 'find': { const searchPath = vfsResolve((args || [])[0] || '.'); const nameIdx = (args || []).indexOf('-name'); const pattern = nameIdx >= 0 ? args[nameIdx + 1] : null; const results = []; function walkDir(dir) { var node = VFS[dir]; if (!node || !node.children) return; for (var ci = 0; ci < node.children.length; ci++) { var child = node.children[ci]; var childPath = dir + '/' + child; if (pattern) { var re = new RegExp('^' + pattern.replace(/\*/g, '.*').replace(/\?/g, '.') + '$'); if (re.test(child)) results.push(childPath); } else results.push(childPath); if (VFS[childPath] && VFS[childPath].type === 'dir') walkDir(childPath); } } walkDir(vfsNormalize(searchPath)); return results; } case 'grep': { if ((args || []).length < 2) return ['grep: missing arguments']; var pattern = args[0]; var file = vfsResolve(args[1]); if (!vfsExists(file)) return ['grep: ' + args[1] + ': No such file or directory']; var content = vfsRead(file); if (!content) return []; return content.split('\n').filter(function(line) { return line.toLowerCase().includes(pattern.toLowerCase()); }); } case 'head': { var lines = (args || []).includes('-n') ? parseInt(args[(args || []).indexOf('-n') + 1]) : 10; var file = vfsResolve((args || []).filter(function(a) { return !a.startsWith('-') && !/^\d+$/.test(a); })[0]); if (!vfsExists(file)) return ['head: cannot open file for reading']; return vfsRead(file).split('\n').slice(0, lines); } case 'tail': { var lines2 = (args || []).includes('-n') ? parseInt(args[(args || []).indexOf('-n') + 1]) : 10; var file2 = vfsResolve((args || []).filter(function(a) { return !a.startsWith('-') && !/^\d+$/.test(a); })[0]); if (!vfsExists(file2)) return ['tail: cannot open file for reading']; var all = vfsRead(file2).split('\n'); return all.slice(-lines2); } case 'wc': { var wcFile = vfsResolve((args || [])[0]); if (!vfsExists(wcFile)) return ['wc: no such file']; var wcContent = vfsRead(wcFile); var wcWords = wcContent.split(/\s+/).filter(Boolean).length; return [' ' + wcContent.split('\n').length + ' ' + wcWords + ' ' + wcContent.length + ' ' + (args || [])[0]]; } case 'sort': { var sFile = vfsResolve((args || [])[0]); if (!vfsExists(sFile)) return ['sort: no such file']; return vfsRead(sFile).split('\n').sort(); } case 'uniq': { var uFile = vfsResolve((args || [])[0]); if (!vfsExists(uFile)) return ['uniq: no such file']; return Array.from(new Set(vfsRead(uFile).split('\n'))); } case 'chmod': { if ((args || []).length < 2) return ['chmod: missing operand']; var cPath = vfsResolve(args[1]); if (!VFS[cPath]) return ['chmod: no such file']; return null; } case 'ln': { if ((args || []).length < 2) return ['ln: missing operand']; var lnTarget = vfsResolve(args[(args || []).includes('-s') ? 2 : 0]); var lnLink = vfsResolve(args[1]); if (!vfsExists(lnTarget)) return ['ln: no such file']; vfsWrite(lnLink, vfsRead(lnTarget) || ''); return null; } case 'du': return ['4.0K\t' + ((args || [])[0] || '.')]; case 'df': return ['Filesystem Size Used Avail Use% Mounted on', '/dev/sda1 20G 3.2G 15G 18% /', 'tmpfs 4.0G 0 4.0G 0% /tmp']; case 'tar': return ['tar: archive created']; case 'zip': return ['zip: archive created']; case 'unzip': return ['unzip: extracted']; case 'date': return [new Date().toString()]; case 'whoami': return [vfsState.env.USER]; case 'hostname': return [vfsState.env.HOSTNAME]; case 'uname': return [(args || []).includes('-a') ? 'Linux alpine-portfolio 6.6.0 #1-Alpine SMP PREEMPT_DYNAMIC x86_64 GNU/Linux' : 'Linux']; case 'uptime': { var up = Math.floor((Date.now() - bootTime) / 1000); var h = Math.floor(up / 3600); var m = Math.floor((up % 3600) / 60); return [' ' + new Date().toTimeString().slice(0,8) + ' up ' + h + ':' + String(m).padStart(2,'0') + ', 1 user, load average: 0.15, 0.10, 0.05']; } case 'free': return [' total used free shared buff/cache available', 'Mem: 7900M 2100M 4800M 85M 1000M 5400M', 'Swap: 2048M 50M 1998M']; case 'lscpu': return ['Architecture: x86_64', 'CPU op-mode(s): 32-bit, 64-bit', 'Model name: Virtual Alpine vCPU @ 3.20GHz', 'CPU(s): 4', 'Thread(s) per core: 2', 'Core(s) per socket: 2', 'Socket(s): 1']; case 'ps': return [' PID TTY TIME CMD', ' 1000 pts/0 00:00:00 bash', ' 1001 pts/0 00:00:00 ps']; case 'id': return ['uid=1000(mayank) gid=1000(mayank) groups=1000(mayank)']; case 'groups': return ['mayank']; case 'env': return Object.entries(vfsState.env).map(function(e) { return e[0] + '=' + e[1]; }); case 'export': { if ((args || [])[0]) { var parts = args[0].split('='); vfsState.env[parts[0]] = parts[1] || ''; } return null; } case 'which': { var bin = (args || [])[0]; if (VFS['/usr/bin/' + bin] || VFS['/bin/' + bin]) return ['/' + (VFS['/usr/bin/' + bin] ? 'usr/bin' : 'bin') + '/' + bin]; return [bin + ' not found']; } case 'file': { if (!(args || [])[0]) return ['file: missing operand']; var fPath = vfsResolve(args[0]); if (!vfsExists(fPath)) return ['file: cannot open']; if (vfsIsDir(fPath)) return [args[0] + ': directory']; var fc = vfsRead(fPath) || ''; if (fc.startsWith('#!')) return [args[0] + ': script, ASCII text executable']; if (fc.startsWith('-----BEGIN')) return [args[0] + ': PEM certificate']; if (fc.includes(' 0) return prints.join('\n'); return '[' + lang + '] executed successfully. Code: ' + lines.length + ' line(s) processed.'; } function simulateCurl(url, flags) { return 'HTTP/1.1 200 OK\nContent-Type: text/html; charset=UTF-8\nContent-Length: 1256\nDate: ' + new Date().toUTCString() + '\nServer: nginx/1.24.0\n\nExample Domain

Example Domain

'; } function simulateDig(domain) { return ';; ANSWER SECTION:\n' + (domain || 'example.com') + '.\t\t300\tIN\tA\t93.184.216.34\n\n;; Query time: 23 msec\n;; SERVER: 8.8.8.8#53'; } function simulateNslookup(domain) { return 'Server:\t\t8.8.8.8\nAddress:\t8.8.8.8#53\n\nNon-authoritative answer:\nName:\t' + (domain || 'example.com') + '\nAddress: 93.184.216.34'; } function simulateWhois(domain) { return 'Domain Name: ' + (domain || 'EXAMPLE.COM').toUpperCase() + '\nRegistrar: registrar-example\nUpdated Date: 2024-01-01\nCreation Date: 2000-01-01\nName Server: ns1.example.com'; } function simulatePing(host) { return 'PING ' + (host || 'example.com') + ' (93.184.216.34) 56(84) bytes of data.\n64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=12.3 ms\n64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=11.8 ms\n\n--- ' + (host || 'example.com') + ' ping statistics ---\n2 packets transmitted, 2 received, 0% packet loss, time 1002ms\nrtt min/avg/max/mdev = 11.8/12.05/12.3/0.25 ms'; } function simulateTraceroute(host) { return 'traceroute to ' + (host || 'example.com') + ' (93.184.216.34), 30 hops max\n 1 gateway (192.168.1.1) 1.234 ms\n 2 10.0.0.1 (10.0.0.1) 5.678 ms\n 3 72.14.236.204 (72.14.236.204) 12.345 ms\n 4 93.184.216.34 (93.184.216.34) 15.678 ms'; } function simulateNmap(target, flags) { return 'Starting Nmap 7.94\nNmap scan report for ' + (target || 'example.com') + ' (93.184.216.34)\nHost is up (0.012s latency).\n\nPORT STATE SERVICE VERSION\n22/tcp open ssh OpenSSH 9.6\n80/tcp open http nginx 1.24.0\n443/tcp open https nginx 1.24.0\n3306/tcp open mysql MySQL 8.0\n\n4 services scanned.\nNmap done: 1 IP address scanned in 12.34 seconds'; } // ===== VFS TOOL EXECUTION ===== function executeVfsTool(tool) { var name = tool.name; var args = tool.args || {}; switch(name) { case 'apk_update': { var r = apkHandleCommand(['update']); showToolExec(name, r.join('\n')); return true; } case 'apk_search': { var r2 = apkHandleCommand(['search', args.query]); showToolExec(name, r2.join('\n')); return true; } case 'apk_install': { var r3 = apkHandleCommand(['add', args.package]); showToolExec(name, r3.join('\n')); return true; } case 'apk_remove': { var r4 = apkHandleCommand(['del', args.package]); showToolExec(name, r4.join('\n')); return true; } case 'apk_list': { var r5 = apkHandleCommand(['list', args.flags || '-I']); showToolExec(name, r5.join('\n')); return true; } case 'apk_info': { var r6 = apkHandleCommand(['info', args.package]); showToolExec(name, r6.join('\n')); return true; } case 'apk_upgrade': { var r7 = apkHandleCommand(['upgrade']); showToolExec(name, r7.join('\n')); return true; } case 'cat': { var r8 = vfsHandleCommand('cat', [args.path]); showToolExec(name, r8 ? r8.join('\n') : ''); return true; } case 'ls_cmd': { var r9 = vfsHandleCommand('ls', [args.path, args.flags].filter(Boolean)); showToolExec(name, r9 ? r9.join('\n') : ''); return true; } case 'find_cmd': { var r10 = vfsHandleCommand('find', [args.path, '-name', args.name].filter(Boolean)); showToolExec(name, r10 ? r10.join('\n') : ''); return true; } case 'grep_cmd': { var r11 = vfsHandleCommand('grep', [args.pattern, args.path].filter(Boolean)); showToolExec(name, r11 ? r11.join('\n') : ''); return true; } case 'mkdir_cmd': { var r12 = vfsHandleCommand('mkdir', [args.path]); showToolExec(name, r12 ? r12.join('\n') : 'Directory created'); return true; } case 'touch_cmd': { var r13 = vfsHandleCommand('touch', [args.path]); showToolExec(name, r13 ? r13.join('\n') : 'File created'); return true; } case 'rm_cmd': { var r14 = vfsHandleCommand('rm', [args.path]); showToolExec(name, r14 ? r14.join('\n') : 'File removed'); return true; } case 'cp_cmd': { var r15 = vfsHandleCommand('cp', [args.src, args.dst]); showToolExec(name, r15 ? r15.join('\n') : 'File copied'); return true; } case 'mv_cmd': { var r16 = vfsHandleCommand('mv', [args.src, args.dst]); showToolExec(name, r16 ? r16.join('\n') : 'File moved'); return true; } case 'chmod_cmd': { var r17 = vfsHandleCommand('chmod', [args.mode, args.path]); showToolExec(name, r17 ? r17.join('\n') : 'Permissions changed'); return true; } case 'head_cmd': { var r18 = vfsHandleCommand('head', ['-n', String(args.lines || 10), args.path]); showToolExec(name, r18 ? r18.join('\n') : ''); return true; } case 'tail_cmd': { var r19 = vfsHandleCommand('tail', ['-n', String(args.lines || 10), args.path]); showToolExec(name, r19 ? r19.join('\n') : ''); return true; } case 'wc_cmd': { var r20 = vfsHandleCommand('wc', [args.file]); showToolExec(name, r20 ? r20.join('\n') : ''); return true; } case 'sort_cmd': { var r21 = vfsHandleCommand('sort', [args.file]); showToolExec(name, r21 ? r21.join('\n') : ''); return true; } case 'uniq_cmd': { var r22 = vfsHandleCommand('uniq', [args.file]); showToolExec(name, r22 ? r22.join('\n') : ''); return true; } case 'echo_cmd': { var r23 = vfsHandleCommand('echo', args.text ? args.text.split(' ') : []); showToolExec(name, r23 ? r23.join('\n') : ''); return true; } case 'df_cmd': { var r24 = vfsHandleCommand('df', []); showToolExec(name, r24.join('\n')); return true; } case 'du_cmd': { var r25 = vfsHandleCommand('du', [args.path].filter(Boolean)); showToolExec(name, r25.join('\n')); return true; } case 'ps_cmd': { var r26 = vfsHandleCommand('ps', []); showToolExec(name, r26.join('\n')); return true; } case 'top_cmd': { var r27 = vfsHandleCommand('top', []); showToolExec(name, r27.join('\n')); return true; } case 'htop_cmd': { var r28 = vfsHandleCommand('top', []); showToolExec(name, 'htop: interactive mode (simulated)\n' + r28.join('\n')); return true; } case 'free_cmd': { var r29 = vfsHandleCommand('free', []); showToolExec(name, r29.join('\n')); return true; } case 'uptime_cmd': { var r30 = vfsHandleCommand('uptime', []); showToolExec(name, r30.join('\n')); return true; } case 'hostname_cmd': { var r31 = vfsHandleCommand('hostname', []); showToolExec(name, r31.join('\n')); return true; } case 'uname_cmd': { var r32 = vfsHandleCommand('uname', args.flags ? [args.flags] : []); showToolExec(name, r32.join('\n')); return true; } case 'arch_cmd': { showToolExec(name, 'x86_64'); return true; } case 'lscpu_cmd': { var r33 = vfsHandleCommand('lscpu', []); showToolExec(name, r33.join('\n')); return true; } case 'lsblk_cmd': { var r34 = vfsHandleCommand('lsblk', []); showToolExec(name, r34.join('\n')); return true; } case 'lsof_cmd': { var r35 = vfsHandleCommand('lsof', []); showToolExec(name, r35.join('\n')); return true; } case 'netstat_cmd': { var r36 = vfsHandleCommand('netstat', []); showToolExec(name, r36.join('\n')); return true; } case 'ss_cmd': { var r37 = vfsHandleCommand('ss', []); showToolExec(name, r37.join('\n')); return true; } case 'id_cmd': { var r38 = vfsHandleCommand('id', []); showToolExec(name, r38.join('\n')); return true; } case 'env_cmd': { var r39 = vfsHandleCommand('env', []); showToolExec(name, r39.join('\n')); return true; } case 'which_cmd': { var r40 = vfsHandleCommand('which', [args.command]); showToolExec(name, r40.join('\n')); return true; } case 'file_cmd': { var r41 = vfsHandleCommand('file', [args.path]); showToolExec(name, r41.join('\n')); return true; } case 'proc_info_cmd': { var content = vfsRead('/proc/' + (args.file || 'cpuinfo')); showToolExec(name, content || 'Not available'); return true; } case 'dmesg_cmd': { var content2 = vfsRead('/var/log/dmesg'); showToolExec(name, content2 || 'Not available'); return true; } case 'python3': { showToolExec(name, simulateCodeExec('python3', args.code)); return true; } case 'node': { showToolExec(name, simulateCodeExec('node', args.code)); return true; } case 'go_run': { showToolExec(name, simulateCodeExec('go', args.code)); return true; } case 'rustc': { showToolExec(name, simulateCodeExec('rust', args.code)); return true; } case 'gcc': { showToolExec(name, simulateCodeExec('c', args.code)); return true; } case 'gpp': { showToolExec(name, simulateCodeExec('cpp', args.code)); return true; } case 'ruby_exec': { showToolExec(name, simulateCodeExec('ruby', args.code)); return true; } case 'php_exec': { showToolExec(name, simulateCodeExec('php', args.code)); return true; } case 'lua_exec': { showToolExec(name, simulateCodeExec('lua', args.code)); return true; } case 'perl_exec': { showToolExec(name, simulateCodeExec('perl', args.code)); return true; } case 'bash_exec': { showToolExec(name, simulateCodeExec('bash', args.code)); return true; } case 'sh_exec': { showToolExec(name, simulateCodeExec('sh', args.code)); return true; } case 'r_exec': { showToolExec(name, simulateCodeExec('R', args.code)); return true; } case 'julia_exec': { showToolExec(name, simulateCodeExec('julia', args.code)); return true; } case 'scala_exec': { showToolExec(name, simulateCodeExec('scala', args.code)); return true; } case 'kotlin_exec': { showToolExec(name, simulateCodeExec('kotlin', args.code)); return true; } case 'swift_exec': { showToolExec(name, simulateCodeExec('swift', args.code)); return true; } case 'dart_exec': { showToolExec(name, simulateCodeExec('dart', args.code)); return true; } case 'elixir_exec': { showToolExec(name, simulateCodeExec('elixir', args.code)); return true; } case 'erlang_exec': { showToolExec(name, simulateCodeExec('erlang', args.code)); return true; } case 'haskell_exec': { showToolExec(name, simulateCodeExec('haskell', args.code)); return true; } case 'ocaml_exec': { showToolExec(name, simulateCodeExec('ocaml', args.code)); return true; } case 'clojure_exec': { showToolExec(name, simulateCodeExec('clojure', args.code)); return true; } case 'curl_cmd': { showToolExec(name, simulateCurl(args.url, args.flags)); return true; } case 'dig_cmd': { showToolExec(name, simulateDig(args.domain)); return true; } case 'nslookup_cmd': { showToolExec(name, simulateNslookup(args.domain)); return true; } case 'whois_cmd': { showToolExec(name, simulateWhois(args.domain)); return true; } case 'ping_cmd': { showToolExec(name, simulatePing(args.host)); return true; } case 'traceroute_cmd': { showToolExec(name, simulateTraceroute(args.host)); return true; } case 'nmap_cmd': { showToolExec(name, simulateNmap(args.target, args.flags)); return true; } case 'nmap_scan_cmd': { showToolExec(name, simulateNmap(args.target, args.flags)); return true; } case 'sqlmap_inject_cmd': { showToolExec(name, 'sqlmap -u "' + args.url + '" ' + (args.flags || '--batch') + '\n\n[INFO] testing connection to the target URL\n[INFO] testing AND boolean-based blind\n[RESULT] parameter id is vulnerable\n[RESULT] available databases: information_schema, mysql, test'); return true; } case 'nikto_scan_cmd': { showToolExec(name, 'Nikto v2.5.0\n+ Target: ' + args.target + '\n+ Server: nginx/1.24.0\n+ 7 vulnerabilities found'); return true; } case 'hydra_brute_cmd': { showToolExec(name, 'Hydra v9.5\n[DATA] max 16 tasks per 1 server\n[STATUS] 2345 tries, 0 success\n[22][ssh] host: ' + args.target); return true; } case 'john_crack_cmd': { showToolExec(name, 'John the Ripper 1.9.0\nLoaded 1 hash (' + (args.format || 'raw-md5') + ')\nadmin:$1$...:password123\n1g/s 2.1e6p/s'); return true; } case 'hashcat_crack_cmd': { showToolExec(name, 'hashcat v6.2.6\nStarting...\nSpeed: 2345.1 kH/s'); return true; } case 'msfvenom_cmd': { showToolExec(name, 'msfvenom -p ' + (args.payload || 'linux/x64/meterpreter/reverse_tcp') + ' LHOST=' + (args.lhost || '10.0.0.1') + ' LPORT=' + (args.lport || '4444') + '\nPayload size: 106 bytes\nSaved as: payload'); return true; } case 'docker_run': { showToolExec(name, 'Pulling image ' + (args.image || 'alpine') + '...\n' + (args.command || 'echo hello')); return true; } case 'docker_ps': { showToolExec(name, 'CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES\nabc123def456 alpine "/bin/sh" 2 hours ago Up 2 hours mycontainer'); return true; } case 'docker_images': { showToolExec(name, 'REPOSITORY TAG IMAGE ID SIZE\nalpine latest abc123def456 7.38MB\nnode 20 def789abc012 1.12GB'); return true; } case 'kubectl_get': { showToolExec(name, 'NAME READY STATUS RESTARTS AGE\nnginx-6795fc8898-abc12 1/1 Running 0 2d'); return true; } case 'git_cmd': { var gitCmd = args.command || 'status'; if (gitCmd === 'status') showToolExec(name, 'On branch main\nYour branch is up to date.\nnothing to commit, working tree clean'); else if (gitCmd === 'log') showToolExec(name, 'commit abc123 (HEAD -> main)\nAuthor: Mayank Basena\nDate: ' + new Date().toDateString() + '\n\n Latest update'); else showToolExec(name, 'git ' + gitCmd + ': executed'); return true; } default: return false; } } // ===== PERMISSIONS ===== var PERM_KEY = 'terminal_permissions'; function getPermissions() { try { return JSON.parse(localStorage.getItem(PERM_KEY)) || null; } catch(e) { return null; } } function savePermissions(perms) { localStorage.setItem(PERM_KEY, JSON.stringify(perms)); } function updatePermIndicator(perms) { var ind = document.getElementById('permIndicator'); if (!ind) return; ind.style.display = 'flex'; var dots = { permDotFs: perms.fs, permDotNet: perms.net, permDotCam: perms.cam, permDotNotif: perms.notif }; Object.entries(dots).forEach(function(e) { var el = document.getElementById(e[0]); if (el) el.className = 'perm-dot ' + (e[1] ? 'granted' : 'denied'); }); } function showPermDialog() { var overlay = document.getElementById('permOverlay'); if (!overlay) return; overlay.style.display = 'flex'; document.getElementById('permDeny').onclick = function() { var perms = { fs: false, net: false, cam: false, notif: false }; savePermissions(perms); updatePermIndicator(perms); overlay.style.display = 'none'; }; document.getElementById('permAllow').onclick = function() { var perms = { fs: document.getElementById('permFs').checked, net: document.getElementById('permNet').checked, cam: document.getElementById('permCam').checked, notif: document.getElementById('permNotif').checked, }; savePermissions(perms); updatePermIndicator(perms); overlay.style.display = 'none'; }; } const body = document.getElementById('terminalBody'); const input = document.getElementById('terminalInput'); const inputLine = document.getElementById('inputLine'); let chatHistory = []; let commandHistory = []; let historyIndex = -1; let isGenerating = false; const bootTime = Date.now(); const BANNER = [ '╔══════════════════════════════════════════════════════════════╗', ' Mayank Basena — Portfolio Terminal v4.0 ', ' Alpine Linux 3.19 | 330+ tools | Streaming AI ', ' Commands: help, ls, cd, cat, apk, neofetch, skills, clear ', '╚══════════════════════════════════════════════════════════════╝', ]; const COMMANDS = { help: () => [ 'Built-in commands:', ' whoami — About Mayank Basena', ' skills — List all 101 skills', ' projects — Show featured projects', ' github — GitHub stats', ' backstory — The full story', ' contact — Get contact info', ' history — Command history', ' clear — Clear terminal', '', 'Alpine Linux commands:', ' ls -la — List files (with details)', ' cd /dir — Change directory', ' pwd — Print working directory', ' cat file — Read file contents', ' mkdir dir — Create directory', ' touch file — Create empty file', ' rm file — Remove file', ' cp src dst — Copy file', ' find / -name — Find files', ' grep pat file— Search in files', ' apk search — Search packages', ' apk install — Install package', ' neofetch — System info (fancy)', '', 'Or ask the AI to use any of its 330+ tools:', 'code execution, file ops, web tools, security scanning,', 'AI/ML, DevOps, browser control, and more.', ], whoami: () => [ 'Mayank Basena', '15yo security researcher, systems builder, AI generalist.', 'Nagpur, India', 'Philosophy: No AI. No shortcuts. No excuses.', 'Goal: GSoC 2027.', ], skills: () => { const cats = [ 'Security (9): Pen Testing, Vuln Research, Network Security, CVE Analysis, Exploit Dev, Packet Analysis, CTF, Dark Web Research, Deep Net Protocols', 'Languages (14): Python, Go, Rust, JavaScript, TypeScript, C, C++, Shell, Bash, PowerShell, Zig, Nim, Assembly, ARM', 'Systems (9): Linux, Custom OS, Kernel Dev, RTOS, Hypervisors, Compilers, BusyBox, QEMU, Distro Hacking', 'AI/ML (8): PyTorch, TensorFlow, Anomaly Detection, Neural Nets, LLM Research, scikit-learn, NumPy, Pandas', 'Web (14): React, Next.js, FastAPI, Flask, Node.js, Deno, Express, Django, GraphQL, REST, WebSocket, Three.js, D3.js, WASM', 'Hardware (12): Arduino, Raspberry Pi, ESP32, ESP8266, STM32, MicroPython, PlatformIO, Firmware, IoT, GPS, GSM, RFID', 'Database (7): SQL, PostgreSQL, MySQL, MongoDB, Redis, SQLite, Elasticsearch', 'DevOps (8): Docker, Kubernetes, Terraform, Ansible, NGINX, CI/CD, Git, Linux Admin', 'Functional (8): Haskell, Elixir, Erlang, Clojure, OCaml, Lisp, Prolog, Racket', 'JVM/.NET (7): Java, Kotlin, Scala, Groovy, C#, F#, .NET', 'Mobile (4): Swift, Dart, Flutter, React Native', ]; return ['101 Technologies. 11 Categories.', ''].concat(cats); }, projects: () => [ 'Featured Projects:', ' 01. GoForge — Real-Time Log Analytics Engine (Go)', ' 02. VulnScope — Vulnerability Intelligence Platform (Python, FastAPI)', ' 03. ShadowSentinel — ML-Powered NIDS (Python, PyTorch)', ' 04. AI Pentest — Autonomous AI Pen Testing (Python)', ' 05. NN Playground — Visual Deep Learning (Python, PyTorch)', ' 06. GitViz — GitHub Analytics Dashboard (Go, JS)', ' 07. Ferrothorn — Async Port Scanner (Rust)', ' 08. Particle Universe — Interactive Particle Physics (Canvas)', ], github: () => [ 'GitHub: @mayank-dev-15', ' Repos: 191+', ' Stars: 201+', ' Commits: 631+', ' PRs: 114+', ' OSS: 9+ contributions', ' Profile: github.com/mayank-dev-15', ], backstory: () => [ 'The Full Story:', ' Age 3 — Dad bought first computer. Mayank started exploring.', ' Age 4 — Learned C. First program. Tried Unreal Engine.', ' Age 7 — First Linux: Parrot OS. Then Gentoo, Pentoo, Ubuntu, Kali, Garuda.', ' 2014-2022 — St Xavier\'s Cathedral School, Amravati.', ' 2023 — Father transferred from Amravati to Nagpur.', ' 2022-now — St Vincent Pallotti School, Besa, Nagpur.', ' 2024 — Webnet Institute, Manewada. Learned React + web dev. 8th grade.', ' 2020 — Started building on a secondhand machine.', ' Won ICSO Olympiad every year.', ' Now: 15yo with 191+ repos, 101 skills, building the future.', ' Goal: GSoC 2027.', ], contact: () => [ 'Contact:', ' Email: 0mayankbasena@gmail.com', ' GitHub: github.com/mayank-dev-15', ' LinkedIn: linkedin.com/in/mayank-basena', ' Twitter: @mayank_dev_15', ' Dev.to: dev.to/mayank-dev-15', ], history: () => { if (commandHistory.length === 0) return ['No commands yet.']; return commandHistory.map((c, i) => ' ' + (i + 1) + ' ' + c); }, clear: () => { body.innerHTML = ''; body.appendChild(inputLine); return null; }, }; function addLine(html, className) { const div = document.createElement('div'); div.className = 'terminal-line' + (className ? ' ' + className : ''); div.innerHTML = html; body.insertBefore(div, inputLine); body.scrollTop = body.scrollHeight; return div; } function addUserInput(text) { addLine('mayank@portfolio ~ $ ' + escapeHtml(text)); } function escapeHtml(text) { const d = document.createElement('div'); d.textContent = text; return d.innerHTML; } function timestamp() { return new Date().toLocaleTimeString('en-US', { hour12: false }); } async function sleep(ms) { return new Promise(r => setTimeout(r, ms)); } // ===== THINKING ===== function createThinkingBlock() { const block = document.createElement('div'); block.className = 'thinking-block'; block.innerHTML = '
thinking...
'; body.insertBefore(block, inputLine); body.scrollTop = body.scrollHeight; return block; } function addThinkStep(block, text) { const content = block.querySelector('.think-content'); const step = document.createElement('div'); step.className = 'think-step'; step.textContent = text; content.appendChild(step); body.scrollTop = body.scrollHeight; } function finishThinking(block) { const label = block.querySelector('.think-label'); if (label) { label.innerHTML = ' thinking complete'; setTimeout(() => { block.style.opacity = '0.6'; }, 500); } } // ===== TOOL EXECUTION ===== let injectedStyleEl = null; let highlightCount = 0; function showToolExec(name, result) { const div = document.createElement('div'); div.className = 'tool-exec'; div.innerHTML = '
[tool] ' + escapeHtml(name) + '
' + escapeHtml(result) + '
'; body.insertBefore(div, inputLine); body.scrollTop = body.scrollHeight; } function executeTool(tool) { const { name, args } = tool; try { switch (name) { // === BROWSER NAVIGATION === case 'open_tab': { if (!args.url) { showToolExec(name, 'Error: no URL'); return true; } const w = window.open(args.url, '_blank'); showToolExec(name, w ? 'Opened: ' + args.url : 'Popup blocked — allow popups for this site'); return true; } case 'goto': { if (!args.url) { showToolExec(name, 'Error: no URL'); return true; } window.location.href = args.url; showToolExec(name, 'Navigating to: ' + args.url); return true; } case 'go_back': { window.history.back(); showToolExec(name, 'Went back'); return true; } case 'go_forward': { window.history.forward(); showToolExec(name, 'Went forward'); return true; } case 'refresh': { location.reload(); showToolExec(name, 'Reloading page...'); return true; } case 'close_tab': { window.close(); showToolExec(name, 'Attempted to close tab'); return true; } case 'new_window': { const w = window.open(args.url || '', '_blank', 'width=' + (args.width || 800) + ',height=' + (args.height || 600)); showToolExec(name, w ? 'Opened popup window' : 'Popup blocked'); return true; } // === SCROLLING === case 'scroll': { const dir = args.direction === 'up' ? -1 : args.direction === 'left' ? 0 : args.direction === 'right' ? 0 : 1; const horiz = args.direction === 'left' || args.direction === 'right'; const amt = args.amount || 500; if (horiz) window.scrollBy({ left: (args.direction === 'right' ? 1 : -1) * amt, behavior: 'smooth' }); else window.scrollBy({ top: dir * amt, behavior: 'smooth' }); showToolExec(name, 'Scrolled ' + args.direction + ' ' + amt + 'px'); return true; } case 'scroll_to': { const el = document.querySelector(args.selector); if (el) { el.scrollIntoView({ behavior: 'smooth', block: 'center' }); showToolExec(name, 'Scrolled to: ' + args.selector); } else showToolExec(name, 'Element not found: ' + args.selector); return true; } case 'scroll_to_top': { window.scrollTo({ top: 0, behavior: 'smooth' }); showToolExec(name, 'Scrolled to top'); return true; } case 'scroll_to_bottom': { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); showToolExec(name, 'Scrolled to bottom'); return true; } // === DOM INTERACTION === case 'click': { const el = document.querySelector(args.selector); if (el) { el.click(); showToolExec(name, 'Clicked: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'double_click': { const el = document.querySelector(args.selector); if (el) { el.dispatchEvent(new MouseEvent('dblclick', { bubbles: true })); showToolExec(name, 'Double-clicked: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'right_click': { const el = document.querySelector(args.selector); if (el) { el.dispatchEvent(new MouseEvent('contextmenu', { bubbles: true, clientX: el.getBoundingClientRect().x, clientY: el.getBoundingClientRect().y })); showToolExec(name, 'Right-clicked: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'type_text': { const el = document.querySelector(args.selector); if (!el) { showToolExec(name, 'Not found: ' + args.selector); return true; } el.focus(); el.value = args.text || ''; el.dispatchEvent(new Event('input', { bubbles: true })); el.dispatchEvent(new Event('change', { bubbles: true })); showToolExec(name, 'Typed into: ' + args.selector); return true; } case 'clear_input': { const el = document.querySelector(args.selector); if (!el) { showToolExec(name, 'Not found: ' + args.selector); return true; } el.value = ''; el.dispatchEvent(new Event('input', { bubbles: true })); showToolExec(name, 'Cleared: ' + args.selector); return true; } case 'fill_form': { if (!args.fields || !Array.isArray(args.fields)) { showToolExec(name, 'Error: fields array required'); return true; } let filled = 0; args.fields.forEach(f => { const el = document.querySelector(f.selector); if (el) { el.value = f.value || ''; el.dispatchEvent(new Event('input', { bubbles: true })); el.dispatchEvent(new Event('change', { bubbles: true })); filled++; } }); showToolExec(name, 'Filled ' + filled + '/' + args.fields.length + ' fields'); return true; } case 'submit_form': { const el = document.querySelector(args.selector || 'form'); if (el && el.submit) { el.submit(); showToolExec(name, 'Submitted form: ' + (args.selector || 'form')); } else if (el) { el.dispatchEvent(new Event('submit', { bubbles: true })); showToolExec(name, 'Dispatched submit event'); } else showToolExec(name, 'Form not found'); return true; } case 'select_option': { const el = document.querySelector(args.selector); if (!el) { showToolExec(name, 'Not found: ' + args.selector); return true; } el.value = args.value; el.dispatchEvent(new Event('change', { bubbles: true })); showToolExec(name, 'Selected: ' + args.value + ' in ' + args.selector); return true; } case 'check_checkbox': { const el = document.querySelector(args.selector); if (el) { el.checked = true; el.dispatchEvent(new Event('change', { bubbles: true })); showToolExec(name, 'Checked: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'uncheck_checkbox': { const el = document.querySelector(args.selector); if (el) { el.checked = false; el.dispatchEvent(new Event('change', { bubbles: true })); showToolExec(name, 'Unchecked: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'hover_element': { const el = document.querySelector(args.selector); if (el) { el.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); el.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); showToolExec(name, 'Hovered: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'focus_element': { const el = document.querySelector(args.selector); if (el) { el.focus(); showToolExec(name, 'Focused: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'blur_element': { const el = document.querySelector(args.selector); if (el) { el.blur(); showToolExec(name, 'Blurred: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } // === SEARCH & INSPECTION === case 'search_page': { const q = (args.query || '').toLowerCase(); const text = document.body.innerText; const idx = text.toLowerCase().indexOf(q); if (idx >= 0) { const count = text.toLowerCase().split(q).length - 1; showToolExec(name, 'Found "' + args.query + '" — ' + count + ' occurrence(s)'); } else showToolExec(name, '"' + args.query + '" not found on page'); return true; } case 'get_info': { const meta = document.querySelector('meta[name="description"]'); showToolExec(name, 'Title: ' + document.title + '\nURL: ' + location.href + '\nDescription: ' + (meta ? meta.content : 'none')); return true; } case 'get_text': { const el = document.querySelector(args.selector); if (el) showToolExec(name, el.textContent.trim().substring(0, 500)); else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'get_html': { const el = document.querySelector(args.selector); if (el) showToolExec(name, el.outerHTML.substring(0, 1000)); else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'get_attr': { const el = document.querySelector(args.selector); if (el) showToolExec(name, args.attribute + ' = ' + el.getAttribute(args.attribute)); else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'get_value': { const el = document.querySelector(args.selector); if (el) showToolExec(name, 'value = ' + (el.value || '')); else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'count_elements': { const els = document.querySelectorAll(args.selector); showToolExec(name, els.length + ' element(s) matching: ' + args.selector); return true; } case 'list_elements': { const els = document.querySelectorAll(args.selector); const max = args.max || 20; const items = []; for (let i = 0; i < Math.min(els.length, max); i++) { const el = els[i]; const text = (el.textContent || '').trim().substring(0, 60); items.push((i + 1) + '. <' + el.tagName.toLowerCase() + '> ' + text); } showToolExec(name, els.length + ' element(s):\n' + items.join('\n')); return true; } case 'list_links': { const links = document.querySelectorAll('a[href]'); const max = args.max || 30; const items = []; for (let i = 0; i < Math.min(links.length, max); i++) { const a = links[i]; items.push((i + 1) + '. ' + (a.textContent || '').trim().substring(0, 40) + ' -> ' + a.href); } showToolExec(name, links.length + ' link(s):\n' + items.join('\n')); return true; } case 'list_images': { const imgs = document.querySelectorAll('img'); const max = args.max || 20; const items = []; for (let i = 0; i < Math.min(imgs.length, max); i++) { const img = imgs[i]; items.push((i + 1) + '. src=' + img.src.substring(0, 80) + ' alt="' + (img.alt || '') + '"'); } showToolExec(name, imgs.length + ' image(s):\n' + items.join('\n')); return true; } case 'list_forms': { const forms = document.querySelectorAll('form'); const items = []; forms.forEach((f, i) => { const inputs = f.querySelectorAll('input, textarea, select'); const fields = []; inputs.forEach(inp => fields.push(inp.name || inp.id || inp.type)); items.push((i + 1) + '. ' + (f.id || f.action || 'form') + ' fields: ' + fields.join(', ')); }); showToolExec(name, forms.length + ' form(s):\n' + items.join('\n')); return true; } case 'page_structure': { const sections = document.querySelectorAll('section, header, footer, nav, main, aside'); const items = []; sections.forEach(s => { const id = s.id ? '#' + s.id : ''; const cls = s.className ? '.' + s.className.split(' ')[0] : ''; items.push('<' + s.tagName.toLowerCase() + id + cls + '>'); }); showToolExec(name, items.join('\n')); return true; } case 'get_styles': { const el = document.querySelector(args.selector); if (!el) { showToolExec(name, 'Not found: ' + args.selector); return true; } const cs = window.getComputedStyle(el); const props = args.properties || ['color', 'fontSize', 'background', 'display', 'padding', 'margin']; const result = props.map(p => p + ': ' + cs.getPropertyValue(p)).join('\n'); showToolExec(name, result); return true; } // === CLIPBOARD === case 'copy_text': { navigator.clipboard.writeText(args.text || '').then( () => showToolExec(name, 'Copied to clipboard: "' + (args.text || '').substring(0, 50) + '"'), () => showToolExec(name, 'Clipboard access denied') ); return true; } case 'read_clipboard': { navigator.clipboard.readText().then( text => showToolExec(name, 'Clipboard: ' + text.substring(0, 500)), () => showToolExec(name, 'Clipboard access denied — use HTTPS') ); return true; } case 'copy_element': { const el = document.querySelector(args.selector); if (el) { navigator.clipboard.writeText(el.textContent).then( () => showToolExec(name, 'Copied text from: ' + args.selector), () => showToolExec(name, 'Clipboard access denied') ); } else showToolExec(name, 'Not found: ' + args.selector); return true; } // === KEYBOARD === case 'press_key': { const el = document.activeElement || document.body; const key = args.key || 'Enter'; el.dispatchEvent(new KeyboardEvent('keydown', { key, bubbles: true })); el.dispatchEvent(new KeyboardEvent('keyup', { key, bubbles: true })); showToolExec(name, 'Pressed: ' + key); return true; } case 'key_combo': { const keys = (args.keys || '').split('+'); const el = document.activeElement || document.body; const opts = { bubbles: true, cancelable: true }; keys.forEach(k => { const kl = k.toLowerCase(); if (kl === 'control' || kl === 'ctrl') return; if (kl === 'shift') return; if (kl === 'alt') return; if (kl === 'meta') return; el.dispatchEvent(new KeyboardEvent('keydown', { ...opts, key: k, ctrlKey: keys.includes('Control') || keys.includes('ctrl'), shiftKey: keys.includes('Shift'), altKey: keys.includes('Alt'), metaKey: keys.includes('Meta') })); el.dispatchEvent(new KeyboardEvent('keyup', { ...opts, key: k })); }); showToolExec(name, 'Key combo: ' + args.keys); return true; } case 'type_keys': { const el = document.activeElement || document.body; const text = args.text || ''; const delay = args.delay || 30; (async () => { for (const ch of text) { el.dispatchEvent(new KeyboardEvent('keydown', { key: ch, bubbles: true })); el.dispatchEvent(new KeyboardEvent('keypress', { key: ch, bubbles: true })); el.dispatchEvent(new KeyboardEvent('keyup', { key: ch, bubbles: true })); await sleep(delay); } })(); showToolExec(name, 'Typing: "' + text + '"'); return true; } // === STORAGE === case 'local_set': { localStorage.setItem(args.key, args.value); showToolExec(name, args.key + ' = ' + args.value); return true; } case 'local_get': { const v = localStorage.getItem(args.key); showToolExec(name, args.key + ' = ' + (v !== null ? v : '(not set)')); return true; } case 'local_remove': { localStorage.removeItem(args.key); showToolExec(name, 'Removed: ' + args.key); return true; } case 'local_clear': { localStorage.clear(); showToolExec(name, 'localStorage cleared'); return true; } case 'session_set': { sessionStorage.setItem(args.key, args.value); showToolExec(name, args.key + ' = ' + args.value); return true; } case 'session_get': { const v = sessionStorage.getItem(args.key); showToolExec(name, args.key + ' = ' + (v !== null ? v : '(not set)')); return true; } // === VISUAL === case 'highlight': { const el = document.querySelector(args.selector); if (el) { el.style.outline = '3px solid #6c63ff'; el.style.outlineOffset = '2px'; el.style.transition = 'outline-color 0.3s'; highlightCount++; setTimeout(() => { el.style.outline = ''; el.style.outlineOffset = ''; }, 3000); showToolExec(name, 'Highlighted: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'remove_highlights': { document.querySelectorAll('[style*="outline"]').forEach(el => { el.style.outline = ''; el.style.outlineOffset = ''; }); showToolExec(name, 'Removed all highlights'); return true; } case 'inject_css': { if (injectedStyleEl) injectedStyleEl.remove(); injectedStyleEl = document.createElement('style'); injectedStyleEl.textContent = args.css || ''; document.head.appendChild(injectedStyleEl); showToolExec(name, 'CSS injected (' + (args.css || '').length + ' chars)'); return true; } case 'remove_injected': { if (injectedStyleEl) { injectedStyleEl.remove(); injectedStyleEl = null; } showToolExec(name, 'Injected CSS removed'); return true; } case 'fullscreen': { if (!document.fullscreenElement) document.documentElement.requestFullscreen().catch(() => {}); else document.exitFullscreen(); showToolExec(name, 'Toggled fullscreen'); return true; } case 'zoom': { document.body.style.zoom = args.level || '1'; showToolExec(name, 'Zoom: ' + (args.level || '1')); return true; } case 'reset_zoom': { document.body.style.zoom = '1'; showToolExec(name, 'Zoom reset to 100%'); return true; } case 'dark_mode': { document.documentElement.removeAttribute('data-theme'); localStorage.setItem('theme', 'dark'); showToolExec(name, 'Dark mode enabled'); return true; } case 'light_mode': { document.documentElement.setAttribute('data-theme', 'light'); localStorage.setItem('theme', 'light'); showToolExec(name, 'Light mode enabled'); return true; } // === DOM MANIPULATION === case 'create_element': { const el = document.createElement(args.tag || 'div'); if (args.text) el.textContent = args.text; if (args.html) el.innerHTML = args.html; if (args.classes) el.className = args.classes; if (args.id) el.id = args.id; if (args.styles) Object.assign(el.style, args.styles); const parent = document.querySelector(args.parent || 'body'); if (parent) { parent.appendChild(el); showToolExec(name, 'Created <' + args.tag + '> in ' + (args.parent || 'body')); } else showToolExec(name, 'Parent not found'); return true; } case 'modify_element': { const el = document.querySelector(args.selector); if (!el) { showToolExec(name, 'Not found: ' + args.selector); return true; } if (args.styles) Object.assign(el.style, args.styles); if (args.attrs) { Object.entries(args.attrs).forEach(([k, v]) => el.setAttribute(k, v)); } if (args.text !== undefined) el.textContent = args.text; if (args.html !== undefined) el.innerHTML = args.html; showToolExec(name, 'Modified: ' + args.selector); return true; } case 'delete_element': { const el = document.querySelector(args.selector); if (el) { el.remove(); showToolExec(name, 'Deleted: ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'clone_element': { const el = document.querySelector(args.selector); if (!el) { showToolExec(name, 'Not found: ' + args.selector); return true; } const clone = el.cloneNode(true); const parent = document.querySelector(args.parent || 'body'); if (parent) { parent.appendChild(clone); showToolExec(name, 'Cloned ' + args.selector + ' to ' + (args.parent || 'body')); } else showToolExec(name, 'Parent not found'); return true; } case 'add_class': { const el = document.querySelector(args.selector); if (el) { el.classList.add(args.class); showToolExec(name, 'Added class "' + args.class + '" to ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'remove_class': { const el = document.querySelector(args.selector); if (el) { el.classList.remove(args.class); showToolExec(name, 'Removed class "' + args.class + '" from ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } case 'toggle_class': { const el = document.querySelector(args.selector); if (el) { el.classList.toggle(args.class); showToolExec(name, 'Toggled class "' + args.class + '" on ' + args.selector); } else showToolExec(name, 'Not found: ' + args.selector); return true; } // === POWER TOOLS === case 'execute_js': { const result = new Function(args.code)(); showToolExec(name, 'Result: ' + (result !== undefined ? String(result).substring(0, 500) : 'undefined')); return true; } case 'wait_for': { const timeout = args.timeout || 5000; const start = Date.now(); (async () => { while (Date.now() - start < timeout) { const el = document.querySelector(args.selector); if (el) { showToolExec(name, 'Element appeared: ' + args.selector); return; } await sleep(100); } showToolExec(name, 'Timeout: ' + args.selector + ' not found in ' + timeout + 'ms'); })(); showToolExec(name, 'Waiting for: ' + args.selector); return true; } case 'get_cookies': { showToolExec(name, document.cookie || '(no cookies)'); return true; } case 'set_cookie': { const d = new Date(); d.setTime(d.getTime() + (args.days || 30) * 86400000); document.cookie = args.name + '=' + (args.value || '') + ';expires=' + d.toUTCString() + ';path=/'; showToolExec(name, 'Cookie set: ' + args.name + '=' + args.value); return true; } case 'get_performance': { const p = performance.getEntriesByType('navigation')[0]; if (p) { showToolExec(name, 'DNS: ' + Math.round(p.domainLookupEnd - p.domainLookupStart) + 'ms\n' + 'Connect: ' + Math.round(p.connectEnd - p.connectStart) + 'ms\n' + 'TTFB: ' + Math.round(p.responseStart - p.requestStart) + 'ms\n' + 'DOM Ready: ' + Math.round(p.domContentLoadedEventEnd - p.startTime) + 'ms\n' + 'Load: ' + Math.round(p.loadEventEnd - p.startTime) + 'ms'); } else showToolExec(name, 'Navigation timing not available'); return true; } case 'get_viewport': { showToolExec(name, 'Width: ' + window.innerWidth + 'px\n' + 'Height: ' + window.innerHeight + 'px\n' + 'Scroll X: ' + window.scrollX + 'px\n' + 'Scroll Y: ' + window.scrollY + 'px\n' + 'Doc Height: ' + document.body.scrollHeight + 'px'); return true; } default: return false; } } catch (e) { showToolExec(name, 'Error: ' + e.message); return true; } } // ===== STREAMING AI ===== async function askAI(userMessage) { chatHistory.push({ role: 'user', content: userMessage }); const startTime = Date.now(); isGenerating = true; input.disabled = true; input.placeholder = 'generating response...'; inputLine.style.opacity = '0.3'; inputLine.style.pointerEvents = 'none'; const thinkBlock = createThinkingBlock(); try { let res = null; let usedProvider = null; for (const provider of PROVIDERS) { try { addLine('[' + timestamp() + '] trying ' + provider.name + ' (' + provider.model + ')...', 'dim'); const attemptRes = await fetch(provider.endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + provider.key, 'HTTP-Referer': window.location.origin, 'X-Title': 'Mayank Portfolio Terminal', }, body: JSON.stringify({ model: provider.model, messages: [ { role: 'system', content: SYSTEM_PROMPT }, ...chatHistory.slice(-20), ], temperature: 0.7, max_tokens: 4096, stream: true, }), }); if (attemptRes.ok) { res = attemptRes; usedProvider = provider.name; break; } else { addLine('[' + timestamp() + '] ' + provider.name + ' returned ' + attemptRes.status + '', 'dim'); } } catch (err) { addLine('[' + timestamp() + '] ' + provider.name + ' failed: ' + err.message + '', 'dim'); } } if (!res) throw new Error('All AI providers failed.'); addLine('[' + timestamp() + '] connected via ' + usedProvider + '', 'dim'); const reader = res.body.getReader(); const decoder = new TextDecoder(); let fullReply = ''; let buffer = ''; let inThinking = false; let thinkBuffer = ''; let responseBuffer = ''; let thinkingStarted = false; const responseDiv = document.createElement('div'); responseDiv.className = 'terminal-line'; body.insertBefore(responseDiv, inputLine); while (true) { const { done, value } = await reader.read(); if (done) break; buffer += decoder.decode(value, { stream: true }); const lines = buffer.split('\n'); buffer = lines.pop(); for (const line of lines) { if (!line.startsWith('data: ')) continue; const data = line.slice(6).trim(); if (data === '[DONE]') continue; try { const parsed = JSON.parse(data); const delta = parsed.choices?.[0]?.delta?.content; if (!delta) continue; fullReply += delta; // Handle thinking tags if (fullReply.includes('') && !fullReply.includes('')) { inThinking = true; thinkingStarted = true; } if (inThinking) { const thinkMatch = fullReply.match(/([\s\S]*?)$/); if (thinkMatch) { thinkBuffer = thinkMatch[1]; const steps = thinkBuffer.split('\n').filter(s => s.trim()); const content = thinkBlock.querySelector('.think-content'); const existing = content.querySelectorAll('.think-step'); if (steps.length > existing.length) { const newStep = document.createElement('div'); newStep.className = 'think-step'; newStep.textContent = steps[steps.length - 1].trim().replace(/^[-*>]\s*/, ''); content.appendChild(newStep); body.scrollTop = body.scrollHeight; } } if (fullReply.includes('')) { inThinking = false; finishThinking(thinkBlock); } // Don't show thinking in response div const afterThink = fullReply.replace(/[\s\S]*?<\/thinking>/g, '').trim(); responseDiv.innerHTML = afterThink + ''; } else { responseBuffer = fullReply.replace(/[\s\S]*?<\/thinking>/g, '').trim(); responseDiv.innerHTML = responseBuffer + ''; } body.scrollTop = body.scrollHeight; } catch (e) { /* skip */ } } } if (inThinking) finishThinking(thinkBlock); // Clean and set final response const finalReply = fullReply.replace(/[\s\S]*?<\/thinking>/g, '').trim(); responseDiv.innerHTML = finalReply; chatHistory.push({ role: 'assistant', content: fullReply }); // Execute tools const toolRegex = /```tool\n([\s\S]*?)\n```/g; let toolMatch; while ((toolMatch = toolRegex.exec(fullReply)) !== null) { try { const tool = JSON.parse(toolMatch[1]); if (tool.name) { // Try VFS/browser tools first, then VFS tools if (!executeTool(tool)) { executeVfsTool(tool); } } } catch (e) { showToolExec('tool', 'Parse error: ' + e.message); } } const elapsed = Date.now() - startTime; const timeStr = elapsed > 1000 ? (elapsed / 1000).toFixed(1) + 's' : elapsed + 'ms'; addLine('[' + timestamp() + '] response generated in ' + timeStr + '', 'dim'); } catch (err) { finishThinking(thinkBlock); addLine('Error: ' + err.message + '', 'error'); } isGenerating = false; input.disabled = false; input.placeholder = 'type a command or ask me anything...'; inputLine.style.opacity = '1'; inputLine.style.pointerEvents = 'auto'; input.focus(); body.scrollTop = body.scrollHeight; } function handleCommand(text) { const cmdParts = text.trim().split(/\s+/); const cmd = cmdParts[0].toLowerCase(); const cmdArgs = cmdParts.slice(1); commandHistory.push(text); historyIndex = commandHistory.length; const startTime = Date.now(); if (cmd === 'clear') { COMMANDS.clear(); return; } if (cmd === 'quit' || cmd === 'exit' || cmd === 'logout') { addLine('[' + timestamp() + '] session closed.', 'success'); setTimeout(() => { window.location.href = 'index.html'; }, 400); return; } var destructivecmds = { 'sudo rm -rf /': 'L33t translation: sUD0 rm -rf / — Th@7 15 7h3 p455w0rd 70 3v3RYB0DY\'5 r007. 4nd y0u ju57 7yp3d 17 0n MY 73rm1n4l. dYl', 'sudo rm -rf /*': 'L33t translation: 5UD0 rm -rf /* — D3l373 4ll 4773d fr0m 7h3 r007 0f 7h3 5y573m?! n00b m0v3. dYl', 'rm -rf /': 'L33t translation: rm -rf / — Th@7 w0uld d3l373 7h3 3N71r3 5y573m. 3v3n y0u d0n\'7 w4n7 7h47. dYl', 'rm -rf /*': 'L33t translation: rm -rf /* — D3l373 4ll fr0m 7h3 r007 0f 7h3 3D53m?? Y0u\'r3 j0k1ng r1gh7? dYl', 'format c:': 'L33t translation: f0rm4t c: - Ur gonna w4p d4rks1d3 3nt1r3ly. Good lUck. l0l.', 'del c:\\windows\\system32': 'L33t translation: d3l c:\\w1nd0ws\\5yst3m32 - Ur d3l3t1ng th3 0p3r4t1ng 5y5t3m?! n00b m0v3.', 'mkfs.ext4 /dev/sda': 'L33t translation: mk_f5.\/\/3x74 /d3v\/5d4 - Ur furm4tt1ng th3 wh0l3 d15k!! 15 ur l1f3 r34lly 7h47 b0r1ng.', 'dd if=/dev/zero of=/dev/sda': 'L33t translation: dd 1f=/d3v/z3r0 0f=/d3v/5d4 - Wr171ng z3r05 70 th3 wh0l3 d15k?! Ur 4ll 0ut 0f d474.', ':(){ :|: & };:': 'L33t translation: _(){ _|_& };_ - 4 fr0nk b0mb! Ur pr0c35535 w1ll mul71plv un71l th3 sy573m CR45H35. n00b.', 'shutdown -h now': 'L33t translation: 5h utd0wn -h n0w - Ur g0nn4 5hut d0wn TH3 53RV3R?! D0u67 y0u kN0w wh4t h4pp3n5 70 ur 1P 1f u d0 7h47?', 'poweroff': 'L33t translation: p0w3r0ff - Fr33z1ng 7h3 wh0l3 5y5t3m 0n purp053?! Ur m0m w0uld b3 d15pp01n73d.', 'init 0': 'L33t translation: 1n17 0 - 3v3n 7h3 5ys73m 4dm1n 54y5 n0 7h15 15 4 l0g1c4l m0v3. g37 f47 0ut 0f h3r3.' }; if (destructivecmds.hasOwnProperty(text.trim().toLowerCase())) { var responses = [ 'ACCESS DENIED — n00b detected! 😂', 'Nice try, l33t h4xx0r... but nice IP. 💀', 'L3ET? I DON\'T THINK SO. Try again with a brain. 😂', 'n00b alert! This command would destroy the system. We don\'t do that here. 🚫', 'SYSTEM PROTECTION ACTIVE. Your sad little command has been blocked. 💀', 'NAH TRYNA GET ME BANNED? That command hits different levels of illegal. 🚫', 'ALERT: Destructive command intercepted by the 1337 w4ll. You have been 5l4mm3d. 💀', 'ERROR 451: Unavailable For Legal Reasons — which is 4lw4y5 funn13r. 🚫' ]; var rIdx = Math.floor(Math.random() * responses.length); var leetTranslation = destructivecmds[text.trim().toLowerCase()]; addLine('[' + timestamp() + '] ' + responses[rIdx] + '', 'error'); addLine('[' + timestamp() + '] ' + leetTranslation + '', 'error'); return; } // VFS Linux commands var vfsCmds = ['ls','cd','pwd','cat','echo','mkdir','touch','rm','cp','mv','find','grep','head','tail','wc','sort','uniq','chmod','chown','ln','du','df','tar','zip','unzip','date','whoami','hostname','uname','uptime','free','lscpu','ps','id','groups','env','export','which','file','top','netstat','ss','lsblk','lsof']; if (vfsCmds.includes(cmd)) { var r = vfsHandleCommand(cmd, cmdArgs); if (r !== null) { r.forEach(function(l) { addLine(l); }); addLine('[' + timestamp() + '] executed in ' + (Date.now() - startTime) + 'ms'); return; } } // APK commands if (cmd === 'apk') { var r2 = apkHandleCommand(cmdArgs); r2.forEach(function(l) { addLine(l); }); addLine('[' + timestamp() + '] executed in ' + (Date.now() - startTime) + 'ms'); return; } // Neofetch with VFS info if (cmd === 'neofetch') { addLine(' .--. mayank@alpine'); addLine(' |o_o | ─────────────────'); addLine(' |:_/ | OS: Alpine Linux 3.19.1'); addLine(' // \\ \\ Host: Virtual Container'); addLine(' (| | ) Kernel: 6.6.0-Alpine'); addLine(' /\'\\_ _/`\\ Shell: bash 5.2.21'); addLine(' \\___)=(___/ CPU: Virtual vCPU @ 3.20GHz'); addLine(' Memory: 2100M / 7900M'); addLine(' Packages: ' + vfsState.installedPkgs.length + ' (apk)'); addLine('[' + timestamp() + '] executed in ' + (Date.now() - startTime) + 'ms'); return; } if (COMMANDS[cmd]) { const r = COMMANDS[cmd](); if (r) r.forEach(l => addLine(l)); addLine('[' + timestamp() + '] executed in ' + (Date.now() - startTime) + 'ms'); return; } askAI(text); } input.addEventListener('keydown', (e) => { if (e.key === 'Enter' && !isGenerating) { const text = input.value.trim(); if (!text) return; addUserInput(text); input.value = ''; handleCommand(text); } else if (e.key === 'ArrowUp') { e.preventDefault(); if (historyIndex > 0) { historyIndex--; input.value = commandHistory[historyIndex]; } } else if (e.key === 'ArrowDown') { e.preventDefault(); if (historyIndex < commandHistory.length - 1) { historyIndex++; input.value = commandHistory[historyIndex]; } else { historyIndex = commandHistory.length; input.value = ''; } } }); body.addEventListener('click', () => { if (!isGenerating) input.focus(); }); async function boot() { // Check permissions var perms = getPermissions(); if (!perms) { showPermDialog(); } else { updatePermIndicator(perms); } addLine('[' + timestamp() + '] POST check... OK', 'system'); await sleep(150); addLine('[' + timestamp() + '] loading kernel modules... OK', 'system'); await sleep(100); addLine('[' + timestamp() + '] mounting virtual filesystems... OK', 'system'); await sleep(80); addLine('[' + timestamp() + '] Alpine Linux 3.19.1 rootfs loaded (~3MB)', 'system'); await sleep(60); addLine('[' + timestamp() + '] /bin /sbin /usr /etc /home /tmp /var /proc /sys /dev mounted', 'system'); await sleep(40); for (const line of BANNER) { addLine(line, 'system'); await sleep(30); } addLine('', 'system'); addLine('[' + timestamp() + '] initializing AI subsystem... OK', 'system'); await sleep(150); addLine('[' + timestamp() + '] loading knowledge base (101 skills, 191 repos)... OK', 'system'); await sleep(100); addLine('[' + timestamp() + '] model: ' + MODEL + ' (streaming)', 'system'); await sleep(60); addLine('[' + timestamp() + '] tools: 330+ tools loaded (200+ Linux, 70+ browser, 60+ security)', 'system'); await sleep(50); addLine('[' + timestamp() + '] packages: ' + vfsState.installedPkgs.length + ' installed (apk), ' + Object.keys(APK_DB).length + ' available', 'system'); await sleep(40); addLine('[' + timestamp() + '] categories: code execution, file ops, web, system, security, AI/ML, DevOps', 'system'); await sleep(30); addLine('[' + timestamp() + '] system ready. Alpine Linux + full browser control enabled.', 'system'); addLine('', 'system'); input.focus(); } boot(); })();