{"_id":"@ellery/terminal-mcp","_rev":"11-2891a09ba2016ae9a7375ec0bf5d957f","name":"@ellery/terminal-mcp","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.1":{"name":"@ellery/terminal-mcp","version":"0.1.1","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.1.1","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"7e3a53966e774140f720405b49a0cb519f7634a2","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.1.1.tgz","fileCount":73,"integrity":"sha512-KeoZDHtksgLhztFI23sku1JMwQUdERn++qyxdUDI2I1jyfXSiS4iNXqw/SBbKQq6NaRyvMq1vzD/QSb7JEzU6w==","signatures":[{"sig":"MEYCIQD2YToXEFU0ZtdrTVbbS215J+ut7ZEdsGBfOJs8KbrrKwIhAKczQAa9ejPpWDoMK8FGLb9tKt6DKv7Aa/sYbbWq5UlR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141325},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d495f537fcf11c7dfab9d1a84ccecb01c77e8484","scripts":{"dev":"tsx src/index.ts","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.0","node-pty":"^0.10.1","@xterm/headless":"^5.3.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.1.1_1769138589485_0.34993925763529465","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ellery/terminal-mcp","version":"0.2.0","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.2.0","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"baad53c4eb23ec2ba46a5058edf0b67349e75156","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.2.0.tgz","fileCount":77,"integrity":"sha512-255k9heoRl8BpKsucWzGe5buCwpdgdk8hI7tWuRWZWCTCpSZP9Pm7K/lVvdYU/JZi8gXFROSet3PlcomJVCZBQ==","signatures":[{"sig":"MEUCIQDm+kLSZbJSxXiaA4hqxBR/fuCt3VBMct5n26zaMSMpLgIgXLlsPpB0MDu1a9/OmCQSgZexPVjZFtKw7QKUR3x+ySw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139218},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b48793d54757f1ae9b058b36b6b5285af72b0840","scripts":{"dev":"tsx src/index.ts","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.0","@xterm/headless":"^5.3.0","@modelcontextprotocol/sdk":"^1.0.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.2.0_1769381868393_0.6360516899719024","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ellery/terminal-mcp","version":"0.2.1","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.2.1","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"e25a6cb1b5469a4acf28d3abf6e05872dd264189","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.2.1.tgz","fileCount":81,"integrity":"sha512-3v+dcN328048Ai0oLfHoLFek1tqpcUuz8k6R+3r2VOEMjCy47/6UVVMbEkqZR3oCvWVWSt4qFoLucUxiHXdKHw==","signatures":[{"sig":"MEQCIAzGeLmbf2sYg/qh3r94rEkzv/SCvLcz2itSGA3lEAMrAiBe4/HR3OLZep6ASsbquxivf/PkiJaVwMphhHNpsz+Tiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140641},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"071a9c2960ec924ca40ceab385bab93178b9a4c0","scripts":{"dev":"tsx src/index.ts","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.0","@xterm/headless":"^5.3.0","@modelcontextprotocol/sdk":"^1.0.0","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.2.1_1769383521651_0.552870180545014","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ellery/terminal-mcp","version":"0.2.2","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.2.2","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"4f32d5dc9ac11934dc2edf1f76638c4594c7cf8e","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.2.2.tgz","fileCount":125,"integrity":"sha512-sMciQiaCtVJrdEjfYTVoWugLftpFGb4r58BLmDAbPwQ12aiFLf4cKDaVVT+fo755jV3bkv42JF/mbtab+il2YA==","signatures":[{"sig":"MEUCIF969WuoRkr5X/8LiDjvc8P5WK+JDTNN/UheJLYPQoOeAiEAmZLUv88CS4jNY+YnSi0+aupcpJ7uKpxNOjgSB8Ry/5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":296078},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bdf6790ba5b437ec3f4c212b5ccf1806ac621d6c","scripts":{"dev":"tsx src/index.ts","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.0","node-pty":"^1.2.0-beta.8","@xterm/headless":"^5.3.0","@modelcontextprotocol/sdk":"^1.0.0","@anthropic-ai/sandbox-runtime":"^0.0.32"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.2.2_1769609941309_0.9201930077976725","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ellery/terminal-mcp","version":"0.3.0","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.3.0","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"82def66c58a2eedc1339d27f23bb218391dab6ae","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.3.0.tgz","fileCount":142,"integrity":"sha512-/EoJVz8TZSrYjewNKcW8c+JJQRwG716+nZJ2ABvpInNUNz0N5rJIHSJGBy6AbvM3i1+22gsjFbjgJqd4i0hB1w==","signatures":[{"sig":"MEUCIGNyRF44Smr/Pd+GRhro7JiPqZBNyRxFNbmBxh+Fbb20AiEAk9/rREI1vV7bSLYrmWS/VdDpBcMi3MupQP9jjXTsPXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":653019},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"17e21e6aadd7d89c03498b231b3b739248a6d7c5","scripts":{"dev":"tsx src/index.ts","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","node-pty":"^1.2.0-beta.8","@xterm/headless":"^5.3.0","@modelcontextprotocol/sdk":"^1.0.0","@anthropic-ai/sandbox-runtime":"^0.0.32"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"optionalDependencies":{"@resvg/resvg-js":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.3.0_1777125464892_0.2119563750763096","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@ellery/terminal-mcp","version":"0.3.1","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.3.1","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"aa56f9bac165b52ef9cbb775f58695f9b146f798","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.3.1.tgz","fileCount":142,"integrity":"sha512-XGznSWh+TmJN2YvZshI/mb1ZLYOn3qOEoLK+odO3+Jm9CEjW7Y66twGKq9B3sILBqGWN2sV3Xvcm29Db16+8uw==","signatures":[{"sig":"MEYCIQCau+/9IQmNchN3xgAKATCupQsepKuilrGmPo8Wxhy2ggIhAOTsvuYXvPBRVKczlxDuSdnbIIAgpnyy7xPC22c/uu8v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":654137},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7ef669e82dda926ee41156eb22314206f9b5998c","scripts":{"dev":"tsx src/index.ts","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","node-pty":"^1.2.0-beta.8","@xterm/headless":"^5.3.0","update-notifier":"^7.3.1","@modelcontextprotocol/sdk":"^1.0.0","@anthropic-ai/sandbox-runtime":"^0.0.32"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/update-notifier":"^6.0.8"},"optionalDependencies":{"@resvg/resvg-js":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.3.1_1777128152066_0.2284248683116159","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ellery/terminal-mcp","version":"0.4.0","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.4.0","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"ab43397eeb40c4b6dbf0ac7a37c956041c70dfc6","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.4.0.tgz","fileCount":150,"integrity":"sha512-kHHjb49pUx5dra7qA3KNtL97flH1FQkgcuRt85e4SyFb1BmXepSMt3PAECuRlOMVMiJGxXwetk7etEG5C+skMg==","signatures":[{"sig":"MEQCIEsCwO8ChBpHfAlbq35K+BojrhhH5s3NAzFFlmxmpbleAiBhFWYKRb+FpmJSo/8Ds4cgj6riwK2oODZkSAmLYcKfkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":692560},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c0267427e486d94d7cd4aff55d96518b219011b0","scripts":{"dev":"tsx src/index.ts","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","node-pty":"^1.2.0-beta.8","smol-toml":"^1.6.1","@xterm/headless":"^5.3.0","update-notifier":"^7.3.1","@modelcontextprotocol/sdk":"^1.0.0","@anthropic-ai/sandbox-runtime":"^0.0.32"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/update-notifier":"^6.0.8"},"optionalDependencies":{"@resvg/resvg-js":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.4.0_1777134583296_0.22868945695985943","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@ellery/terminal-mcp","version":"0.4.1","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.4.1","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"74adc697df3dabd7f2a89cd7b08633423bd8d5d1","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.4.1.tgz","fileCount":150,"integrity":"sha512-aZ9HvKf4d6a+nXzeYjaK+wW7h0yRYV7ieqhZjBkbj67AHOp67JCLEv4cSsrE/SyhNobCloF2FYiFl8yuVaPgzQ==","signatures":[{"sig":"MEUCICXi+sJkjpOgqUGvbG2VUrlE2IpQgWLAC6ImVDpZ29vMAiEA2nf4M8+/380CimGMrkLhkdcTNkbrf9QOSQvVMU9Ofyo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":692729},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ba50ee5d839217a4c4b816a341c401292037019d","scripts":{"dev":"tsx src/index.ts","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","node-pty":"^1.2.0-beta.8","smol-toml":"^1.6.1","@xterm/headless":"^5.3.0","update-notifier":"^7.3.1","@modelcontextprotocol/sdk":"^1.0.0","@anthropic-ai/sandbox-runtime":"^0.0.32"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/update-notifier":"^6.0.8"},"optionalDependencies":{"@resvg/resvg-js":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.4.1_1777144799680_0.1542290361757248","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@ellery/terminal-mcp","version":"0.4.2","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.4.2","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"7f63ca0573729c606009b7441eed2f1f5f8806ce","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.4.2.tgz","fileCount":150,"integrity":"sha512-Sbpn/RujU8qh+Z6vZ92gOp3QST9pLTsdTXTVFzWZeHRh8cDcoIYJif57f1ZFjGtzCDMU0UBhOKpCzVvQ2XGR0w==","signatures":[{"sig":"MEUCIQDlQrk8EpWRR49bkRGfUKt3A+6eIZ86AQmIQDdMj8DZ5wIgEyPDgb4uUYci6dPVgLlcubQt0nD5rsgjEivlJ1poVEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":692921},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"56d885fb0a5e1b7200e9bb6da0c62cd6f613d91a","scripts":{"dev":"tsx src/index.ts","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","node-pty":"^1.2.0-beta.8","smol-toml":"^1.6.1","@xterm/headless":"^5.3.0","update-notifier":"^7.3.1","@modelcontextprotocol/sdk":"^1.0.0","@anthropic-ai/sandbox-runtime":"^0.0.32"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/update-notifier":"^6.0.8"},"optionalDependencies":{"@resvg/resvg-js":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.4.2_1777146402835_0.26266807941936543","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ellery/terminal-mcp","version":"0.5.0","keywords":["mcp","terminal","pty","xterm","ai","claude"],"author":{"name":"Ellery Familia"},"license":"MIT","_id":"@ellery/terminal-mcp@0.5.0","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"bin":{"terminal-mcp":"dist/index.js"},"dist":{"shasum":"92ba0a6bb009df959c9d3f81c2fd184964a224bf","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.5.0.tgz","fileCount":154,"integrity":"sha512-b1N+p19kmLFKndUlw0fK+u6HxNmfWIkVpL6I2jnQ4mpx1lrf/om8HVaEU1jLjQAWQPAZd7sI7JHLaXHXvtZtOQ==","signatures":[{"sig":"MEUCIQD6F1QEY1cMf7ZFhVbG4mUJljzIOWFd1Hn5E9TXEhQ4HAIgF0DZD5DO4fZ49xDjUzad/VfzfQtOqc7g8PL8zc5Ddag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":703915},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f16426bbc8c181d7af3c01af0a216741b96c3716","scripts":{"dev":"tsx src/index.ts","test":"npm run build && node test/run.mjs","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"repository":{"url":"git+https://github.com/elleryfamilia/terminal-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"A headless terminal emulator exposed via MCP for AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","node-pty":"^1.2.0-beta.8","smol-toml":"^1.6.1","@xterm/headless":"^5.3.0","update-notifier":"^7.3.1","@modelcontextprotocol/sdk":"^1.0.0","@anthropic-ai/sandbox-runtime":"^0.0.32"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/update-notifier":"^6.0.8"},"optionalDependencies":{"@resvg/resvg-js":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/terminal-mcp_0.5.0_1787312809277_0.11460635879529546","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@ellery/terminal-mcp","version":"0.5.1","description":"A headless terminal emulator exposed via MCP for AI assistants","author":{"name":"Ellery Familia"},"repository":{"type":"git","url":"git+https://github.com/elleryfamilia/terminal-mcp.git"},"bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","type":"module","main":"dist/index.js","bin":{"terminal-mcp":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","prepare":"npm run build","test":"npm run build && node test/run.mjs"},"dependencies":{"@anthropic-ai/sandbox-runtime":"^0.0.32","@modelcontextprotocol/sdk":"^1.0.0","@xterm/headless":"^5.3.0","node-pty":"^1.2.0-beta.8","smol-toml":"^1.6.1","update-notifier":"^7.3.1","zod":"^3.23.0"},"optionalDependencies":{"@resvg/resvg-js":"^2.6.0"},"devDependencies":{"@types/node":"^20.0.0","@types/update-notifier":"^6.0.8","tsx":"^4.0.0","typescript":"^5.0.0"},"engines":{"node":">=18.0.0"},"keywords":["mcp","terminal","pty","xterm","ai","claude"],"license":"MIT","_id":"@ellery/terminal-mcp@0.5.1","gitHead":"8c029cdde241287836297b4b056252bbe676ca7d","types":"./dist/index.d.ts","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-sgyJDGjFY19LHJ7QL088KGWSLdKq7nBhtuiLVr++IzubYjwyq3FpkETEzq0/R61sqs4jyKPlKNGMxfQx27Ui8w==","shasum":"d5ec3dde26b8aefcd79cbeb015d4a3210e4ba98d","tarball":"https://registry.npmjs.org/@ellery/terminal-mcp/-/terminal-mcp-0.5.1.tgz","fileCount":154,"unpackedSize":703906,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ellery%2fterminal-mcp@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGm2Se6u5dfmYLoQGCc+nXe8tH/MMh8QHk4JwPrEu5ZLAiEA3NvPYmxJlxOHukIc28HutzbhsIEHU4d+h1xt6kMi4JU="}]},"_npmUser":{"name":"elleryfamilia","email":"ellery@familia.me"},"directories":{},"maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/terminal-mcp_0.5.1_1787320611317_0.2588651731488112"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-23T03:23:09.407Z","modified":"2026-08-21T13:56:51.835Z","0.1.1":"2026-01-23T03:23:09.667Z","0.2.0":"2026-01-25T22:57:48.549Z","0.2.1":"2026-01-25T23:25:21.789Z","0.2.2":"2026-01-28T14:19:01.458Z","0.3.0":"2026-04-25T13:57:45.070Z","0.3.1":"2026-04-25T14:42:32.339Z","0.4.0":"2026-04-25T16:29:43.527Z","0.4.1":"2026-04-25T19:19:59.869Z","0.4.2":"2026-04-25T19:46:43.011Z","0.5.0":"2026-08-21T11:46:49.435Z","0.5.1":"2026-08-21T13:56:51.453Z"},"bugs":{"url":"https://github.com/elleryfamilia/terminal-mcp/issues"},"author":{"name":"Ellery Familia"},"license":"MIT","homepage":"https://github.com/elleryfamilia/terminal-mcp#readme","keywords":["mcp","terminal","pty","xterm","ai","claude"],"repository":{"type":"git","url":"git+https://github.com/elleryfamilia/terminal-mcp.git"},"description":"A headless terminal emulator exposed via MCP for AI assistants","maintainers":[{"name":"elleryfamilia","email":"ellery@familia.me"}],"readme":"<p align=\"center\">\n  <img src=\"logo.png\" alt=\"Terminal MCP\" width=\"600\">\n</p>\n\n<p align=\"center\">\n  <strong>Let AI see and interact with your terminal.</strong>\n</p>\n\n<p align=\"center\">\n  Terminal MCP gives LLMs a shared view of your terminal session. Perfect for debugging CLIs and TUI applications in real-time, or letting AI drive terminal-based tools autonomously.\n</p>\n\n## Install\n\n```bash\nnpm install -g @ellery/terminal-mcp\n```\n\nOr via install script:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/elleryfamilia/terminal-mcp/main/install.sh | bash\n```\n\n### Configure your AI tools\n\nWire `terminal-mcp` into the MCP config of every AI tool installed on your machine in one shot:\n\n```bash\nterminal-mcp setup                      # detect & install for all detected tools\nterminal-mcp setup --dry-run            # preview without writing\nterminal-mcp setup --client claude-code,gemini   # specific tools only\nterminal-mcp setup --uninstall          # remove the entry from each tool\n```\n\nSupported clients (each gets the right schema for its config format):\n\n| Client | Config file | Format |\n|---|---|---|\n| OpenAI Codex CLI | `~/.codex/config.toml` | TOML |\n| GitHub Copilot CLI | `~/.copilot/mcp-config.json` | JSON |\n| Gemini CLI | `~/.gemini/settings.json` | JSON |\n| OpenCode | `~/.config/opencode/opencode.json` | JSON |\n| Claude Code | `~/.claude.json` | JSON |\n| Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) / `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows) | JSON |\n\nA `.bak` of any pre-existing config is written next to the original on first install. The `terminal-mcp` entry is added without disturbing other servers or unrelated keys; running `setup` again is a no-op.\n\n### Upgrading\n\n```bash\nnpm install -g @ellery/terminal-mcp@latest\n```\n\nInteractive mode will print a banner on next launch when a newer release is available — `terminal-mcp` checks the npm registry once per day and caches the result. Headless and MCP-client modes never check or print anything (so MCP stdio stays clean). To opt out entirely, set `NO_UPDATE_NOTIFIER=1` or pass `--no-update-notifier`.\n\n## Features\n\n- **Full Terminal Emulation**: Uses xterm.js headless for accurate VT100/ANSI emulation\n- **Cross-Platform PTY**: Native pseudo-terminal support via node-pty (macOS, Linux, Windows)\n- **MCP Protocol**: Implements Model Context Protocol for AI assistant integration\n- **Session Recording**: Record terminal sessions to asciicast format for playback with asciinema\n- **Simple API**: Nine tools covering input, observation, recording, and session lifecycle\n- **Headless Mode**: Run as a standalone MCP server without a TTY — ideal for CI, containers, and non-interactive environments\n- **Multi-Session**: Run multiple isolated terminal sessions in one process, addressed by `sessionId`\n- **Sandbox Mode**: Optional security restrictions for filesystem and network access\n\n## Building from Source\n\n```bash\nnpm install\nnpm run build\n```\n\n## Usage\n\n### MCP Configuration\n\nAdd to your MCP client settings:\n\n```json\n{\n  \"mcpServers\": {\n    \"terminal\": {\n      \"command\": \"terminal-mcp\"\n    }\n  }\n}\n```\n\nWith custom options:\n\n```json\n{\n  \"mcpServers\": {\n    \"terminal\": {\n      \"command\": \"terminal-mcp\",\n      \"args\": [\"--cols\", \"100\", \"--rows\", \"30\", \"--shell\", \"/bin/zsh\"]\n    }\n  }\n}\n```\n\n### Command-Line Options\n\n```\nterminal-mcp [OPTIONS]\n\nOptions:\n  --cols <number>        Terminal width in columns (default: 120)\n  --rows <number>        Terminal height in rows (default: 40)\n  --shell <path>         Shell to use (default: $SHELL or bash)\n  --headless             Run in headless mode (embedded PTY + MCP over stdio, no TTY needed)\n  --sandbox              Enable sandbox mode (restricts filesystem/network)\n  --sandbox-config <path> Load sandbox config from JSON file\n  --version, -v          Show version number\n  --help, -h             Show help message\n\nRecording Options:\n  --record [mode]     Enable recording (default mode: always)\n                      Modes: always, on-failure, off\n  --record-dir <dir>  Recording output directory\n                      (default: ~/.local/state/terminal-mcp/recordings)\n  --idle-time-limit <sec>   Max idle time between events (default: 2s)\n  --max-duration <sec>      Max recording duration (default: 3600s)\n  --inactivity-timeout <sec>  Stop after no output (default: 600s)\n\nMulti-Session Options:\n  --max-sessions <n>           Max concurrent sessions (default: 5)\n  --session-idle-timeout <sec> Idle non-default sessions are auto-destroyed\n                               after this period (default: 600s)\n```\n\n## Headless Mode\n\nBy default, Terminal MCP uses a **dual-process architecture**: you run `terminal-mcp` in an interactive terminal (which creates a Unix socket), then your MCP client spawns a second instance that connects to that socket. This requires a TTY.\n\n**Headless mode** (`--headless`) eliminates this requirement by spawning an embedded PTY internally and serving MCP directly over stdio in a single process. No interactive terminal session, no socket — just a self-contained MCP server with a built-in terminal.\n\n### When to use headless mode\n\n- **CI/CD pipelines** — no TTY available\n- **Docker containers** — no interactive shell to run alongside\n- **Remote/cloud environments** — MCP servers spawned by automation\n- **Simplified setup** — single process, no socket coordination needed\n\n### Configuration\n\n```json\n{\n  \"mcpServers\": {\n    \"terminal\": {\n      \"command\": \"terminal-mcp\",\n      \"args\": [\"--headless\", \"--cols\", \"120\", \"--rows\", \"40\"]\n    }\n  }\n}\n```\n\n### How it works\n\n```\nMCP Client (Claude Code, etc.)\n    │ STDIO (JSON-RPC)\n    ▼\nterminal-mcp --headless\n    ├── MCP Server (stdio transport)\n    ├── Terminal Emulator (@xterm/headless)\n    └── Embedded PTY (node-pty)\n            │\n            ▼\n        Shell Process (bash, zsh, etc.)\n```\n\nIn headless mode, the terminal session is initialized eagerly at startup, so all tools (`type`, `sendKey`, `getContent`, `takeScreenshot`, `startRecording`, `stopRecording`, `createSession`, `listSessions`, `destroySession`) are available immediately.\n\n## MCP Tools\n\nAll input/output tools (`type`, `sendKey`, `getContent`, `takeScreenshot`) accept an optional `sessionId` argument. Omit it to target the default session; pass the ID returned by `createSession` to drive a specific session.\n\n### `type`\nSend text input to the terminal.\n\n```json\n{\n  \"name\": \"type\",\n  \"arguments\": {\n    \"text\": \"echo hello\"\n  }\n}\n```\n\n### `sendKey`\nSend special keys or key combinations.\n\n```json\n{\n  \"name\": \"sendKey\",\n  \"arguments\": {\n    \"key\": \"Enter\"\n  }\n}\n```\n\nSupported keys:\n- Basic: `Enter`, `Tab`, `Escape`, `Backspace`, `Delete`\n- Arrow: `ArrowUp`, `ArrowDown`, `ArrowLeft`, `ArrowRight`\n- Navigation: `Home`, `End`, `PageUp`, `PageDown`, `Insert`\n- Function: `F1` through `F12`\n- Control: `Ctrl+A` through `Ctrl+Z`, `Ctrl+C`, `Ctrl+D`, etc.\n\n### `getContent`\nGet the terminal buffer as plain text.\n\n```json\n{\n  \"name\": \"getContent\",\n  \"arguments\": {\n    \"visibleOnly\": false\n  }\n}\n```\n\n### `takeScreenshot`\nCapture the terminal state. Supports three output formats:\n\n| Format | Description |\n|--------|-------------|\n| `text` (default) | JSON with plain text content, cursor position, and dimensions |\n| `ansi` | JSON with ANSI color escape codes preserved in the content field |\n| `png` | Color screenshot as a PNG image (requires `@resvg/resvg-js`) |\n\n```json\n{\n  \"name\": \"takeScreenshot\",\n  \"arguments\": { \"format\": \"text\" }\n}\n```\n\nThe `ansi` format reconstructs SGR escape sequences from the terminal's cell buffer, preserving 16-color, 256-color, and 24-bit truecolor attributes along with bold, dim, italic, and underline styles.\n\nThe `png` format returns an MCP `image` content block with base64-encoded PNG data, rendered with the One Dark color theme and macOS-style window chrome.\n\n### `startRecording`\nStart recording terminal output to an asciicast v2 file.\n\n```json\n{\n  \"name\": \"startRecording\",\n  \"arguments\": {\n    \"mode\": \"always\",\n    \"idleTimeLimit\": 2,\n    \"maxDuration\": 3600\n  }\n}\n```\n\nOptions:\n- `mode`: `always` (save all) or `on-failure` (save only on non-zero exit)\n- `outputDir`: Custom output directory\n- `idleTimeLimit`: Max seconds between events (caps pauses in playback)\n- `maxDuration`: Auto-stop after N seconds\n- `inactivityTimeout`: Auto-stop after N seconds of no output\n\n### `stopRecording`\nStop a recording and finalize the asciicast file.\n\n```json\n{\n  \"name\": \"stopRecording\",\n  \"arguments\": {\n    \"recordingId\": \"abc123\"\n  }\n}\n```\n\n### `createSession`\nCreate a new terminal session and return its metadata. Use the returned `sessionId` to target this session in subsequent tool calls.\n\n```json\n{\n  \"name\": \"createSession\",\n  \"arguments\": {\n    \"shell\": \"/bin/zsh\",\n    \"cols\": 100,\n    \"rows\": 30\n  }\n}\n```\n\nAll arguments are optional. Returns:\n\n```json\n{\n  \"sessionId\": \"3029d\",\n  \"shell\": \"/bin/zsh\",\n  \"cols\": 100,\n  \"rows\": 30,\n  \"createdAt\": \"2026-04-25T12:58:01.072Z\",\n  \"lastActivityAt\": \"2026-04-25T12:58:01.072Z\",\n  \"isDefault\": false\n}\n```\n\n### `listSessions`\nList all active sessions including the default. Reports configured limits.\n\n```json\n{ \"name\": \"listSessions\", \"arguments\": {} }\n```\n\n### `destroySession`\nDestroy a session by ID. The default session cannot be destroyed.\n\n```json\n{\n  \"name\": \"destroySession\",\n  \"arguments\": { \"sessionId\": \"3029d\" }\n}\n```\n\n## Multi-Session\n\nBy default, every tool call without a `sessionId` targets a single auto-created **default session** — the same behavior the project has always had. Pass `sessionId` to drive multiple isolated PTYs from one process.\n\n- The default session is created on first use and cannot be destroyed.\n- Additional sessions are created by `createSession` and tracked until they're destroyed or idle-evicted (`--session-idle-timeout`, default 600s).\n- Concurrent sessions are capped at `--max-sessions` (default 5).\n- An active recording captures output from all sessions in the process.\n\nTypical use case: an AI agent driving a long-running build in one session while running diagnostics in another, without command interleaving.\n\n## Sandbox Mode\n\nRun the terminal with restricted filesystem and network access:\n\n```bash\n# Interactive permission configuration\nterminal-mcp --sandbox\n\n# With a config file\nterminal-mcp --sandbox --sandbox-config ~/.terminal-mcp-sandbox.json\n```\n\nThe interactive mode shows a TUI dialog to configure permissions:\n\n<p align=\"center\">\n  <img src=\"sandbox-permissions.png\" alt=\"Sandbox Permissions Dialog\" width=\"400\">\n</p>\n- **Read/Write**: Full access (current directory, /tmp, caches)\n- **Read-Only**: Can read but not modify (home directory)\n- **Blocked**: No access (SSH keys, cloud credentials, auth tokens)\n\nExample config file:\n\n```json\n{\n  \"filesystem\": {\n    \"readWrite\": [\".\", \"/tmp\", \"~/.cache\"],\n    \"readOnly\": [\"~\"],\n    \"blocked\": [\"~/.ssh\", \"~/.aws\", \"~/.gnupg\"]\n  },\n  \"network\": {\n    \"mode\": \"all\"\n  }\n}\n```\n\nPlatform support:\n- **macOS**: Full support via sandbox-exec (Seatbelt)\n- **Linux**: Full support via bubblewrap (requires `bwrap` installed)\n- **Windows**: Graceful fallback (runs without sandbox)\n\nSee [Sandbox Documentation](./docs/sandbox.md) for detailed configuration options.\n\n## Recording\n\nTerminal MCP can record sessions to [asciicast v2](https://docs.asciinema.org/manual/asciicast/v2/) format, compatible with [asciinema](https://asciinema.org/) for playback.\n\n### Quick Start\n\n```bash\n# Start with recording enabled\nterminal-mcp --record\n\n# Run your commands, then exit\nexit\n\n# Output shows the saved file path:\n# Recordings saved:\n#   ~/.local/state/terminal-mcp/recordings/20240115_143022.cast\n#\n# Play with: asciinema play <file>\n```\n\n### Playback\n\nInstall asciinema to play back recordings:\n\n```bash\n# macOS\nbrew install asciinema\n\n# Linux/pip\npip install asciinema\n\n# Play a recording\nasciinema play ~/.local/state/terminal-mcp/recordings/20240115_143022.cast\n\n# Play at 2x speed\nasciinema play -s 2 recording.cast\n```\n\n### Recording Modes\n\n- **`always`** (default): Save every recording\n- **`on-failure`**: Only save if the session exits with a non-zero code (useful for debugging failed CI runs)\n\n```bash\n# Only save recordings when something fails\nterminal-mcp --record=on-failure\n```\n\n### MCP Tool Recording\n\nAI assistants can also control recording programmatically via MCP tools:\n\n1. Call `startRecording` to begin capturing\n2. Perform terminal operations\n3. Call `stopRecording` to finalize and save\n\nThis enables AI-driven workflows like \"record this debugging session\" or \"capture this demo\".\n\n## Architecture\n\nTerminal MCP has three operating modes:\n\n| Mode | Flag | Stdin | Description |\n|------|------|-------|-------------|\n| **Interactive** | *(default)* | TTY | User gets a shell; AI connects via Unix socket |\n| **Client** | *(default)* | non-TTY | Connects to an interactive session's socket, serves MCP over stdio |\n| **Headless** | `--headless` | any | Self-contained: embedded PTY + MCP server over stdio |\n\n### Headless mode (recommended for MCP configs)\n\n```\nMCP Client (Claude Code, etc.)\n    │ STDIO (JSON-RPC)\n    ▼\nterminal-mcp --headless\n    ├── MCP SDK (@modelcontextprotocol/sdk)\n    ├── Terminal Emulator (@xterm/headless)\n    └── Embedded PTY (node-pty)\n            │\n            ▼\n        Shell Process (bash, zsh, etc.)\n```\n\n### Interactive + Client mode (two-process)\n\n```\nterminal-mcp (interactive, in your terminal)\n    ├── User shell (stdin/stdout)\n    └── Unix socket server (/tmp/terminal-mcp.sock)\n            ▲\n            │ JSON-RPC over socket\n            ▼\nterminal-mcp (client, spawned by MCP client)\n    └── MCP server (stdio transport)\n```\n\n## Example Session\n\n```bash\n# Type a command\n{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"type\",\"arguments\":{\"text\":\"ls -la\"}}}\n\n# Send Enter key\n{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"sendKey\",\"arguments\":{\"key\":\"Enter\"}}}\n\n# Get the output\n{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"getContent\",\"arguments\":{}}}\n```\n\n## Development\n\n```bash\nnpm run build    # Compile TypeScript\nnpm run dev      # Run with tsx (development)\n```\n\n## Documentation\n\nSee the [docs](./docs/) folder for detailed documentation:\n\n- [Overview](./docs/index.md)\n- [Installation](./docs/installation.md)\n- [Tools Reference](./docs/tools.md)\n- [Recording](./docs/recording.md)\n- [Configuration](./docs/configuration.md)\n- [Sandbox Mode](./docs/sandbox.md)\n- [Examples](./docs/examples.md)\n- [Architecture](./docs/architecture.md)\n\n## Requirements\n\n- Node.js 18.0.0 or later\n- Windows 10 version 1809 or later (for ConPTY support)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}