{"_id":"@dragoscirjan/mcp-tuikit","_rev":"10-53cadbf091041ab15590898673f05514","name":"@dragoscirjan/mcp-tuikit","dist-tags":{"latest":"1.1.5"},"versions":{"1.0.0":{"name":"@dragoscirjan/mcp-tuikit","version":"1.0.0","_id":"@dragoscirjan/mcp-tuikit@1.0.0","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"bin":{"mcp-tuikit":"dist/index.js"},"dist":{"shasum":"ba5c2e9a7ffe5221e8a92af608dccf6f8ac776b4","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.0.0.tgz","fileCount":177,"integrity":"sha512-qdaLm267HpBaM1XPhoTrfFBjnw5LzV/NWoGQALtqR33CsM0WhQfVIj6Q7ee/QYbtgTk/DT8ZFkkOf0EV2OYHIQ==","signatures":[{"sig":"MEUCIAIYAvYgJYlh95C10RVD/kUm7LGRKMoGLlDyg+A5qWXkAiEA9ZfLHydN6o/HWoYoE9z5dmOzggp5kwrqHVCaJrd+EoE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3574098},"main":"dist/index.js","pnpm":{"onlyBuiltDependencies":["koffi","esbuild"]},"type":"module","types":"./dist/index.d.ts","gitHead":"2d6fa5a61e7a3854a348ee755dc8ac1a7399570a","scripts":{"lint":"eslint --fix .","build":"tsc -b","jscpd":"jscpd .","prepare":"husky"},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"prettier":"@templ-project/prettier","_npmVersion":"10.8.2","description":"**Model Context Protocol server for Text User Interface (TUI) and headless terminal automation**","directories":{},"lint-staged":{"*.{js,ts,mjs,cjs,tsx,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml,toml}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.5","nanoid":"^5.1.7","@modelcontextprotocol/sdk":"^1.29.0","@dragoscirjan/mcp-tuikit-tmux":"workspace:*","@dragoscirjan/mcp-tuikit-spawn":"workspace:*","@dragoscirjan/mcp-tuikit-terminals":"workspace:*","@dragoscirjan/mcp-tuikit-flow-engine":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","jscpd":"^4.0.9","eslint":"^9.39.4","vitest":"latest","prettier":"^3.8.3","typescript":"latest","@types/node":"^25.6.0","lint-staged":"^16.4.0","@xterm/xterm":"^5.5.0","@xterm/headless":"^5.5.0","@playwright/test":"^1.59.1","semantic-release":"^24.2.0","prettier-plugin-toml":"^2.0.6","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@templ-project/eslint":"latest","@templ-project/vitest":"latest","multi-semantic-release":"^3.0.2","@templ-project/prettier":"latest","@templ-project/tsconfig":"latest","@semantic-release/github":"^11.0.0","@templ-project/commitlint":"latest","@semantic-release/changelog":"^6.0.3","@dragoscirjan/mcp-tuikit-test":"workspace:*","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-tuikit_1.0.0_1777674373759_0.9040532760989821","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@dragoscirjan/mcp-tuikit","version":"1.0.1","_id":"@dragoscirjan/mcp-tuikit@1.0.1","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"bin":{"mcp-tuikit":"dist/index.js"},"dist":{"shasum":"e9b80f4447f98f715a8b62ae0e53a3e249ebd16c","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.0.1.tgz","fileCount":12,"integrity":"sha512-V3uEN7l1gImgexTuc0zs67hf22uZs77jIGBtrDtNsNMW+DScPa//a+wBSp+6MwBVirVTW9iouMd6ihQ6IizyZw==","signatures":[{"sig":"MEUCIBVegSpS0WmcSzFfOgdMjGeMuwJX7yTVzjSjEKyVgx8rAiEAiYR4qJCFwVLZYRhDdCLq9g0lanWqD6SL1F6RZBHXgIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143826},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"3d08777b41d37141a7961d0045f5d4328dd52cf8","scripts":{"lint":"eslint --fix .","build":"tsc -b"},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.5","nanoid":"^5.1.7","@modelcontextprotocol/sdk":"^1.29.0","@dragoscirjan/mcp-tuikit-tmux":"1.0.2","@dragoscirjan/mcp-tuikit-spawn":"1.0.2","@dragoscirjan/mcp-tuikit-terminals":"1.0.3","@dragoscirjan/mcp-tuikit-flow-engine":"1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"latest","typescript":"latest","@types/node":"^25.6.0","@dragoscirjan/mcp-tuikit-test":"1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-tuikit_1.0.1_1777675374259_0.049438112860063166","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@dragoscirjan/mcp-tuikit","version":"1.0.2","_id":"@dragoscirjan/mcp-tuikit@1.0.2","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"bin":{"mcp-tuikit":"dist/index.js"},"dist":{"shasum":"c863a5ead26b5f1fbbf4b875d3677960f16ea011","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.0.2.tgz","fileCount":12,"integrity":"sha512-7UO6TUI/oPgQXYsrBs4E10pd6jVivChBhkDhdAnAbfv/xpV0ou8MNRkX09X4NfzBTHJ/eImPH1C4dhdKX20gfA==","signatures":[{"sig":"MEUCIHGiTliIR4noubxcodra57ocHTNSAYMdeoFH46X6JMMAAiEAmFIwJv8cFUQu4od3g+0QFLR02t4ZjBRljxfaIM4Gwgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144300},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"b8402e8b75e461bed0825bacfadd1dbd75c871e4","scripts":{"lint":"eslint --fix .","build":"tsc -b"},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.5","nanoid":"^5.1.7","@modelcontextprotocol/sdk":"^1.29.0","@dragoscirjan/mcp-tuikit-tmux":"1.0.3","@dragoscirjan/mcp-tuikit-spawn":"1.0.3","@dragoscirjan/mcp-tuikit-terminals":"1.0.4","@dragoscirjan/mcp-tuikit-flow-engine":"1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"latest","typescript":"latest","@types/node":"^25.6.0","@dragoscirjan/mcp-tuikit-test":"1.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-tuikit_1.0.2_1777727359595_0.9931130723662642","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@dragoscirjan/mcp-tuikit","version":"1.0.3","_id":"@dragoscirjan/mcp-tuikit@1.0.3","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"bin":{"mcp-tuikit":"dist/index.js"},"dist":{"shasum":"6dc9e9f2324953e4ac622c6ba6538030ef1351fe","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.0.3.tgz","fileCount":12,"integrity":"sha512-dwZZ03PFuP2FU/tHR7g84Un8UuVQMpYjeJAT17NfA1FZML4lt6NTFJxli1bM3Z+ai5XJpLfaZIamDWxw+z6kww==","signatures":[{"sig":"MEUCIQC4OEdCzvyQZR6pIsJeuDlbW6MvDKvK6lO/G0H90oh2pAIgT6bpXh9+oNlgvvnFZOJQMcve9gn+ZKvVBnL62z6vvHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144774},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"780c5684f55ba06b24234c4eea50b52e6649fa71","scripts":{"lint":"eslint --fix .","build":"tsc -b"},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.5","nanoid":"^5.1.7","@modelcontextprotocol/sdk":"^1.29.0","@dragoscirjan/mcp-tuikit-tmux":"1.0.4","@dragoscirjan/mcp-tuikit-spawn":"1.0.4","@dragoscirjan/mcp-tuikit-terminals":"1.0.5","@dragoscirjan/mcp-tuikit-flow-engine":"1.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"latest","typescript":"latest","@types/node":"^25.6.0","@dragoscirjan/mcp-tuikit-test":"1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-tuikit_1.0.3_1777729481980_0.7091856799600798","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@dragoscirjan/mcp-tuikit","version":"1.1.0","_id":"@dragoscirjan/mcp-tuikit@1.1.0","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"bin":{"mcp-tuikit":"dist/index.js"},"dist":{"shasum":"3fd3633aed26267fcbb034e17ffe097f9c35789a","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.1.0.tgz","fileCount":16,"integrity":"sha512-KEFOaQ1N3FcBFPtyEMxiM1Xe5qeC0u6sJIAmy0mdQjDeS2r1C7UedE81FMINpAhOy7+o/rxbK52dbNd4xaLEBQ==","signatures":[{"sig":"MEUCIQC7ZPHIlA037NqThv04RM9m78gYImenqBBNN627QsSJLgIgUDEVQ4pzI9y3Xnbct27y/DBgz2yYVtzC9izwscXSV0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156454},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"188fdb9ddf56ff34959fa1463c8fb82d4070ec7c","scripts":{"lint":"eslint --fix .","build":"tsc -b"},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.5","nanoid":"^5.1.7","@modelcontextprotocol/sdk":"^1.29.0","@dragoscirjan/mcp-tuikit-tmux":"1.0.5","@dragoscirjan/mcp-tuikit-spawn":"1.1.0","@dragoscirjan/mcp-tuikit-terminals":"1.0.6","@dragoscirjan/mcp-tuikit-flow-engine":"1.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"latest","typescript":"latest","@types/node":"^25.6.0","@dragoscirjan/mcp-tuikit-test":"1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-tuikit_1.1.0_1778404993985_0.5221202737449702","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@dragoscirjan/mcp-tuikit","version":"1.1.1","_id":"@dragoscirjan/mcp-tuikit@1.1.1","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"bin":{"mcp-tuikit":"dist/index.js"},"dist":{"shasum":"2a5f923148af7289447540cf60bbe71c6cc62564","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.1.1.tgz","fileCount":16,"integrity":"sha512-lfHP55lbKrl4PECEL08rVzA8ixzyYnK7dbkl3HHuaKxt5/er4yDw+B4b22ki9O2QsbN6j3AQ5MzurHS4+ySkkA==","signatures":[{"sig":"MEYCIQCkAu443BdKXCwbuhWM69TbL25KW38m8rFe+KQ0NukcQgIhANTZjRkco3ifuieF9MNvR6vbtKqMPGkJEJKg6IAqrWvR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156928},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"32790102f8e0a5233885514f555e1c971e20416e","scripts":{"lint":"eslint --fix .","build":"tsc -b"},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.5","nanoid":"^5.1.7","@modelcontextprotocol/sdk":"^1.29.0","@dragoscirjan/mcp-tuikit-tmux":"1.0.6","@dragoscirjan/mcp-tuikit-spawn":"1.1.1","@dragoscirjan/mcp-tuikit-terminals":"1.0.7","@dragoscirjan/mcp-tuikit-flow-engine":"1.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"latest","typescript":"latest","@types/node":"^25.6.0","@dragoscirjan/mcp-tuikit-test":"1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-tuikit_1.1.1_1778411019432_0.07704099612703597","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@dragoscirjan/mcp-tuikit","version":"1.1.2","_id":"@dragoscirjan/mcp-tuikit@1.1.2","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"bin":{"mcp-tuikit":"dist/index.js"},"dist":{"shasum":"88bea5ce1a751e0862a7b45a731c9d428aa9ab99","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.1.2.tgz","fileCount":17,"integrity":"sha512-tVFwj3S97/gAHkNkcIXRjQTdSBWIQcKf0XELPQx4czLK6hlDrVzu5ihAlLCLutCiPkcBwQ1QP7eVGo3o4LAGYA==","signatures":[{"sig":"MEUCIBNdCQdP5PeYHr6FDoFbkowtzsZmbp1H+171Hh3xk14fAiEA8oYA/b2buTxH/0YLxiqH9WlVur27vPHAh5DZ7mohczI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165199},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"c0d77f53ecaa59afa70bebb252c1787cdf5fc5c2","scripts":{"lint":"eslint --fix .","build":"tsc -b","prepack":"cp ../../README.md ."},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"_npmVersion":"10.8.2","description":"**Model Context Protocol server for Text User Interface (TUI) and headless terminal automation**","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.5","nanoid":"^5.1.7","@modelcontextprotocol/sdk":"^1.29.0","@dragoscirjan/mcp-tuikit-tmux":"1.0.6","@dragoscirjan/mcp-tuikit-spawn":"1.1.1","@dragoscirjan/mcp-tuikit-terminals":"1.0.7","@dragoscirjan/mcp-tuikit-flow-engine":"1.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"latest","typescript":"latest","@types/node":"^25.6.0","@dragoscirjan/mcp-tuikit-test":"1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-tuikit_1.1.2_1778412579347_0.5598724260529699","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@dragoscirjan/mcp-tuikit","version":"1.1.3","_id":"@dragoscirjan/mcp-tuikit@1.1.3","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"bin":{"mcp-tuikit":"dist/index.js"},"dist":{"shasum":"43c8b39070d314b9fb33eac68e6479ebc67d82ad","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.1.3.tgz","fileCount":17,"integrity":"sha512-PgK5vAf9Mg0dWNmH1vN545Qh3f39LiXp89jtAac5l53N12r3DZl44f0jRN5Hll9xtsmCbv+4E8zzRMRMnxiOPA==","signatures":[{"sig":"MEYCIQC4E9WVgxhVnVymACVFa6D1/yHP3IRPcHz0A2/p6tMrWQIhAKYYPgcaWqNkggE8m7IxskeWHM2l/HpCpEL7BV0dBXqW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165823},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"8eb81bdfee89d4c0ee7df8fb8a2140de328a62ff","scripts":{"lint":"eslint --fix .","build":"tsc -b","prepack":"cp ../../README.md ."},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"_npmVersion":"10.8.2","description":"**Model Context Protocol server for Text User Interface (TUI) and headless terminal automation**","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.5","nanoid":"^5.1.7","@modelcontextprotocol/sdk":"^1.29.0","@dragoscirjan/mcp-tuikit-tmux":"1.0.7","@dragoscirjan/mcp-tuikit-spawn":"1.1.2","@dragoscirjan/mcp-tuikit-terminals":"1.0.8","@dragoscirjan/mcp-tuikit-flow-engine":"1.0.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"latest","typescript":"latest","@types/node":"^25.6.0","@dragoscirjan/mcp-tuikit-test":"1.0.7"},"_npmOperationalInternal":{"tmp":"tmp/mcp-tuikit_1.1.3_1778795316203_0.18720915225882218","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@dragoscirjan/mcp-tuikit","version":"1.1.4","_id":"@dragoscirjan/mcp-tuikit@1.1.4","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"bin":{"mcp-tuikit":"dist/index.js"},"dist":{"shasum":"621a1e9caaeb8a0ebc26fcb7c026f8755549566a","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.1.4.tgz","fileCount":17,"integrity":"sha512-Hx7HCiz5MK6iLMO8vRg5nv1wfy6OHd2nZ0k9jd0+7EEBLguz7XcNjXcn43WlIwSRvQu+NrY9YWG8bALJAVfSAA==","signatures":[{"sig":"MEUCIQCLDwVxYLjXcrQ6Cwqg0DR969dujzEW3CaE6JRST2hfMQIgUnCHkyVeKdJQs1WF+otSq0tdb963Vp/JGbgwxRHiIMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167293},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"e7a9d7e02fbac1228434c9c8f49277fda76662f3","scripts":{"lint":"eslint --fix .","build":"tsc -b","prepack":"cp ../../README.md ."},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"_npmVersion":"10.8.2","description":"**Model Context Protocol server for Text User Interface (TUI) and headless terminal automation**","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.3.6","sharp":"^0.34.5","nanoid":"^5.1.7","@modelcontextprotocol/sdk":"^1.29.0","@dragoscirjan/mcp-tuikit-tmux":"1.0.8","@dragoscirjan/mcp-tuikit-spawn":"1.1.3","@dragoscirjan/mcp-tuikit-terminals":"1.0.9","@dragoscirjan/mcp-tuikit-flow-engine":"1.0.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"latest","typescript":"latest","@types/node":"^25.6.0","@dragoscirjan/mcp-tuikit-test":"1.0.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp-tuikit_1.1.4_1779038555664_0.1951446142581319","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@dragoscirjan/mcp-tuikit","version":"1.1.5","type":"module","main":"dist/index.js","bin":{"mcp-tuikit":"dist/index.js"},"scripts":{"prepack":"cp ../../README.md .","build":"tsc -b","lint":"eslint --fix ."},"dependencies":{"@dragoscirjan/mcp-tuikit-flow-engine":"1.0.10","@dragoscirjan/mcp-tuikit-spawn":"1.1.4","@dragoscirjan/mcp-tuikit-terminals":"1.0.10","@dragoscirjan/mcp-tuikit-tmux":"1.0.9","@modelcontextprotocol/sdk":"^1.29.0","nanoid":"^5.1.7","sharp":"^0.34.5","zod":"^4.3.6"},"devDependencies":{"@dragoscirjan/mcp-tuikit-test":"1.0.9","@types/node":"^25.6.0","typescript":"latest","vitest":"latest"},"publishConfig":{"access":"public"},"_id":"@dragoscirjan/mcp-tuikit@1.1.5","gitHead":"a70890d1df078ec7c71a7b72a65e356b7bc11971","types":"./dist/index.d.ts","description":"**Model Context Protocol server for Text User Interface (TUI) and headless terminal automation**","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Lfig1zvznD0Z9jHzuuERK8nG1O9c9nK1lUfFqEHrn08T+6Gi6uFRbM9rM5ahRcbQ45iY0vO1Wldz7PogbyVzzg==","shasum":"348c8f51a1fae7519ae146654c51a786ab0a1ffa","tarball":"https://registry.npmjs.org/@dragoscirjan/mcp-tuikit/-/mcp-tuikit-1.1.5.tgz","fileCount":17,"unpackedSize":167937,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAw8nmjceCZ2pbCHv8GQ4bPmbFO3EE4u6zS02NfY3qJfAiBltgCXXrMvQvX4lXiB8u4K0i3R5TyzIulk9KMpqDBffA=="}]},"_npmUser":{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"},"directories":{},"maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-tuikit_1.1.5_1779039645409_0.3209838563877916"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-01T22:26:13.617Z","modified":"2026-05-17T17:40:45.711Z","1.0.0":"2026-05-01T22:26:14.034Z","1.0.1":"2026-05-01T22:42:54.421Z","1.0.2":"2026-05-02T13:09:19.785Z","1.0.3":"2026-05-02T13:44:42.134Z","1.1.0":"2026-05-10T09:23:14.168Z","1.1.1":"2026-05-10T11:03:39.649Z","1.1.2":"2026-05-10T11:29:39.496Z","1.1.3":"2026-05-14T21:48:36.351Z","1.1.4":"2026-05-17T17:22:35.802Z","1.1.5":"2026-05-17T17:40:45.584Z"},"description":"**Model Context Protocol server for Text User Interface (TUI) and headless terminal automation**","maintainers":[{"name":"dragoscirjannpm","email":"dragos.cirjan@gmail.com"}],"readme":"# mcp-tuikit\n\n**Model Context Protocol server for Text User Interface (TUI) and headless terminal automation**\n\n[![npm version](https://img.shields.io/npm/v/@dragoscirjan/mcp-tuikit.svg)](https://www.npmjs.com/package/@dragoscirjan/mcp-tuikit)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that enables AI agents (Claude Code, Cursor, Windsurf, OpenCode) to launch, interact with, and observe any terminal application in isolated sessions. `mcp-tuikit` uses `tmux` and various native terminal backends to let AI interact with complex TUIs like `nvim`, `btop`, `lazygit`, or standard shells, providing both text and visual (PNG) snapshotting of terminal states.\n\n**🚀 Fully Cross-OS Compatible**: Works seamlessly across macOS, Linux, and Windows.\n\n## Table of Contents\n\n- [Why mcp-tuikit?](#why-mcp-tuikit)\n- [Use Cases](#use-cases)\n- [Quick Start](#quick-start)\n- [Available Tools](#available-tools)\n- [How It Works](#how-it-works)\n- [System Requirements & Installation](#system-requirements--installation)\n- [Known Issues & Limitations](#known-issues--limitations)\n- [Documentation](https://dragoscirjan.github.io/mcp-tuikit/)\n\n## Why mcp-tuikit?\n\n- **Isolated Sessions:** Each session runs in an isolated `tmux` environment. AI interactions do not leak into or disrupt your host terminal.\n- **Headless & Visual:** Capture accurate textual screen state and visual PNG screenshots of running TUI applications, even in headless CI environments like `Xvfb`, `Sway`, or `kwin`.\n- **Flow Execution Engine:** Execute pre-defined flows (YAML) against terminal instances. Great for integration testing or guiding autonomous agent tasks.\n- **Cross-Platform:** Built to support macOS, Linux, and Windows natively. Works with standard terminals (Terminal.app, iTerm2, Gnome Terminal, Windows Terminal) and modern GPU-accelerated emulators (Alacritty, WezTerm, Ghostty, Kitty).\n\n## Use Cases\n\n### Automated CLI/TUI Testing\n\nRun end-to-end tests for your CLI tools or TUI applications. `mcp-tuikit` launches each app in its own session, interacts via emulated keystrokes, and verifies results through text or visual PNG screenshots.\n\n### AI-Driven Terminal Automation\n\nLet AI agents like Claude Code autonomously operate complex terminal environments. The agent can spawn `vim`, send `j`, `k` keystrokes, wait for UI updates, and read the screen state, creating a complete feedback loop.\n\n### Headless CI Integration\n\nIntegrate terminal GUI testing into CI/CD pipelines. `mcp-tuikit` supports `xterm.js` via Playwright, or Linux native headless servers (`Sway`, `kwin`, `Xvfb`), making it perfect for GitHub Actions or GitLab CI.\n\n## Quick Start\n\n**1. Install**\n\n```bash\n# Install globally via npm\nnpm install -g @dragoscirjan/mcp-tuikit\n```\n\n**2. Configure Claude Code**\n\n```bash\nclaude mcp add mcp-tuikit -- npx -y @dragoscirjan/mcp-tuikit\n```\n\n**3. Configure Cursor** (`~/.cursor/mcp.json`)\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-tuikit\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dragoscirjan/mcp-tuikit\"]\n    }\n  }\n}\n```\n\n**4. Use it**\n\nAsk your AI agent:\n\n> \"Create a new terminal session, run `btop`, take a visual snapshot of the output, and then close the session.\"\n\n## Available Tools\n\n| Tool                        | Parameters                                       | Description                                                |\n| --------------------------- | ------------------------------------------------ | ---------------------------------------------------------- |\n| `create_session`            | `command`, `cols?`, `rows?`                      | Create a new terminal session running a specific command.  |\n| `close_session`             | `session_id`                                     | Close an active terminal session.                          |\n| `create_snapshot`           | `session_id`, `format` (txt/png/both), `intent?` | Capture a txt and/or png snapshot from an active session.  |\n| `send_keys`                 | `session_id`, `keys`, `submit?` (bool)           | Send keystrokes to an active session using tmux format.    |\n| `wait_for_text`             | `session_id`, `pattern`, `timeout_ms?`           | Wait for a regex pattern to appear in the terminal output. |\n| `run_flow`                  | `yaml_path?`, `yaml_string?`, `cols?`, `rows?`   | Run a TUI YAML flow and capture artifacts autonomously.    |\n| `list_sessions`             | _(none)_                                         | List all active terminal sessions and their states.        |\n| `check_system_dependencies` | _(none)_                                         | Check if the host system has all required dependencies.    |\n\n**Resources:**\n\n- `terminal://session/{id}/screen.txt?maxLines={limit}`: Read the raw plaintext buffer of the active terminal session.\n\n## How It Works\n\n```mermaid\nflowchart TD\n    Agent[\"AI Agent (Claude, Cursor)\"] <-->|MCP Protocol| Server[\"mcp-tuikit Server\"]\n\n    Server --> |create_session| TMUX[\"tmux Session\"]\n    Server --> |send_keys| TMUX\n    Server --> |create_snapshot (txt)| TMUX\n\n    TMUX --> |Spawns via Backend| Emulator[\"Terminal Emulator / Headless Engine\"]\n\n    Emulator --> |Alacritty/WezTerm/etc| Native[\"Native OS Window\"]\n    Emulator --> |xterm.js| Playwright[\"Headless Browser\"]\n    Emulator --> |Xvfb/Sway/kwin| LinuxHeadless[\"Linux Headless Compositor\"]\n\n    Server --> |create_snapshot (png)| ScreenCapture[\"Sharp / osascript / grim / Playwright\"]\n```\n\n## System Requirements & Installation\n\n`mcp-tuikit` relies on OS-level utilities to manage pseudo-terminals and capture screens.\n\n### Core Dependency: `tmux`\n\n`tmux` (v3.3a+, heavily recommended v3.5a+) is absolutely required on all platforms.\n\n- **macOS:** `brew install tmux`\n- **Linux:** `sudo apt install tmux` or `sudo dnf install tmux`\n- **Windows:** `winget install arndawg.tmux-windows` (Do _not_ use MSYS2 or WSL tmux if running natively).\n\n### Platform-Specific Dependencies\n\n- **macOS:** Uses built-in tools (`osascript`, `screencapture`). No extra dependencies needed.\n- **Linux (Headless Native):** Requires a virtual compositor (`Xvfb` for X11, `sway` or `kwin` for Wayland).\n- **Windows:** Uses native standard process APIs (`cmd`, `powershell`).\n\n## Known Issues & Limitations\n\nPlease see the [Troubleshooting Documentation](https://dragoscirjan.github.io/mcp-tuikit/possible-problems/) for full details. Notable limits include:\n\n- **No Native Headless Mode on Windows/macOS:** Spawning a native terminal (like Alacritty) on Mac/Windows _will_ open a physical window on your screen. True headless native rendering requires Linux (`Xvfb`/`Sway`/`kwin`). For invisible execution on Mac/Windows, you must use the `xterm.js` backend (via Playwright).\n- **WezTerm + Sway:** WezTerm snapshots result in a black screen under headless Sway because it strictly requires hardware-accelerated GPU contexts (Vulkan/OpenGL).\n- **macOS Snapshot Flakiness:** Timing-based macOS screenshots (using `CGWindowList`) can be flaky under heavy CPU load, sometimes capturing blank frames.\n- **Tmux dependency:** All terminal operations are wrapped in `tmux` to guarantee stable pseudo-terminal (PTY) allocation and reliable ANSI text extraction.\n- **No Mouse Support:** Currently, there is no mouse interaction support. Operating a terminal purely via standard keystrokes is required. Headed mode mouse automation presents significant technical challenges across multiple OS environments.\n- **No Video Recording:** The toolkit currently only captures static text and PNG snapshots. Video recording of terminal sessions is planned for a future release.\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for architectural guidelines, strict formatting/linting rules, and the PR process. Test-driven development is enforced via `vitest`.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}