{"_id":"pi-kot","_rev":"40-819d658334d3b0efbe119430210f6cca","name":"pi-kot","dist-tags":{"latest":"0.1.40"},"versions":{"0.1.0":{"name":"pi-kot","version":"0.1.0","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.0","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"552a8c5bbf24948b5eb8735f31907cf504f507d2","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.0.tgz","fileCount":222,"integrity":"sha512-GArEulW6it6ZA6XS7hhLUAVmlFFpM5XgWIu24C3vdVPg+vbG9wlUWtBQEoxsayjvIHAgDoNvbjOe1D3eqI0zxw==","signatures":[{"sig":"MEUCIF/VPhhigiKxhK3fJWaFVDviBfNHHn0SUoUuwQKnluVtAiEAmcDBxid7nG6181xA6XrvjW9nAbynoWimZ55a7i8oYXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10150509},"type":"module","engines":{"node":">=18"},"gitHead":"081b6ecc85c71581bd69f9a27364efdb7b5293ce","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.78.0","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"0.78.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.0_1781661288803_0.27230520703581185","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"pi-kot","version":"0.1.1","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.1","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"4f1b45d7089d771691e40915c9c0b50f187a6367","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.1.tgz","fileCount":222,"integrity":"sha512-o4RtmN22IpBEaA6H4WpXp6c5HNxGGq9yRyL/O6Y9cJvb6W8tmbN9XJI2SI1OO33+trGQmC94hzgLNxwC8VE+dA==","signatures":[{"sig":"MEYCIQDGMGGA0ZYhWN7EKsbBmK35ZxPqXtxyTiowaqE1nXLT3wIhALTUsQX5gVC+svPX+/CpCvwDy5TY8RQTwYn57SSTgTEd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10150909},"type":"module","engines":{"node":">=18"},"gitHead":"081b6ecc85c71581bd69f9a27364efdb7b5293ce","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.78.0","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"0.78.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.1_1781661638511_0.15190873544459493","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"pi-kot","version":"0.1.2","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.2","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"a8b50c5148d57f41787f65ffe311def664f80fd1","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.2.tgz","fileCount":222,"integrity":"sha512-vTV4sOLMPXZp7dsuBvHMDU15uJTnVqzHTYSqCr+0EV+W2VDjlgginq0JzEq1MfsytKuyYQJ94DIY6PQL3fHHLg==","signatures":[{"sig":"MEYCIQDtGUTkUsmpAkb8eFJv6pl3sZjK1SgIkCrBo3Qka25q2AIhALmxwobQv/4Am04w8Rv72yby4zo+RVIMG2Bc3YRC71zR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10153028},"type":"module","engines":{"node":">=18"},"gitHead":"b484474fb0c5559fc2b1e96795ebf3c38925a7a3","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.78.0","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"0.78.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.2_1781663013063_0.1738633068715132","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"pi-kot","version":"0.1.3","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.3","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"4a23881e17b5b842b235710b4dce9a0e5238dd03","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.3.tgz","fileCount":222,"integrity":"sha512-JlEiWm/AWyVk1AzC6HgMk8WF0LaXBA8WwzfSFKZ0txwO+x38p9htwuZ5bJWsED18F4heSIm/XUqX53Au+MZsNw==","signatures":[{"sig":"MEUCIQCMf1NlRzUvDScy74uIsK7Pl36hHyKKWFmxKUC/hhGu9wIgDw+BuuspQIbKa8dfL0FPC4MQJSERVFY3KQeWCCcQ5iM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10173864},"type":"module","engines":{"node":">=18"},"gitHead":"64d7c72be9c2d038a6e479e3b0b459531b88d01f","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.78.0","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"0.78.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.3_1781675848061_0.30402194078154987","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"pi-kot","version":"0.1.4","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.4","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"945ea6aa9ddb70af3c3440c6f1483769a657fc65","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.4.tgz","fileCount":246,"integrity":"sha512-Uz4jUMexIsC5S6M4XIKgQ3Ea3hNdXjirVSdA6usEre+yUjjJC+i3YkOyGZQRed+/Y4A9laFi83+0IhUR3VeG8w==","signatures":[{"sig":"MEUCIQCvo4TCQUktJHK0Hg0dJRz5hHEeOREazrSosTG+W6Ai3QIge45Om38OGZ6DakWTcTpdoBLKm7ZBddb9eaET6xgfHOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10378534},"type":"module","engines":{"node":">=18"},"gitHead":"78f03924558971c6a2aba5e9540f59c6aadfa997","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.78.0","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"0.78.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.4_1781700176673_0.08098453977020115","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"pi-kot","version":"0.1.5","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.5","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"3e45bcf0ede615b447a2566856bbf5ebd1e18977","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.5.tgz","fileCount":266,"integrity":"sha512-SyP7/49HL4bTl1nwPdvkgcA3bfeQ0H1kloHdnsnrWK36KmQOm8AyYPhQdT1+tUGskuHA2maZqH/3sZo/BrVBYw==","signatures":[{"sig":"MEQCIQD6oOoEY8jGi5E2ipL21ngf+/lz4J6/r2GG6BckMJ54/QIfS34HYK6yUrG+c63c+VqwVP0cWUw2YbsxiuDePe1NtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10763214},"type":"module","engines":{"node":">=18"},"gitHead":"ed2ffdf8c958646abe9af8cc2b3986b22c11b9db","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.79.6","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.79.6","@earendil-works/pi-coding-agent":"^0.79.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.5_1781831928791_0.19583963263858672","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"pi-kot","version":"0.1.6","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.6","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"513ce0324863f462c826892e6efb106230f00171","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.6.tgz","fileCount":266,"integrity":"sha512-eCAwiX4TpX0mR0K3qLkArWOPhOag+vHozgLoII0M623gMczv1dqqeVY2kL0I//nIAXZU61UR6h76y5KjjgNWIQ==","signatures":[{"sig":"MEUCIQCrCk8FNwh6tIu9awfcvPSfJN84rGIjtFGXybwW6dJN2AIgS7EOlWYSQp98cbwKvJmM6os3WWPiZjBUQIrIwPLdGNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10795079},"type":"module","engines":{"node":">=18"},"gitHead":"a0c57820ef7dd0b89a7b3197e0ba3eebcbf7dac8","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.79.6","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.79.6","@earendil-works/pi-coding-agent":"^0.79.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.6_1781858182949_0.6180348826735509","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"pi-kot","version":"0.1.7","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.7","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"e958faa3f72204ca08820c49d4691e331c4ea22c","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.7.tgz","fileCount":266,"integrity":"sha512-Y5RNXWhLpRBK4xj9vICpFFtxZcj0hgsn1Pw2Dc1vzOMCxoG6I83z42GGO7o+L9RZD1CEW6jVAaF4ssto3Ql/Fw==","signatures":[{"sig":"MEQCIGX4magClCToOT++6ut4nhFHW0YQdV1zjXBypQajwKtMAiApz6hJtZT9Dk1HDAcdXcBC0HFWDGsggXYf5TAbBN0bOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10799109},"type":"module","engines":{"node":">=18"},"gitHead":"6e95e5cb03b64f5d2ad43cfa90d139aff7913465","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.79.6","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.79.6","@earendil-works/pi-coding-agent":"^0.79.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.7_1781863159613_0.09354230525285567","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"pi-kot","version":"0.1.9","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.9","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"cefba084642a010f69037d9886bf38b1c2616ef0","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.9.tgz","fileCount":274,"integrity":"sha512-zbMEzZtC7NwUFR42PGxbfeLLAsccQdth9JLv2hI86qhYwnExsOeMIxD90OxlpIlT1BfUbxi2o68vnIh02b1i2w==","signatures":[{"sig":"MEUCIBdHDU75/OL+2Yu84xdg/eJycNHQCWRZsndiziCQtvIfAiEA+4zH33xfKzKGv1SZG/f572CxzLpc1f5Mar+OV+SzdxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10873439},"type":"module","engines":{"node":">=18"},"gitHead":"400a396804f86575dd780be121ec16b3430cccd4","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.79.6","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.79.6","@earendil-works/pi-coding-agent":"^0.79.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.9_1782058007531_0.5075176162555444","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"pi-kot","version":"0.1.10","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.10","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"269f8fc28961f8308e206eb3f27f0a83e976868d","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.10.tgz","fileCount":274,"integrity":"sha512-wliye6tQdYFwyu5aQTQtRZrvgdYzXnGeEEefYk4yvZKW6lUpQQ3C8Q/axLOyQg5cqpUra2YP7/BEj1Us7l7P1Q==","signatures":[{"sig":"MEQCIAk5aYQTYwyh7eE2l0ZwnQyDK/YzCJWN2gjexs2v+EBIAiBQv3kBvnanykl5rAVwRQTFhATu3Ij7FezmIx0jGKHDcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10908050},"type":"module","engines":{"node":">=18"},"gitHead":"edea68d1693d73cd0268c2f56aa76ba5e9de46aa","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.79.6","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.79.6","@earendil-works/pi-coding-agent":"^0.79.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.10_1782101596970_0.6992472940122796","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"pi-kot","version":"0.1.11","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.11","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"e348ae54de267a423df6883d5f00d64b8d601eba","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.11.tgz","fileCount":274,"integrity":"sha512-CM/LiqVd76WEKJ37lrT0GpDvgfSf0IGXWh+dYB2x0nhijFbSdAXMky70jdX955nS8FD7ViQIUlS6w3YkSmrqog==","signatures":[{"sig":"MEUCIQD86RVVRMATuPlJh/NJebXHzJmWKEDMRUWQJdZ6/Pn0qAIgb2+H+/GOIh98AtmDPszvNvgYtSjbfMujWYNoTseCBJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10952483},"type":"module","engines":{"node":">=18"},"gitHead":"95ac97e31c67a04707fc08f141d3e94fff34af91","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.79.6","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.79.6","@earendil-works/pi-coding-agent":"^0.79.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.11_1782115352432_0.5833810379290865","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"pi-kot","version":"0.1.12","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.12","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"3a6c91eda386ae17d6c65bfdcf3dcbb898d71e26","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.12.tgz","fileCount":278,"integrity":"sha512-9rJfGhUQ+DDedsvkzPOLIZOiY7K4j0aQw/mzrla+PFdY74IZrcqTO3TxNf5f577NyNxIcDA/jt5dR1AdyxUjcw==","signatures":[{"sig":"MEUCIQCF5E+JrBHaNMkHLXu5IlggMSQviNbGBNXVExd1X+49pAIgAYKMPTj9iNR6Pyb0tEOYtgUsrQlnRKa4ymPmZV/Rk0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10975298},"type":"module","engines":{"node":">=18"},"gitHead":"3524f8ac2417b65d0b995d5ea3c76629f82f5a89","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.79.6","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.79.6","@earendil-works/pi-coding-agent":"^0.79.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.12_1782263046090_0.7559483292192624","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"pi-kot","version":"0.1.13","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.13","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"fb1b946174ca4c3cc46d001e05ad7855a2bdbf20","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.13.tgz","fileCount":282,"integrity":"sha512-C27/2xZY5or3stIb6AUYXl/vv3otWWFfWa0xVeQXXSKpTkWz/PceMCAuZ9PyHmd/XQ21Nt8bHB76IjFgJt7K6w==","signatures":[{"sig":"MEUCID3uMhNi6GWSp6HVvRM3Hp9D2ivTDaxq2FBZADMpWu5LAiEAoBgfBJTGpxre1ZlJzfQcw0E8Mw9krTMNrcoN5zF7Ajs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11027759},"type":"module","engines":{"node":">=18"},"gitHead":"c3154e0ba4e6926bab85108debf4908b08fa5b15","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.79.6","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.79.6","@earendil-works/pi-coding-agent":"^0.79.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.13_1782367058251_0.10287699801364125","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"pi-kot","version":"0.1.14","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.14","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"a01564af7cfe9811311dea1894f3b5061b54693c","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.14.tgz","fileCount":290,"integrity":"sha512-Hqn3KOjxXai+W0dAZg7aRCPljrU8hriz4obfYAn+LP50JAAZ4XVT6A1sB1iewmTM/SqSAkM8sBa69H7I4OEanQ==","signatures":[{"sig":"MEQCIDwVNjZdiwNxxRNFlHOG0Dh2bE5P2iHz1t4qdJ89w1T5AiAe/19ZsYLwgiEFSKTDrViwGWkOrX3FtBjKzrhcKZONSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12242703},"type":"module","engines":{"node":">=18"},"gitHead":"beee40cb82199ee604216c3427b916ab3eba7c28","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.14_1782891084382_0.4828922933403035","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"pi-kot","version":"0.1.15","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.15","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"7980b1742e1837210c8e0f20f757f4bbdaabf946","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.15.tgz","fileCount":298,"integrity":"sha512-GtisM5AJFd6TkuxgD46woqrfI6TrXj49+xf3MUe8G8WGKvqwZDctv6Pks3uDAIlgrjWwGk4vRWus9wBZjX9waQ==","signatures":[{"sig":"MEUCICGip/UlX9T8DqdKmOBo/wB99idF9DKmIV3PG78u0xBIAiEA4jzQuU+wCmMStS1v00BjJV0HQM3dg9L+VMtGgEDyKLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12424201},"type":"module","engines":{"node":">=18"},"gitHead":"f6816527d91280671eab2ab9eaffbe8bf1be8cc4","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.15_1782956036590_0.09898591323141614","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"pi-kot","version":"0.1.16","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.16","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"ea4dd6c845edf0548423aced58a8f21f3907845d","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.16.tgz","fileCount":298,"integrity":"sha512-1AQUVWt91z3t4HlTQdVS2Rfal1jX6Q6QN2HJ5zmcx2pS9ZACDE/5LeiP9zpuK9EaBFC34qcpxX70hds6HyVWUg==","signatures":[{"sig":"MEYCIQCgdlqBBoX4tV9yrum4vDfp1KSPfM7Cr/r3i/UznuJETQIhAPCqiBC41/Xq1mV6rE7x5cDAzEE5CB8smabwtoMH+xGO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12431040},"type":"module","engines":{"node":">=18"},"gitHead":"0729205abfddb1afbcabc94d692c2763be500420","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.16_1782973266653_0.9290481731301292","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"pi-kot","version":"0.1.17","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.17","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"16866a13ecba7405daad63d8511b27c3452911e3","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.17.tgz","fileCount":302,"integrity":"sha512-Xc7dsewRpsIKxSy2CxXpZNl4SoUPXOLOPiOxEkfleVTBNjUDpYptPvEg39JrXM4i4tT9ZkNhb86AUCsPqg6p5g==","signatures":[{"sig":"MEUCIGXkSeHYKL6uWa+U6vKi8qYL4SMWGtwF1lXEGtzpiQ6jAiEAmJp6+SJlmSqNJAKFv2SSiLdky4f0Vuy+FZCYB+itjSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12676419},"type":"module","engines":{"node":">=18"},"gitHead":"0232552bb73be7c48ad2a9c92c07cdd555f2b1cf","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.17_1783301472330_0.1591395554012871","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"pi-kot","version":"0.1.18","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.18","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"08054ddd94b36e85907c5780a12ad27ae7c8774d","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.18.tgz","fileCount":302,"integrity":"sha512-p0T4uZctCjfZBNYMkS5YuXpcbaJbo3rACEQWozWfBkULhk/px2gq9B7PfSWEuBvpujHIJTX6CVU1cAhks4oGaQ==","signatures":[{"sig":"MEUCIHhrbyUlvaAJHCSv9RPoFmmeDHYZbAQ5ebs6WDK19y4oAiEA4O3hmzAulZ952uWQNI3fuad9w2IHCGPgI0BStlfGj2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12680925},"type":"module","engines":{"node":">=18"},"gitHead":"f8c8fc0ccbdddea5d318a1f04682cecb8ab37ba5","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.18_1783318557798_0.6213576023336551","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"pi-kot","version":"0.1.19","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.19","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"3ee2b94c795198cb28b05574d0d9aff3323ad4e0","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.19.tgz","fileCount":330,"integrity":"sha512-W37PdFeup4jPjh9DHZBlt+mfg5WZRn4ViP1LXYgn5HAE+1psrhLbMEG8McC6dI/J9m0qOwasRqs4Hi3rvqnVzA==","signatures":[{"sig":"MEUCIQDaFJj+vgr2RhMHNQWRm4LKSnIc6jOHTzEndcNM+6G8GQIgSBpRSFkh8OYjJykbL0bO35ilSMGc/KHLt4uZ1zAm4VI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12829118},"type":"module","engines":{"node":">=18"},"gitHead":"1268ffb75ef83bb3e3fe5025a9d74925b0243a9c","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.19_1783326762719_0.28629524043846866","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"pi-kot","version":"0.1.20","keywords":["pi","coding-agent","ai","llm","agent","webui","fastify","react"],"license":"MIT","_id":"pi-kot@0.1.20","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"homepage":"https://github.com/YOUR_USERNAME/pi-kot#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/pi-kot/issues"},"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"fae49438821c084b075f7eaea33a85abe8210961","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.20.tgz","fileCount":330,"integrity":"sha512-SMQ0cG3UeYOLH8XliBfzFLWqWcsu2tWCpoZUx4Pk9ewru45Aro3TUc0LBX/FtAUTKN8tg5I+WB7FQ/KVeT2qaQ==","signatures":[{"sig":"MEQCIEevLhSibCHqJW014y52M+xnNdM6eCbBQxKp0tvIXJnxAiAiK+TD3DuLNLgj5QMVfQTJUTfbJmJV9NARxjhkhPc0JQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12829214},"type":"module","engines":{"node":">=18"},"gitHead":"31ffe6491c209c12f23c732fb198be164a118fe8","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/pi-kot.git","type":"git"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.20_1783328276727_0.9572837463992252","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"pi-kot","version":"0.1.21","_id":"pi-kot@0.1.21","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"c47f10995c636610c41358e83aa973976a87b43d","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.21.tgz","fileCount":2,"integrity":"sha512-1kqgLdcsX1o3JRIZymdqCe6OLDhS50mDSw9C4paLwAPoQKNfLKIAfM37FDE2iSRzY8XoOBL7A0fXipMi1b+oww==","signatures":[{"sig":"MEQCIFTwFuYQZsOA9vVjzvEmk1mZaNcT+w3Ahv6ZpBtbPhr2AiB3hnXbqRNT/bNDwwy5OcXd9NEhLa5b+e8wklkUPnTOKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11999},"type":"module","gitHead":"b614f267f4f94e0bf1d57368c1c5e02f8dd15cee","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@ayulab/pi-rewind":"^0.3.1","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.21_1783435022342_0.8678086360533868","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"pi-kot","version":"0.1.22","_id":"pi-kot@0.1.22","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"def933f194dd32fde64f7cb6614018cbb042acb2","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.22.tgz","fileCount":349,"integrity":"sha512-2h5amqfFEaMdl39RYvKsAhj9X+rRiWIMfyd8T7ehAJfyKLTXStbjQGIYCIVjp+YG9+DAysleCSx7QoLWDGo20g==","signatures":[{"sig":"MEQCIByzJaasu7Rm131RkV4Sr5uRgPTg9rd9WSQXoVFb2FPfAiB4ySDM6C0cjQb1FWmbJfgzPxWX1JKEmlyZy8Pf+6myEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12853145},"type":"module","gitHead":"b614f267f4f94e0bf1d57368c1c5e02f8dd15cee","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@ayulab/pi-rewind":"^0.3.1","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.22_1783435159533_0.7654436631151995","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"pi-kot","version":"0.1.23","_id":"pi-kot@0.1.23","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"f0e4933c4d43156efd5f13b6b57b9c9cdc40013f","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.23.tgz","fileCount":349,"integrity":"sha512-P+6dM2Zhi3xWR2RBmSCh1Lr28Kqctv8lIzSEi9OzryXrt2rE1afcRZd1mNShoSojdMfm0jb15R4uQrWMdlbesQ==","signatures":[{"sig":"MEUCIFknRz+wgT2hifCtH/VYR2CN1xO/5k1pPUsKjeN9/rbDAiEAn68hGSfsjbwGsi3j2g3RXCOxg1PO/Ju/yheiMic/J5s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12853155},"type":"module","gitHead":"b614f267f4f94e0bf1d57368c1c5e02f8dd15cee","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@ayulab/pi-rewind":"^0.3.1","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.23_1783435339066_0.3287251528955837","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"pi-kot","version":"0.1.24","_id":"pi-kot@0.1.24","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"381b4e03247348a572105492a543a962509fb76d","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.24.tgz","fileCount":349,"integrity":"sha512-O/WPfwR18gfKXPObmE58oK4GBjVrHksWhLbvXTX7+JhiranYQPVtyeNJe7Ok5C3GzkG/zmLSU3vJe9OfIRNm8w==","signatures":[{"sig":"MEQCICsx9ID1ql3IVs6b6F1kvubJi+TTN7R+3oGTA8MwFHuAAiAdYLLFaOrrXIFzWgsvX9wOFs26lbhCqnUb0CfdgVZX8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12854195},"type":"module","gitHead":"b614f267f4f94e0bf1d57368c1c5e02f8dd15cee","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.24_1783435484129_0.8712990504237954","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"pi-kot","version":"0.1.25","_id":"pi-kot@0.1.25","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"8c900e96e8778d978a9c700179ab2861f4aaf4f5","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.25.tgz","fileCount":349,"integrity":"sha512-3E8/zXFifdN0EzkDgVXFaXIPLh7QSrP7dk18TL5jXywkot21LKLp5UbyelPWS+FAFqoCB1RipXPxImxB4vF7rw==","signatures":[{"sig":"MEYCIQCVd11KsvNdqSn8/B7y2nS6G9ySOqgkQhgsck48yoj16AIhANHoPJ6au5mCw50Y+fFxZAsMjoOlsilBAZS4Cxhdvzsm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12854692},"type":"module","gitHead":"d669ac59b9fea9c1905cb2d958077f33b53a34e9","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.25_1783471725049_0.8125571298907523","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"pi-kot","version":"0.1.26","_id":"pi-kot@0.1.26","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"341989b260a801c080777540e99034a8edc113c6","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.26.tgz","fileCount":349,"integrity":"sha512-Y8RuJxorDF7RkO7MY0tW9rlK06PYCA+sfl4CD5SGIssRnxC2LmnWztT1WRLmjJZZeUr3bbtpzu+Z0W0ehgWG4w==","signatures":[{"sig":"MEYCIQDzD81wGdeP2qCMgkrifis0BLZUkFYjDHYEzJYSlmiM1QIhANK9h0S/h47YmjgHHhqGh1OwTzPH7rx4R515ZyXVDxhU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13506347},"type":"module","gitHead":"8bbf4a2de10e0d92de708d1caf0beaf66abe620a","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.26_1783495000554_0.04017145962772117","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"pi-kot","version":"0.1.27","_id":"pi-kot@0.1.27","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"d200f31782b4c44f1a09a4900635cda1a971cba1","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.27.tgz","fileCount":353,"integrity":"sha512-Im3O0JMulugRleumIHR26/reTfuhguZDAolhuykG7TFd/ykclNaVormpqtHvDT4r15OnUUyQn/cASmi808JgRg==","signatures":[{"sig":"MEUCIC2a+59V3FmFApnMfAaxiHE0ksmfwp/7vLDwvU30xfLQAiEAsWxHOYd4X9RF539y3Du+g94z3MCz5ikv7t4usPT61M4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13631053},"type":"module","gitHead":"1c05dc1c07ac9522d27ce4d7d154c4b5cc25e940","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.27_1783675376896_0.8478271448793515","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"pi-kot","version":"0.1.28","_id":"pi-kot@0.1.28","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"564dbfad22afef8328c29910c11badd23efee487","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.28.tgz","fileCount":357,"integrity":"sha512-cVhUGsrUM+wOXfCCtkfcwt1IYdxBBhnRc9UThdHD26zbNnBUlPX6MXYMqAw4S8end19AyiJ5GmmjP4GmFsDSHw==","signatures":[{"sig":"MEUCIQDvVYYmRCoV4DVoQ4YnbGwA1f3NQo12G2daZtTqgx/lnwIgbaRg6le1DDhqM35jNTxNZY2LwYsz0X3UKXOLn9Tt/1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13990706},"type":"module","gitHead":"5759ca977c9022d8d097b975c2420b41a08f30c1","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.28_1783991253906_0.2801248903809459","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"pi-kot","version":"0.1.29","_id":"pi-kot@0.1.29","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"06c6786d3e43a10f6bef1dae10d86ed76c1fca0e","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.29.tgz","fileCount":362,"integrity":"sha512-DWdPq9GvXrI6t00Y5o/1AXDTPlWIu/UIiVxv9LBJKAzaLUMIC4hDAmX/EEypPP8kAzezGssCG64zAwpz6VkhEw==","signatures":[{"sig":"MEUCIEiKyE3y2Um3mG/jpRvFu79tInVa92ss/5xjawz3A90vAiEAo3LdjkkT0mNooer+AjBxan2epCxfozHRUHODY+dBFBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14082006},"type":"module","gitHead":"d42ddb4bc2fd0a739087965f5dc99e88f26f63db","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.29_1784193540003_0.25209150281087234","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"pi-kot","version":"0.1.30","_id":"pi-kot@0.1.30","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"cd805edc5d70df1b142090cf8c128af4d26e2fec","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.30.tgz","fileCount":362,"integrity":"sha512-9HBgu9sEoc+r6EIRgZFo11KFvzXsaLRlhNlqfQOPsancolpf3ezZ1NIBD6zlEH9oTcjZWwxheMWqDIpQnKPrLQ==","signatures":[{"sig":"MEUCIQDFx8wUJnSFO5oG470kFyUiGwPQ6+RjjiyWtZ75tGJGIQIgU+vl5pHxZiegPWo9FYylsZZfTHh3ve2qZB0KBW3M3ss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14152475},"type":"module","gitHead":"d8f10bf41a1f465dbbd0640e9a77086010f5dfc2","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.30_1784299273803_0.4684855113878206","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"pi-kot","version":"0.1.31","_id":"pi-kot@0.1.31","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"3acf2736966e4e7fee5b4ab207c54a82208917cd","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.31.tgz","fileCount":362,"integrity":"sha512-kM5aJzoNMsLwIFJJ+6K6GhXHrpafFskhvNqsFaZHg846poUjtCQVrQiFPCIjpULDcKhxcAzeThdl50ZT/8jjrQ==","signatures":[{"sig":"MEQCICkBRgetCgA74GEmnAujdUjVD9dzO2WKoNmVfUvy//vlAiBbFRMwSym6eS2TVVD2q0x/DVWR0FGe/g9Aq8eYmHVKQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14204025},"type":"module","gitHead":"ecab57dc1698de5f26b516cf695d1d41c5509348","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.80.2","@earendil-works/pi-coding-agent":"^0.80.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.31_1784538942923_0.8046782897662874","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"pi-kot","version":"0.1.32","_id":"pi-kot@0.1.32","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"164e21ba42d14e889b8bf49dddba33dd8ba61b64","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.32.tgz","fileCount":366,"integrity":"sha512-2DbGxtjsfTSLpQ6zR6bpzIUlzeaRTNY8M6elgo1vFAB7VhgjW1+nu2RwIqlUMNJsDpIw4eAGUQu8YPX1gSwU9g==","signatures":[{"sig":"MEUCICi3V7lGUTXikhQ1Bid3toas/8XFOPnreuTY1DYmPuhIAiEAmHWdKxL6k8MGGCZdwyXLHq7Z4R0XFnH4t+y6L04JMbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14249859},"type":"module","gitHead":"30676b5d8107c70a8c9ad31153314536a90adaf5","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.10","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"^0.80.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.32_1784601930324_0.485070635763029","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"pi-kot","version":"0.1.33","_id":"pi-kot@0.1.33","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"7de0de1ca1ea0ad48312917ae89ab7109dfe0f0b","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.33.tgz","fileCount":366,"integrity":"sha512-X1n8J7uAgN1wMQuMmA8k95zFnjrQWp8FQjygFZ/KE3++p0uzP7/hpHpkPJGFiOAS5Ch3uUfeUyYdUGDOwQ6IHA==","signatures":[{"sig":"MEUCIE9QKL5u0Zglwr3Kd8UM6odrXTeZqTxr4Wwup8pI/zp3AiEA4f29fR9vFzMN+YUdGPdvEqQzNegvfFVdZveQkgRTR8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14280206},"type":"module","gitHead":"68cacc992804be453e63ee28ed6fe8c6b4dac094","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.10","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"^0.80.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.33_1784876713088_0.5643330338891461","host":"s3://npm-registry-packages-npm-production"}},"0.1.34":{"name":"pi-kot","version":"0.1.34","_id":"pi-kot@0.1.34","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"875b1542d2c3b8b4065718abc849e6bf80159bdd","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.34.tgz","fileCount":366,"integrity":"sha512-4Ezw7oRFUwm9qIFAhgxZfO/Ea5y/GzAYLQjmghwzWAZiKmokKWSlILlbJMpNwxRTHTOCWzqnD56yfZZaNxJU+w==","signatures":[{"sig":"MEUCIDUA2HkKi8QMJeTglwhoZm5XDfHdhU01UvmHkPf2UAj+AiEAgrSDj7ic4MhWdGf9/BBAsrZdr+GDRqQR0yTPGLYQCV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14339895},"type":"module","gitHead":"c904c93151f3176b03004aaec0f430db2f209566","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.10","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"^0.80.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.34_1785308044505_0.636904096272263","host":"s3://npm-registry-packages-npm-production"}},"0.1.35":{"name":"pi-kot","version":"0.1.35","_id":"pi-kot@0.1.35","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"fa653c6330a544045bf823d3d1aa8758a9f05b92","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.35.tgz","fileCount":366,"integrity":"sha512-OwFeIxBi+F4dARtJc0NR2ps7Pkw8mhTuOLe9T4OGI6xje/Ul0fZli6LV9XVukBK/iMGGuk/ONsLlxAZYc0u8yQ==","signatures":[{"sig":"MEUCIQCX6VgUGbt3ItQNZ3YEmMEOBLfT3rbnJ3fqGcUn2T6/4AIgfBez+A6aUf4jeuhCi+Y+bUOyL1sdiBd3Ar5FdNK9iYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14343609},"type":"module","gitHead":"fa7e1259f43efa1a7269a956ab0685e19881708b","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.80.10","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"^0.80.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.35_1785412071951_0.48650509468229775","host":"s3://npm-registry-packages-npm-production"}},"0.1.36":{"name":"pi-kot","version":"0.1.36","_id":"pi-kot@0.1.36","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"d8c3144c27758c03d5dc17f8aec4386b513b767f","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.36.tgz","fileCount":366,"integrity":"sha512-C3T8catvDI0gfhYUt5hTAf7NLfPU9vZqtcInkGCdrCX1kqQe2tllxPIZjBUdRf5JJI56sQGtk54SaYAh2BbA5w==","signatures":[{"sig":"MEYCIQDPfyHmI9TqTNrSiBhkxjnPh7Op+Kma/rVj3O2NsJbWjwIhANmpfn43M2z7ditfJyXb0ly3LSoSRlbi+fVOxdsifC6a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14407503},"type":"module","gitHead":"55a116f68eccd552655e278d973ef6522668c3f1","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.83.0","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"^0.83.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.36_1785648959337_0.7459223232955425","host":"s3://npm-registry-packages-npm-production"}},"0.1.37":{"name":"pi-kot","version":"0.1.37","_id":"pi-kot@0.1.37","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"05654afc1174b4ab0a6a91b93447cdffde10e8a2","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.37.tgz","fileCount":374,"integrity":"sha512-UILqDlkkjg4XZr37QGrPr9ypU/TdXrtNUEw9ykbsIokzdZdRROb7bNrHqnHkqERis+8zmztbPCgP27VdqoCgjQ==","signatures":[{"sig":"MEUCIQC/IppgdoJ1Qn2s2wSGGU1i7ZJVHg1VahH9fJIKLId8GAIgaYh+jMvhK1qptqtTSiVHp+MUnuLg0muhIEnAUh+TEWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14573008},"type":"module","gitHead":"d25967ee86e3c616f866828e900853926a95bc94","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.83.0","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-coding-agent":"^0.83.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.37_1786325406717_0.9541308995183615","host":"s3://npm-registry-packages-npm-production"}},"0.1.38":{"name":"pi-kot","version":"0.1.38","_id":"pi-kot@0.1.38","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"5635d5f02ead21d02482a4eea42cfd8240ac967a","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.38.tgz","fileCount":374,"integrity":"sha512-xq0iCuE39hxTB/astplnJ303qr8nQWOrac2qsQhxTIijMSVooJ0q2Ft+40PfY9ceoOkEY8Xmlna9Wkvnb5CF9Q==","signatures":[{"sig":"MEYCIQDSwUaQKYTBG6W3NvPXonQsyk+gwm6ksyvuHd2h+O/kLgIhAM4bAKNpWjB0MZ8YLNzRhm2gdTJDbOKQ2XdVKfEX02sp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14594669},"type":"module","gitHead":"2bcbbd4cbb1010c6ccb06ef4390baa6bebb1cabd","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.84.2","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.84.2","@earendil-works/pi-coding-agent":"^0.84.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.38_1787111992588_0.06838434564512874","host":"s3://npm-registry-packages-npm-production"}},"0.1.39":{"name":"pi-kot","version":"0.1.39","_id":"pi-kot@0.1.39","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"2b01674587a2c3433906fa3a5838cf5b1005ba20","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.39.tgz","fileCount":422,"integrity":"sha512-G8JRMiOjXFKQdb8700SYBpeVxcmWmIqw4JjDURdxrYxZSPqeQabgQTCbAOhBjgdc54uUPvsDlz1Om1gTovMF9w==","signatures":[{"sig":"MEUCIBDWxiLZZTTzy5TlEC7cZymQFraiMnkXKZD1jEB3mWRUAiEA3K6CSpnojAv/21zmUbBigf2/eIw28TYrQtZJs1YgX20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBGv1XbQXFTVUTkcQ5o2IlVIfjDu59eLaH2o6/tZS8vlAiB05OGyCzStNDMsZ/rOgHUEwXO9EuJtTaEf7lCtCLAYwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14998704},"type":"module","gitHead":"b0064a13a79383f6a37d3ef2538749f38fa90eb5","private":false,"_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.87.1","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.87.1","@earendil-works/pi-coding-agent":"^0.87.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pi-kot_0.1.39_1790311870760_0.7941764156071422","host":"s3://npm-registry-packages-npm-production"}},"0.1.40":{"_id":"pi-kot@0.1.40","bin":{"pi-kot":"bin/pi-kot.mjs"},"dist":{"shasum":"6fde87fe874e1ed1a93eea15daf44789820f5703","tarball":"https://registry.npmjs.org/pi-kot/-/pi-kot-0.1.40.tgz","fileCount":466,"integrity":"sha512-ZI93kG+0w2evN3q8rmNB+6eL5+MbPc3ZEMop4I9X9iZEf+RkvmIzGZD/mKkD1Xvcg6sRT8igG/CXwuKfuNFBcQ==","signatures":[{"sig":"MEUCIQC/945ZFncJ1/YVf/yYbapAXs3un1g1nhWVxV6rEXA2GQIgGmgjpaxY1b0vT3H7PtcCypMMA79EYNVsoRQVWKiiN/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD3Qr1CHb2ADH7axHZq4rdGbdYvaxY4ShsPYgjufVVNHgIgVz04iEZQamMLSQksDB80UqUopzmTsRRdcT3JkHuzba8="}],"unpackedSize":15390049},"name":"pi-kot","type":"module","gitHead":"0126a61b75e7a4e77972f7756a670258112dd96a","private":false,"version":"0.1.40","_npmUser":{"name":"keemzin","email":"itsme.keemzin@gmail.com"},"_npmVersion":"10.9.8","description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","directories":{},"maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"_nodeVersion":"22.22.3","dependencies":{"tar":"^7.5.15","fastify":"^5.3.2","node-pty":"^1.1.0","codemirror":"^6.0.2","jsonwebtoken":"^9.0.3","@fastify/cors":"^11.0.1","@fastify/static":"^9.1.3","@fastify/swagger":"^9.7.0","@ayulab/pi-rewind":"^0.3.1","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/swagger-ui":"^6.0.0","@codemirror/lang-cpp":"^6.0.3","@codemirror/lang-css":"^6.3.1","@codemirror/language":"^6.12.3","@codemirror/lang-html":"^6.4.11","@codemirror/lang-java":"^6.0.2","@codemirror/lang-json":"^6.0.2","@codemirror/lang-rust":"^6.0.2","@codemirror/lang-yaml":"^6.1.3","@earendil-works/pi-ai":"^0.87.1","@codemirror/basic-setup":"^0.20.0","@codemirror/lang-python":"^6.2.1","@codemirror/autocomplete":"^6.20.3","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.5.0","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/lang-javascript":"^6.2.5","@earendil-works/pi-agent-core":"^0.87.1","@earendil-works/pi-coding-agent":"^0.87.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-kot_0.1.40_1790594709989_0.008683237284402567"}}},"time":{"created":"2026-06-17T01:54:48.702Z","modified":"2026-09-28T11:25:10.334Z","0.1.0":"2026-06-17T01:54:49.020Z","0.1.1":"2026-06-17T02:00:38.780Z","0.1.2":"2026-06-17T02:23:33.329Z","0.1.3":"2026-06-17T05:57:28.250Z","0.1.4":"2026-06-17T12:42:56.892Z","0.1.5":"2026-06-19T01:18:49.193Z","0.1.6":"2026-06-19T08:36:23.232Z","0.1.7":"2026-06-19T09:59:19.844Z","0.1.9":"2026-06-21T16:06:47.758Z","0.1.10":"2026-06-22T04:13:17.185Z","0.1.11":"2026-06-22T08:02:32.678Z","0.1.12":"2026-06-24T01:04:06.428Z","0.1.13":"2026-06-25T05:57:38.485Z","0.1.14":"2026-07-01T07:31:24.598Z","0.1.15":"2026-07-02T01:33:56.813Z","0.1.16":"2026-07-02T06:21:06.885Z","0.1.17":"2026-07-06T01:31:12.573Z","0.1.18":"2026-07-06T06:15:58.041Z","0.1.19":"2026-07-06T08:32:42.933Z","0.1.20":"2026-07-06T08:57:56.954Z","0.1.21":"2026-07-07T14:37:02.514Z","0.1.22":"2026-07-07T14:39:19.815Z","0.1.23":"2026-07-07T14:42:19.342Z","0.1.24":"2026-07-07T14:44:44.387Z","0.1.25":"2026-07-08T00:48:45.321Z","0.1.26":"2026-07-08T07:16:40.796Z","0.1.27":"2026-07-10T09:22:57.143Z","0.1.28":"2026-07-14T01:07:34.177Z","0.1.29":"2026-07-16T09:19:00.248Z","0.1.30":"2026-07-17T14:41:14.029Z","0.1.31":"2026-07-20T09:15:43.187Z","0.1.32":"2026-07-21T02:45:30.587Z","0.1.33":"2026-07-24T07:05:13.447Z","0.1.34":"2026-07-29T06:54:04.784Z","0.1.35":"2026-07-30T11:47:52.190Z","0.1.36":"2026-08-02T05:35:59.545Z","0.1.37":"2026-08-10T01:30:06.986Z","0.1.38":"2026-08-19T03:59:52.900Z","0.1.39":"2026-09-25T04:51:10.968Z","0.1.40":"2026-09-28T11:25:10.147Z"},"description":"Browser UI for the pi coding agent — self-hosted React workbench with chat, file browser, terminal, git panel, and session tree.","maintainers":[{"name":"keemzin","email":"itsme.keemzin@gmail.com"}],"readme":"# pi-kot\n\n<img width=\"2560\" height=\"1440\" alt=\"New Project\" src=\"https://github.com/user-attachments/assets/fa6a4dd8-c61e-43e4-ba36-4b5bf2640745\" />\n\n> A browser-based UI wrapper for the [pi coding agent](https://pi.dev)\n\npi-kot wraps the `@earendil-works/pi-coding-agent` SDK in an HTTP bridge with a React-based web UI. It exposes the agent's capabilities through REST, SSE, and WebSocket, giving you a fully interactive chat-and-terminal environment in your browser — no desktop app required.\n\nChanges and SDK upgrades are tracked in [CHANGELOG.md](./CHANGELOG.md).\n\n---\n\n## Motivation\n\npi-kot was created because I was looking for an agentic harness with minimal token usage and high customization — one that behaves the way I want and looks the way I want. I've used many, and I really like Hermes, but I'm in love with Pi.\n\nThen I decided to push Qwen3.6-35B-A3B to its absolute limit to build pi-kot. The setup I use is an RTX 3060 12GB VRAM running Qwen3 through llama.cpp with turboquant by [TheTom](https://github.com/TheTom/llama-cpp-turboquant), keeping context around 120k. That gets me to about 19-25 tps — painfully slow — but it stays stable: no failures, no tool-calling loops. pi-kot is built 90% with Qwen3.6-35B-A3B.\n\nThis project was built out of **love and curiosity**.\n\n---\n\n## Features\n\n| Feature | Description |\n| --- | --- |\n| **💬 Chat** | Full agent conversation with streaming, markdown rendering, code blocks with syntax highlighting, diff views, and KaTeX math — no intermediate adapter, SDK types consumed directly |\n| **🗂️ Trail / Tool Grouping** | Consecutive tool calls collapse into a single **Trail** card. In-between agent reasoning appears as collapsible **Justification** steps with a chain-of-thought view that follows the agent live |\n| **🌐 Internationalization** | Full multi-language support (**English** & **简体中文 / Simplified Chinese**), auto-detected from browser locale or configurable in Settings |\n| **🖥️ Terminal** | Multi-tab xterm.js terminal with persistent PTY sessions, **touch gestures** (long-press+drag arrows, double-tap Tab, 3-finger paste), and a mobile quick-keys bar |\n| **📁 File Explorer** | Browse, read, edit, and manage files in your project workspace with auto-refresh on agent edits, folder drag-and-drop uploads, drag-to-move, and ZIP downloads |\n| **🔧 MCP Support** | Add, configure, and toggle MCP servers with a full settings UI |\n| **💾 Persistent UI Prefs** | Theme, language, sticky header, token usage toggle, image compression, trail view — saved **server-side** in `~/.pi/agent/ui-settings.json`. Survives browser cache clears and device switches |\n| **🧩 Orchestration** | Multi-agent workflows — supervise sub-agents, delegate tasks, inspect results |\n| **🔐 Auth** | Password-based login, API key support, JWT sessions |\n| **📱 Mobile-friendly** | PWA-ready, adaptive layout, touch gestures, virtual keyboard support |\n| **🔄 Session persistence** | Sessions survive restarts via JSONL on disk; reattach on reconnect |\n| **🎨 Unified Theme System** | Consistent light/dark theme tokens across panels, modals, inputs, and terminal chrome |\n| **🔌 Tunnel** | Built-in tunnel helper UI for exposing local pi-kot traffic via supported providers, with install checks, diagnostics, and one-click start/stop |\n| **📦 Extensions** | Discover and install pi extensions from the UI — some features only appear after installing the right extension |\n| **🎨 Artifacts** | Agent-created HTML, SVG, Mermaid diagrams, and other files render inline in chat via sandboxed previews |\n| **📎 Turn File Chips** | Files modified/created during each turn are summarized in clickable chips below the assistant message with diff previews |\n| **✈️ Fly-to-Top Anchor** | Smooth prompt anchoring that flies your message to the top upon submit, keeping streaming responses comfortably in focus |\n\n---\n\n## Quick Start\n\n### One-shot setup via npx\n\n```bash\nnpx pi-kot --password pikot\n```\n\nhelp\n\n```bash\nnpx pi-kot --help\n```\n\nAvailable options:\n\n| Flag | Description | Default |\n| --- | --- | --- |\n| `--port <n>` | Port to listen on | `3333` |\n| `--host <h>` | Host/interface to bind to | `0.0.0.0` |\n| `--password <pw>` | Enable UI password auth | — |\n| `--api-key <key>` | Static API key for scripts/CI | — |\n| `--workspace <path>` | Workspace root directory | `~/.pi-kot/workspace/default` |\n| `--log-level <level>` | Logging level | `info` |\n| `--help, -h` | Show help | — |\n| `--version, -v` | Show version | — |\n\nAll flags can also be set with environment variables: `PORT`, `HOST`, `UI_PASSWORD`, `API_KEY`, `WORKSPACE_PATH`, `LOG_LEVEL`, `MINIMAL_UI`.\n\n### Example: install, run, and expose it\n\n```bash\n# Install dependencies\nnpm install\n\n# Run directly with all settings inline\nnpx pi-kot --port 3333 --host 127.0.0.1 --password secret --workspace ~/Code\n```\n\n### Dev mode (server + Vite hot-reload)\n\n```bash\nnpm run dev\n\n# Backend on :3332, UI at http://localhost:5173 (Vite proxies /api → :3332)\n```\n\n### Production\n\n```bash\nnpm run build\nnpm run start\n\n# Open http://localhost:3333\n```\n\nAll flags also work as environment variables (`PORT`, `HOST`, `UI_PASSWORD`, `API_KEY`, `WORKSPACE_PATH`, `LOG_LEVEL`, `MINIMAL_UI`, ...) — full reference in [Configuration](#configuration).\n\n---\n\n## Trail — Grouped Tool Display & Chain-of-Thought\n\nWhen the agent executes consecutive tool calls or intersperses text between actions, pi-kot structures them into a clean **Trail**:\n\n- **Auto (Justify)**: Collapses reasoning steps into preview rows. The newest step automatically stays expanded while the agent is live so you can follow its train of thought in real-time.\n- **Expand All**: Expands all tools, justifications, and thinking blocks.\n- **Consecutive Tool Grouping**: Identical consecutive actions (like reading multiple files) are automatically bundled (e.g. `8 × Read`) to avoid visual noise while remaining interactive.\n\n---\n\n## 📋 Native Plan Mode & Review Panel\n\npi-kot includes a 100% native, lightweight Plan Mode built directly into the agent lifecycle — no third-party extensions required:\n\n- **Zero Token Overhead When Inactive**: Inactive turns consume **0 extra tokens**.\n- **Dynamic In-Process Guardrails**: When toggled on, an in-process interceptor restricts the agent to exploring the codebase and drafting markdown plans (e.g. `PLAN.md`). Modifying code files is safely blocked until user approval.\n- **Side Panel Review**: The agent pauses and submits its plan via `submit_plan`. Review the proposal in a side panel with rendered markdown, edit directly, approve with implementation notes, or request revisions.\n- **Seamless Approval Flow**: Approving automatically transitions out of plan mode, allowing the agent to proceed with code modifications without any extra manual steps.\n- **Toggle Anywhere**: Enable or exit Plan Mode anytime via the clipboard icon in the chat input, the banner above the prompt box, or the `/plan` slash command.\n\n---\n\n## Slash Commands\n\nType `/` in the chat input to access built-in and extension commands. Slash commands support arguments:\n\n```\n/vision config provider openai\n/vision show\n/vision on\n/compact\n/compact with summary\n/reload\n/abort\n```\n\nThe dropdown stays visible while typing arguments, and arguments are forwarded directly to the target extension or command handler.\n\n---\n\n## 🌐 Internationalization (i18n)\n\npi-kot supports multiple languages out of the box:\n\n- **English** (`en`)\n- **简体中文** (`zh-CN` / Simplified Chinese)\n\nLanguage is automatically detected from your browser settings and can be changed in **Settings → Appearance → Language**.\n\n---\n\n## Terminal Touch Gestures\n\npi-kot's terminal supports mobile touch gestures inspired by Termius:\n\n| Gesture | Action | Details |\n| --- | --- | --- |\n| **Long-press 150ms + drag** | Arrow keys (↑↓←→) | Continuous with 3 speed gears — drag further for faster |\n| **Double-tap** | Tab key | Two quick taps within 300ms |\n| **3-finger tap** | Paste | Reads from system clipboard |\n| **2-finger scroll** | Scroll buffer | Up/down through terminal history |\n\n---\n\n## 📦 Recommended Extensions\n\nSome features only appear **after** installing the corresponding extension. Head to the **Extensions tab** (⚙ → Extensions) and install the 💎 **Recommended for pi-kot** extensions:\n\n| Extension | Package | Unlocks |\n| --- | --- | --- |\n| **pi-web-access** 🌐 | `npm:pi-web-access` | Web search, content extraction, API interaction tools for the agent |\n| **pi-playwright** 🎭 | `npm:pi-playwright` | Browser automation — the agent can interact with real web UI |\n| **pi-vision-tool** 👁️ | `npm:pi-vision-tool` | **Vision agent selection** — non-vision models can delegate `describe_image` to a vision-capable model; full vision settings exposed in Extensions tab and slash commands (`/vision config`, `/vision show`, etc.) |\n| **pi-rewind** ⏪ | `npm:@ayulab/pi-rewind` | **Session revert** — checkpoint, rewind, and branch from any prior state |\n| **context-mode** 🧠 | `npm:context-mode` | **Context window savings** — sandboxed code execution, FTS5 knowledge base, BM25 search, and session continuity across compaction |\n\n> 💡 **Tip**: Some UI elements only appear **after** the extension is installed. For example:\n>\n> - **Vision model selector & slash commands** → appears only after `pi-vision-tool` is installed\n> - **Rewind button** on chat messages → appears only after `pi-rewind` is installed\n> - **Context stats/doctor commands** → appears only after `context-mode` is installed\n> *(Note: **Plan mode & review side panel** is built-in natively out-of-the-box — no extension install required!)*\n> If something mentioned in this README doesn't show up, check the Extensions tab first.\n\n---\n\n## Tunnel\n\npi-kot includes a built-in tunnel helper for exposing your local instance to the internet.\n\n- **Provider**: currently supports **ngrok**\n- **Modes**: **quick** tunnel mode\n- **Intents**: ephemeral-public, persistent-public, private-network\n\n### Using the Tunnel tab\n\n1. Open **Settings** → **Tunnel**\n2. The tab shows an installation check for the tunnel provider\n3. If missing, it shows the install command and download link\n4. Run **diagnostics** to verify binary, auth token, and network readiness\n5. Click **Start Tunnel** to launch; the public URL is shown and can be copied\n6. Click **Stop Tunnel** to tear it down when finished\n\n### API routes\n\nThe server exposes tunnel controls under `/api/v1/tunnel`:\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/api/v1/tunnel/check` | Check whether ngrok is installed and return version/platform info |\n| `GET` | `/api/v1/tunnel/doctor` | Run diagnostics for binary, auth token, and network checks |\n| `GET` | `/api/v1/tunnel/status` | Return whether a tunnel is active, its public URL, mode, provider, and local port |\n| `POST` | `/api/v1/tunnel/start` | Start an ngrok tunnel |\n| `POST` | `/api/v1/tunnel/stop` | Stop an active tunnel |\n\n---\n\n## Configuration\n\nAll options can be set as environment variables **or** CLI flags (with `npx pi-kot` / `pi-kot`). Flags not listed below are in `npx pi-kot --help`.\n\n### Network\n\n| Variable | Flag | Default | Description |\n| --- | --- | --- | --- |\n| `PORT` | `--port` | `3333` | HTTP listen port |\n| `HOST` | `--host` | `0.0.0.0` | Bind address (`127.0.0.1` for loopback-only) |\n| `TRUST_PROXY` | — | `false` | Trust `X-Forwarded-*` headers when behind a reverse proxy |\n| `CORS_ORIGIN` | — | `true` | CORS origin. `true` = reflect request origin; set a specific origin in production |\n\n### Authentication\n\n| Variable | Flag | Default | Description |\n| --- | --- | --- | --- |\n| `UI_PASSWORD` | `--password` | — | Enable password auth; browser shows a login form |\n| `API_KEY` | `--api-key` | — | Static API key for scripts/CI; also accepted as password in the login form |\n\nIf both are unset, auth is **disabled** and the UI opens freely.\n\n### Storage paths\n\n| Variable | Flag | Default | Description |\n| --- | --- | --- | --- |\n| `WORKSPACE_PATH` | `--workspace` | `~/.pi-kot/workspace/default` | Default project workspace directory |\n| `SESSION_DIR` | — | `~/.pi-kot/sessions` | Session data directory |\n| `FORGE_DATA_DIR` | — | `~/.pi-kot` | Base config/data directory (MCP config, tool/skill overrides) |\n| `PI_CONFIG_DIR` | — | `~/.pi/agent` | pi agent configuration directory (used by the SDK; `~/.pi/agent-dev` in dev mode) |\n\n### Data files (under `FORGE_DATA_DIR` by default)\n\n| Variable | Default | Description |\n| --- | --- | --- |\n| `MCP_CONFIG_FILE` | `$FORGE_DATA_DIR/mcp.json` | MCP server configurations |\n| `MCP_STDIO_TRUST_FILE` | `$FORGE_DATA_DIR/mcp-stdio-trust.json` | Trusted stdio MCP servers |\n| `TOOL_OVERRIDES_FILE` | `$FORGE_DATA_DIR/tool-overrides.json` | Per-project tool enable/disable overrides |\n| `SKILL_OVERRIDES_FILE` | `$FORGE_DATA_DIR/skill-overrides.json` | Per-project skill enable/disable overrides |\n\n### Logging & Environment\n\n| Variable | Flag | Default | Description |\n| --- | --- | --- | --- |\n| `LOG_LEVEL` | `--log-level` | `info` | Server log level: `info`, `debug`, `warn`, `error` |\n| `PIKOT_MODE` | — | — | Set to `dev` to use `-dev`-suffixed data dirs (`~/.pi-kot-dev/`) so dev data doesn't mix with production |\n| `NODE_ENV` | — | `production` | Set automatically by the server; `test` disables request logging |\n| `MOUNT_CWD_PROJECT` | — | auto-set by CLI | When set, auto-creates a project for the given directory; the CLI shim sets it to the current working directory |\n\n### Static client serving\n\n| Variable | Default | Description |\n| --- | --- | --- |\n| `SERVE_CLIENT` | `true` | Serve the built Vite client from `CLIENT_DIST_PATH`; set `false` to run API-only (e.g. behind a separate reverse proxy serving the client) |\n| `CLIENT_DIST_PATH` | `packages/client/dist` (in-repo) or `dist/client` (npm install) | Path to the built client dist directory; auto-detected |\n\n### Orchestration & UI\n\n| Variable | Default | Description |\n| --- | --- | --- |\n| `ORCHESTRATION_ENABLED` | `true` | Enable supervisor/worker orchestration |\n| `MINIMAL_UI` | `false` | Hide optional UI panels (terminal, git, changes). Useful for locked-down deployments |\n\n### Dev-mode only (Vite)\n\n| Variable | Default | Description |\n|---|---|---|\n| `VITE_API_PORT` | `3332` | Backend port that the Vite dev proxy forwards `/api` requests to (the `dev` script sets this to `3332`) |\n\n---\n\n## File Explorer\n\nBrowse and manage files in your project workspace.\n\n- **Open**: Click a file to read it; auto-refreshes when modified by the agent\n- **Edit**: Modify content directly in the editor (CodeMirror)\n- **New file/folder**: Right-click in the tree\n- **Delete**: Right-click a file\n- **Drag to move**: Drag files or folders onto another folder to move them in-app\n- **Upload files/folders**: Drag from your OS, use the folder picker, or click the upload buttons\n- **Download folder as ZIP**: Right-click a folder in the explorer and choose the download action\n- **Clone project**: Use the clone dialog to pull a repo into the workspace, with optional custom destination path\n\n---\n\n## Git Panel\n\nThe Git panel shows the current repository's status — modified files, staged changes, commit history, and branch information.\n\n- **View changes**: See diffs of modified files\n- **Stage/unstage**: Stage files for commit\n- **Commit**: Write and execute commits\n- **Branch**: Switch branches\n- **Commit history**: Browse commits and expand each one to see changed files\n- **Inline commit diffs**: Click a file inside a commit to view its unified diff directly in the panel\n\n---\n\n## MCP Servers\n\npi-kot supports Model Context Protocol (MCP) servers — tools, resources, and prompts exposed by external services.\n\n### Adding a server\n\n1. Open **Settings** → **MCP** tab\n2. Click **Add Server**\n3. Choose **Stdio** (local command) or **HTTP** (remote URL)\n4. Configure and save\n\n### Managing tools\n\nEach MCP server exposes tools that the agent can use. You can enable/disable individual tools per project from the MCP settings panel.\n\n---\n\n## Orchestration\n\npi-kot supports multi-agent workflows — a supervisor session can spawn worker sub-agents to handle tasks in parallel.\n\n- Click the **⚡ (Orchestration)** toggle in the toolbar to enable it\n- Workers appear nested under their supervisor in the sidebar and show their own message stream\n- Workers can be interrupted, killed, or detached individually\n\n---\n\n## Artifacts\n\npi-kot can render agent-created content inline in chat — HTML pages, SVG images, Mermaid diagrams, and more.\n\n### How it works\n\n1. The agent writes files to `.pi/artifacts/` in your project directory (subfolders supported)\n2. Files are served via `/api/v1/artifacts/<path>`\n3. The chat renderer detects HTML/SVG/JSON/Markdown content and shows a live preview\n\n### Supported formats\n\n| Format | Detection | Preview |\n| --- | --- | --- |\n| **HTML** | `<!DOCTYPE html>`, `<html>`, or ` ```html` | Sandboxed iframe |\n| **SVG** | `<svg>` or ` ```svg` | Sandboxed iframe |\n| **Mermaid** | ` ```mermaid` | Rendered diagram |\n| **Markdown** | ` ```markdown` | Rendered markdown |\n| **JSON** | ` ```json` or valid JSON tool output | Syntax highlighted |\n| **Image** | `data:image/...` or ` ```image` | `<img>` tag |\n\n---\n\n## Settings\n\nAccess settings via the **⚙** icon in the header.\n\n| Tab | What you can configure |\n| --- | --- |\n| **Appearance** | Theme picker, language (English / 简体中文), sticky user header, show token usage, image compression, trail default view — all **persisted server-side** |\n| **Providers** | View configured providers, add/remove API keys, add custom providers, raw models.json editor |\n| **Agent** | Default provider, default model, thinking level, model scope (hide unused models with **bulk select toggles**), orchestrator model |\n| **General** | Server & SDK versions, update check, reload page |\n| **Extensions ⚗️** | Install/manage pi extensions — **install the recommended ones to unlock features** |\n| **Skills** | Enable/disable agent skills |\n| **Tunnel 🚇** | Tunnel provider install check, diagnostics, start/stop tunnel, copy public URL |\n\n---\n\n## Tech Stack\n\n| Layer | Technology |\n| --- | --- |\n| **UI** | React, TypeScript, Vite, xterm.js, CodeMirror, Zustand |\n| **Server** | Fastify, ws (WebSocket), node-pty |\n| **SDK** | `@earendil-works/pi-coding-agent` (currently 0.87.1) |\n| **Auth** | JWT, scrypt password hashing |\n| **State** | Zustand (client), JSONL session files (server) |\n| **i18n** | Lightweight custom registry supporting English & 简体中文 |\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}