{"_id":"@fengye404/termpilot","_rev":"59-69af65740326a7af50984ca4d763c2fa","name":"@fengye404/termpilot","dist-tags":{"latest":"0.6.10"},"versions":{"0.1.0":{"name":"@fengye404/termpilot","version":"0.1.0","_id":"@fengye404/termpilot@0.1.0","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"46a70b10966e6bdacccae8ca3126af4182588b9e","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.1.0.tgz","fileCount":14,"integrity":"sha512-xwZThCyT2rx//VtB4tTxaXDVoo1q35M7KGmyGD1joSVXBmC8pmVNu4DtM7L8hK5jYSPE5pXqnWoaYI9pp87wcQ==","signatures":[{"sig":"MEYCIQC6cATbIslgzkVeWGkFffOZYgwH9HlvhrK7zYVPiJxvtAIhAONEw73TS1LLU7YfwKRxXZz9fikFplY06p66vmYCCJQU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":617065},"type":"module","engines":{"node":">=24"},"gitHead":"c4ec69a8b437f927c147d2ee1ff8e63df5af85d2","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.1.0_1773158884025_0.4885264961180853","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@fengye404/termpilot","version":"0.1.1","_id":"@fengye404/termpilot@0.1.1","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"033183ce66642ff9583f8b97fe48073159302c4d","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.1.1.tgz","fileCount":16,"integrity":"sha512-AT8RoZXD3gSjXJHyLq3n1vzdS4IevHUBv0Rwz0eeoQLAVivNCd1yJD5eXBOPQlY4vH8zooruNMCtFXMo5+hyBg==","signatures":[{"sig":"MEUCIFX4fd6rgzmLbxle5wXHsyFHXduQJNDgm26zhzRR6TEkAiEAqad+zJG71GKHHy9Eb7J8ZKLMxVPCbFF/kkeyWnDdF+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":620058},"type":"module","engines":{"node":">=24"},"gitHead":"2bd8ebea730c77b6a4bcc8283006e5407d8910f5","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.1.1_1773161248974_0.5442852705891013","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@fengye404/termpilot","version":"0.1.2","_id":"@fengye404/termpilot@0.1.2","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"1df9a5616c720822287d3bdb33239f726ddb2b51","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.1.2.tgz","fileCount":16,"integrity":"sha512-RmrLQqwh1RveWeB+urp7i5oAMy/V7UTvSwGGTRkG1lS+F3uu/BQd4P4WjRLXA3nijmSlK1ePRQOUu8F9H4rdaA==","signatures":[{"sig":"MEQCIGKADlelI7gSCGzK6az+OpMKAjNFnkHL5twwidDgShUZAiAKrE5q/cPA1zh60fmoj9JFQ9TKYB4S4s+ocQuyNf03rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621942},"type":"module","engines":{"node":">=24"},"gitHead":"797a0b4aa4caa924640681c5d6f9a0e07ae08bf7","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.1.2_1773162517882_0.11399899077290088","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@fengye404/termpilot","version":"0.1.4","_id":"@fengye404/termpilot@0.1.4","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"4ae32df65270f61c27d3fc8ec8d90ded33bbc814","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.1.4.tgz","fileCount":16,"integrity":"sha512-p1lqc647T+npKqhDjN6NNwoH2KG9VLjWo8UXcEvn6riS2ahgbcrG0J1uMsQP8DuQH/pyiSCL2ab602s8EQTeDw==","signatures":[{"sig":"MEYCIQCq9rGgpclU24l5IWtZBs8Aurl3vY2FyoszY2EmHSHWZAIhAKhr02Erx8VYKzpH7+uZu+QTowTJbmkFUdVnR3XDGBbE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":635023},"type":"module","engines":{"node":">=24"},"gitHead":"0a704fb7ecba26335ce10397748a2a23f9bfcccb","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.1.4_1773167453563_0.5885602818018563","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@fengye404/termpilot","version":"0.1.5","_id":"@fengye404/termpilot@0.1.5","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"a4e5a8b6ae0a931cee019fe052ea695d28b7f9ed","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.1.5.tgz","fileCount":16,"integrity":"sha512-85dvybZON14zlLuQP8I8VqPLNHsjHf1wM6dGtqrvM6vZ0kJES1HKevbVhfVMaFSjrnbalsSYrp3tNzUpab8rgg==","signatures":[{"sig":"MEUCIQCaFic4NkNnoAwM1IGzyJIBmIAQs0lVfu8INcbiwJn6gwIgWIbb3fOmmkgNbcYNxp21Nn5ZdmVvdTxRckbkwZs4FOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":649385},"type":"module","engines":{"node":">=24"},"gitHead":"0a704fb7ecba26335ce10397748a2a23f9bfcccb","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.1.5_1773244659321_0.0904789704390705","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@fengye404/termpilot","version":"0.1.6","_id":"@fengye404/termpilot@0.1.6","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"575c1edec84d685252efa26200b30410c796f01e","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.1.6.tgz","fileCount":16,"integrity":"sha512-uyHyqLEq+S9b3JFI9MSuq/O04WxYAOM8Ci2nseFFhdC8lOjpKPyETeh3YZh9i+clyeGGNNSZ9xTUxHvhFxUwPg==","signatures":[{"sig":"MEUCIE3aVn1LLvRFzw9HZzCSk73c3XnE0zHP8FlwNI+UZXGsAiEAwd8WkU4IK8FfeicpYZpHxL8V6RJ/GmmoeOPnomccW7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":651139},"type":"module","engines":{"node":">=24"},"gitHead":"ce572139b5b0161f97ae78f63cfb649c9f50c173","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.1.6_1773246767455_0.9615364038597636","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@fengye404/termpilot","version":"0.1.7","_id":"@fengye404/termpilot@0.1.7","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"5a751c3f8bbeefa1ebe7935660349650b6cd5668","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.1.7.tgz","fileCount":17,"integrity":"sha512-YbEcd49d29l5/Qo+vZIefybsXhLvx7HQTL2iGB59CJU58+3S1TdpOWzYJetAOhM4VytGIpQ8iIXtqAoE0QnhBg==","signatures":[{"sig":"MEUCIQD1IIKnGl9Smor2EZofyjCAwySh3GtiVGOrw8XbapUpkQIgb+rkqE4kdiNQh6kVcxyNG8goTCHxf4Xigfu1JcXb18s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673961},"type":"module","engines":{"node":">=24"},"gitHead":"09f6c56f6b2f8b126a966076fadc48bd6d870d8c","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.1.7_1773250562571_0.7818224962188649","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@fengye404/termpilot","version":"0.1.8","_id":"@fengye404/termpilot@0.1.8","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"6a90fd0de5670123d75a6e90e0fb923736b2e593","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.1.8.tgz","fileCount":71,"integrity":"sha512-I1+QP1ieqIV+IOINyjaQJp8nHsfs5hl9vdsphQfGB0QxUtzI/EQqZz41GdluwNDz30yaX3aWEB8yadtR3PWNFQ==","signatures":[{"sig":"MEQCIFGm3YIzU02OEy5ZS1eXQoCceE3j8gkwjtS4cFLkcC83AiAVyAheKXL+4Y0JdQcAvs93OAma3myMQdIJRoCSuCr9sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2005315},"type":"module","engines":{"node":">=24"},"gitHead":"d3a7c57b3dce4e859ae94bf63c2924abbc0be1cd","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.1.8_1773251523816_0.4712626507695976","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@fengye404/termpilot","version":"0.1.9","_id":"@fengye404/termpilot@0.1.9","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"bf5506a5c8690b3987bfffad6f7e446533fb1f62","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.1.9.tgz","fileCount":71,"integrity":"sha512-gXo4Elcf4eaUAIniCsajHEBly0y5IBBwdxuXcPJSaQ24wMpLPk1tNDsvLPN79GUAwO1/NockM/nKcrwAlQ8rHw==","signatures":[{"sig":"MEUCIQDU59/N23nmbZ2dGVbpSyd5w8vR9bcijkJ/MDB/YImafQIgWv+6RdIdW2bDP6/gDyd3+OrHVB7QTXqXfYC6oAaZ6Vw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2005890},"type":"module","engines":{"node":">=24"},"gitHead":"6cedc9ff5ce02e714513d3eabe932e38fb9672f8","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.1.9_1773252376265_0.0950355661855804","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@fengye404/termpilot","version":"0.2.0","_id":"@fengye404/termpilot@0.2.0","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"c79f5e08e9551973e312f48f11df0807d919f05b","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.0.tgz","fileCount":71,"integrity":"sha512-rCHTGr7j3/52s9KFq9UZRV3CXDeaSnMUyaoELU/ZBk1kXzGPi39llS0TOKgGcauWRn9b/v7XD3x4kfMMLOwKhw==","signatures":[{"sig":"MEQCIGo3uy5WpMmXRdzI9fDkl+2VggkL32p2ML4zbRnzPVTPAiAfp7W9W1zY3+HO/3MqM4szYSHEuor2ao4THqMwFbJucA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2005965},"type":"module","engines":{"node":">=22"},"gitHead":"6dd339d44b37e4817a9e663f0d4a6d47ca7c5d6b","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.0_1773252500275_0.7773325241569411","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@fengye404/termpilot","version":"0.2.1","_id":"@fengye404/termpilot@0.2.1","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"943af1d2ab552f5554601667ac55dec034c1171e","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.1.tgz","fileCount":71,"integrity":"sha512-WqkqfvxvbwT/B928iW7CWUmDkhIcVq6ZWi/JQiHPUUFaH+Yhh3JuAvtEFIUuuQgRj/m6ABQQ3siwck0uDWhkoQ==","signatures":[{"sig":"MEUCIQDgfJW5/U0HNY9Ietikd8vW7yn/VJSRDO/KaTQbajAjhwIgXtoSIGGvo1GtaiMuoYX4an92VO/MIJxladIyB1pRuQE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2008234},"type":"module","engines":{"node":">=22"},"gitHead":"5b8bd484b9744d80fca07400ab2ffe3f97f61ed2","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.1_1773252777521_0.3070393137745795","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@fengye404/termpilot","version":"0.2.2","_id":"@fengye404/termpilot@0.2.2","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"de462445423db3e49a7526b5526b190ab2de4f68","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.2.tgz","fileCount":71,"integrity":"sha512-EuZMkX1PvQD3qsvTKXutK3jvIcKW93j5UxTfamkYxbNfBo+UzOozCehMjA9mkZvGh5dBWobY1n2C+wX8aEqA5A==","signatures":[{"sig":"MEUCIQCB977XBMi+eiNFjRshP5h5C2JKbRqJV50YNL8Mlvdq2AIgQCe04Xc4Og4hvjELIQeMgiXYmrFv5BCQFWh28bnaMBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2008777},"type":"module","engines":{"node":">=22"},"gitHead":"2e8af999d28d5606f52759cd7ecda1f310254f9a","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.2_1773253014182_0.9972687948230368","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@fengye404/termpilot","version":"0.2.3","_id":"@fengye404/termpilot@0.2.3","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"9cd0744a20e071872fa0db793acc0a8723aced44","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.3.tgz","fileCount":71,"integrity":"sha512-BhuDogXVxeeI/SCb4HMdVyjPTtqRr9BfMOydbHh33YIu8AwhB5hlEzTRPlmPTCZMmBRHNCOI+2X9myvekXvaOg==","signatures":[{"sig":"MEQCIE3HFoXzbLNJsqOjuz2L5W2yi1p+7r6viujoIz6TGouaAiBVxgqeJT7PBPv9LYoT+aHuwu8f32gsGQNH9XoAmK9qQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2009828},"type":"module","engines":{"node":">=22"},"gitHead":"4bb9e25067b78d0f31ee6a0258e7dbf33d6de70e","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.3_1773253127389_0.723434932403058","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@fengye404/termpilot","version":"0.2.4","_id":"@fengye404/termpilot@0.2.4","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"86702fd1c346ce8c46066a25f857122d77e56c2f","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.4.tgz","fileCount":71,"integrity":"sha512-3lCHuFeSaLWYbKb2O5Q04kj5FJ+p1zvxe2SiGIy9q8TbolLRj2s7dSba3Hg5JlP6eQXI1iYRgOEGE7xogJpIpA==","signatures":[{"sig":"MEUCIAwtzOJp8PAIKqls9BwtMuBLQMK3+uln//Ew2pKvjuCvAiEAv20RnjVe5hasLaJi1Rv5SsWOZRmt2KMKIhjRgydVU84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2014671},"type":"module","engines":{"node":">=22"},"gitHead":"1aaba116581cc7f986b4d5c9f5fa04487a71fd55","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.4_1773255043716_0.9408651143049864","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@fengye404/termpilot","version":"0.2.5","_id":"@fengye404/termpilot@0.2.5","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"caebef7218a1a4a0aceb8ba91d9548a73c1946bd","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.5.tgz","fileCount":71,"integrity":"sha512-oyokLIpOMhLyum7oFQK/YZoveRJ2e3YFcPdAD3uI/jN8Xx4MX6ku3iFxMfdEiGBE39baObuDo2xc9vL09M9Kwg==","signatures":[{"sig":"MEYCIQD1q1x1PtN/AHjdFCngNaCCTPYgopKnsYQUxjWv1VMHrwIhAPCpTFghZwmv/JEw+a/BKOOnNfPmN6/XigQ4UxBThEMt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2018686},"type":"module","engines":{"node":">=22"},"gitHead":"3658a80fa0ae0985039e792f7f4193a1cfe04eac","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.5_1773256011918_0.16364559269997536","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@fengye404/termpilot","version":"0.2.6","license":"MIT","_id":"@fengye404/termpilot@0.2.6","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"956c9aa959b29b2a8fdf18996589db6f05d496aa","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.6.tgz","fileCount":81,"integrity":"sha512-2Lf+Ly3ULWJR6ZseqZxg37DNSai12nCsE4krrOitPmRqrnuhD4j8F6+fKsJvlI88eA538JCEoT3hOS1ifXd8Og==","signatures":[{"sig":"MEQCIGizsKQQ7p6hKqKSwiH8UxHxxnuHDYP73a41DFKA3f5YAiBk9Pue0nWNGyvsOFkwxP06iFLq/McHp3/dV7Km2Cyk8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2133816},"type":"module","engines":{"node":">=22"},"gitHead":"65ba9394ced2de48f0c517657b67029eb162cb64","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.6_1773329915950_0.17687769723452185","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@fengye404/termpilot","version":"0.2.7","license":"MIT","_id":"@fengye404/termpilot@0.2.7","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"b4be1e084a1d3b059e8e425dbacfa6b84fe15105","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.7.tgz","fileCount":85,"integrity":"sha512-bE4Z0+KDZ0Tf9tZCW1LqmGySxs+IA3GWjncsQJDkdMk2+4PDMVzCRUEoXcvBimTg0wUAN6qkbcEmPiDAnY4chw==","signatures":[{"sig":"MEUCIQDs8ixwvdijmcTFKxQX3VP9ef64fDheF0YYP8tzGMhDLQIgLAsFplagZilcEZ0zqbRmpy8hcHM6keEKQDDr9jNLz/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2261363},"type":"module","engines":{"node":">=22"},"gitHead":"10e1ea048862da9816e86fc29bcaa6df7b614edf","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.7_1773332846958_0.5517868207517591","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@fengye404/termpilot","version":"0.2.8","license":"MIT","_id":"@fengye404/termpilot@0.2.8","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"41bd5501743cc1ba20dc6a626555267f684cae81","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.8.tgz","fileCount":85,"integrity":"sha512-mhjpGQezENZ2i3anAtUuYuOrc4ks5s1TgBK7XsM+BtUM9VIg65Ljx+FjL5e/5Vqy/ezmbVkMIJG8n5yt4hc7qw==","signatures":[{"sig":"MEUCIQDMlp4OaUElAzY/ybfeofL9w7KtcH64KUZQHp7CnyI+QgIgIs7kydBIVOkAvsL9j2fWL6BiNX1vp5BTgx6jK3GeI74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2027098},"type":"module","engines":{"node":">=22"},"gitHead":"e08dc4b0845a00d6006d9f924d698683684a2b98","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.8_1773334664548_0.9362866339627556","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@fengye404/termpilot","version":"0.2.9","license":"MIT","_id":"@fengye404/termpilot@0.2.9","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"bdf134c045ad7c1c4eb330a2879cf3e33addc1d7","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.2.9.tgz","fileCount":85,"integrity":"sha512-w23HspCiAvnfH8evfxtyn87guHGNCBiTEU70XV6wjyDvAUNJmdaUMUNMPVvYEleHClS/OEqto/H8pPM+EpZuEg==","signatures":[{"sig":"MEQCIHBxGa7bHMgS9n1WlAm+W7LtfrTYyzazBvjNo8imsb4UAiBvwgNH4fykpe/4wZopyiKrg8xv+GC820at73sMYisKmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2027220},"type":"module","engines":{"node":">=22"},"gitHead":"74cff1cf98e418a0ec3dcc9357a4135e13ab152e","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.2.9_1773336631581_0.6588128674213332","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@fengye404/termpilot","version":"0.3.0","license":"MIT","_id":"@fengye404/termpilot@0.3.0","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"f1dabad1af99de4c8e5ec969cb8f76db182fbf36","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.3.0.tgz","fileCount":89,"integrity":"sha512-X5btMY9j79lxCmaZJqYkvTFIzU6KypN0QRCjRQXgRFjd9S9jMeQDk1n3mLHrtiOJGqqvt13kfrELb/J9gaXgGw==","signatures":[{"sig":"MEUCIQDSFb4dP5onlVCYNJzByJ4PTrADtXn7tdF/EZAParRPPwIgXsbXTOk9O/lSQd6uNn7hAV3RoaQC7YUT65Mgcecy/Jc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2174971},"type":"module","engines":{"node":">=22"},"gitHead":"9ba145e5e5b142f6a206f8760cf75c7dd08d7377","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.3.0_1773339492992_0.8319220141130177","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@fengye404/termpilot","version":"0.3.2","license":"MIT","_id":"@fengye404/termpilot@0.3.2","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"59d25a4eed6d56d0e494d239e45a6fdd723db6c2","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.3.2.tgz","fileCount":89,"integrity":"sha512-m0rqTY4omzpmz4GtsYlz6L+UJf5D4TZw6WRr0nXfABov342563fDF/FIx8w9IfIVgWy/GQpT678bZooNz6sSBA==","signatures":[{"sig":"MEYCIQCC04SWHSTxn/ppbPpHRLDrMnlcNQZqpaPrEAtvsKqwYgIhAMGyGEViSwRgWxw0jBexcAkmWNxhGf7/bMwxv8ZIPmnU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2137910},"type":"module","engines":{"node":">=22"},"gitHead":"ee65b4b14cf3a97f8e1ab4a2e42e98b90621e0e6","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.3.2_1773572466914_0.8819609271387159","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@fengye404/termpilot","version":"0.3.3","license":"MIT","_id":"@fengye404/termpilot@0.3.3","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"2eaa4019a3a4c02fb1b5c02eb0616a5db9efb6a8","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.3.3.tgz","fileCount":89,"integrity":"sha512-39d6QBqUqRy2px2x1H3cbIO5AsjWiXhijmxBWDc1K8nvH+nit2tCR7zEurWFUK/8cipg+7ktTU0XN9Z4iZhlwg==","signatures":[{"sig":"MEUCIEUMC1dFNvVDLwZBNNDM0aP1b/Vo2riUWyqaed/Be0TXAiEA+uR5VI6Wd0hK1LTKBLGsvvFvbOfNyOBM47czQlrfLyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2139155},"type":"module","engines":{"node":">=22"},"gitHead":"4902692b85685a4110571a3a1d68e0d708613d3b","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.3.3_1773572930007_0.9900836325266866","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@fengye404/termpilot","version":"0.3.4","license":"MIT","_id":"@fengye404/termpilot@0.3.4","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"be9742456c6f84236fdc7b6781d677b143cd2a3a","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.3.4.tgz","fileCount":89,"integrity":"sha512-kYAaM6TfuJ+YHl/861/vxbJKawJ4Y+Gx/+aZT5MElElBSeGCpAXP44DPsM39Pg8HiZdq2NcveZhclVCux7tnig==","signatures":[{"sig":"MEYCIQDkxccpIxn1UosXqmsxyxhLTvOvlkoNUc9EK44n+ejDowIhAKyMzyFNdcRD0B49ujStkKCt08MYOT7oiUTfWQXaRPlI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2141070},"type":"module","engines":{"node":">=22"},"gitHead":"0da1a9c847388156391d61e0cbf4872ec2f9f491","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.3.4_1773573651000_0.27842957319479367","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@fengye404/termpilot","version":"0.3.5","license":"MIT","_id":"@fengye404/termpilot@0.3.5","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"5c3880ba81913895f7345c2b9dfae98703b7888a","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.3.5.tgz","fileCount":89,"integrity":"sha512-3CAdWMhSK9SwpbmX404Lmq/p4NNXWQv/3NZoWneAynXe+Dqw2WyYGDxgG+iTpieu33yitaMaEDxlDhiYgt9sLw==","signatures":[{"sig":"MEUCICBTlt3xczTRlOcpOolQCqYbBwYucE1uXjVvHtTwBRGDAiEArnHBkXo4K4eDz94VwrjSqohgOke4faCJ/AQs4pi1wxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2142286},"type":"module","engines":{"node":">=22"},"gitHead":"d1a43be709f4d6cf32d08710845d0e76a04d6654","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.3.5_1773574929882_0.18098110774122844","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@fengye404/termpilot","version":"0.3.6","license":"MIT","_id":"@fengye404/termpilot@0.3.6","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"1d20b0818ee7c7a294f00bf43f7b023c04f439e4","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.3.6.tgz","fileCount":89,"integrity":"sha512-QWhj+MrwHACiTblDn8eAbbkwAP3LpS5QE+FUNGWxPHAIz9xNY027Qm8ajnWLPKhH3Kntrj6BVIEwZyfFoWdwyg==","signatures":[{"sig":"MEQCIDRkZgXK/aej6in8V9z3mJVqM1eNi6Sp9bGWtZOw/t1PAiB1SVINIxoGOHHxdGuZLbtZijFrRD0lLZcTYxIOyZ8nug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2274923},"type":"module","engines":{"node":">=22"},"gitHead":"8e647c710ab716b95e677181219858379a6176c4","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.3.6_1773576099533_0.9130458063433284","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@fengye404/termpilot","version":"0.3.7","license":"MIT","_id":"@fengye404/termpilot@0.3.7","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"1d92aa347d3bac92f1e8082f5a46374a6a52ce51","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.3.7.tgz","fileCount":89,"integrity":"sha512-8Ws9wm43ScQzV+NbIgwGsId/FMANnV+AQOSP63U72i/yqlK423WXT7N3dehVOteOq0CUE1ObUPrHxUDVEfAxtQ==","signatures":[{"sig":"MEUCIFYtyIAO/YUVteuAmg9D+jWb2eOar6DE5k6oqLW4TQCMAiEAvhdoluKJD5C5dOPDMs1ziLJQWb37ryNOqnmo51ZK9Gk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2274963},"type":"module","engines":{"node":">=22"},"gitHead":"29feddde82a1a8b57f774d269da1a4009cf10496","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.3.7_1773577168028_0.16680553643642027","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@fengye404/termpilot","version":"0.3.8","license":"MIT","_id":"@fengye404/termpilot@0.3.8","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"f94cac1d1d6797c3180ba887376e8463e0e6756d","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.3.8.tgz","fileCount":89,"integrity":"sha512-ypQihzbJsWXbO1+z+V0D41ch77aEbpsYbW2/B27Lo32IcQhxYyzVFSCCzfyGcN1yUe47QCBdW1NUvBhDuAOFYg==","signatures":[{"sig":"MEQCIGAoTWQNVM9jXaxXJ9tJAbuwk9C2EW5ZhXEPFhJf15SAAiBzP4ViLGzituu9uN8ZCCBHaoQGSnpygZiEl6QBZJbybg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2276861},"type":"module","engines":{"node":">=22"},"gitHead":"55be451e719e2302f794e4740bb2c8b74099fe03","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.3.8_1773578857509_0.21941990361991692","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@fengye404/termpilot","version":"0.3.9","license":"MIT","_id":"@fengye404/termpilot@0.3.9","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"568acc95e02c2d3654b5e2b9c3c54e163786fe18","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.3.9.tgz","fileCount":89,"integrity":"sha512-vv78t/YRcvyriWovkLEENYwvUDPHlwMiE3Xmn5mlzFg2YyZGCmUqMLIld0JWTVOaRKRF6i9SmmP82/RmdKw3ig==","signatures":[{"sig":"MEUCIQClDcWQj4/A09pzworW47vl72QeN80NY0tg4+vkcu+bBAIgSgxfOSbqkSSG4T2Od8WEJMy0qv/ryQfDjLSjzgvyOUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2277500},"type":"module","engines":{"node":">=22"},"gitHead":"6ba3af903562ed3a7373fe9d3b5ab47f22a18312","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && TERMPILOT_APP_URL=http://127.0.0.1:18787 TERMPILOT_RELAY_URL=ws://127.0.0.1:18787/ws python3 /Users/fengye/.agents/skills/webapp-testing/scripts/with_server.py --server \"PORT=18787 node dist/cli.js relay\" --port 18787 -- python3 scripts/ui_smoke.py","test:isolation":"pnpm build && node scripts/check-device-isolation.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsup":"^8.5.0","vitepress":"^1.6.4","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.3.9_1773579846368_0.7019604520955611","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@fengye404/termpilot","version":"0.4.0","license":"MIT","_id":"@fengye404/termpilot@0.4.0","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"a8fcf99c59b53963be9c59e48a13db3ec7599742","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.0.tgz","fileCount":108,"integrity":"sha512-oBOfciIZe5j4ieHYUSvI+/Hq4CKYL8L4unJxiU4LP6cn2S/W5g+6UxJ6fLYlcth0CCzhoiKmEJcOiLK2a+1/Fg==","signatures":[{"sig":"MEYCIQDWUJUnNXtYiEKOKm81mBTmwmrdwxPC3YvUv+B03fLmuQIhAOMPp3tJH81uZXM8pAJ/AzH3MaCVZPSjZU9obcGwsznz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3199873},"type":"module","engines":{"node":">=22"},"gitHead":"cfb20db3a55b725503289151fe16344255ab78dd","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.0_1774125545291_0.3689293497404067","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@fengye404/termpilot","version":"0.4.1","license":"MIT","_id":"@fengye404/termpilot@0.4.1","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"087cc52cb0b5255d087ea97c865881ab33c7284a","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.1.tgz","fileCount":108,"integrity":"sha512-Az2g9IORgeIi2u60RbkGIiCh5GBGw3tKciy8t0NspSHp015Dkg1hAp/2E5+Lw0kf+k+Q1g5MjRV7QuLZ1tOttQ==","signatures":[{"sig":"MEUCIQCid/BZxXMmuUWzW/jHAXhT5kIeyPy/u5Z1/EAVm7JzggIgZkuAanLjawMhiv6AJ8yMQsGGp8W0AoKHUln8fmdX96A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3203145},"type":"module","engines":{"node":">=22"},"gitHead":"41e228f1ea9b3a5a3300ab0ae9fd8a8fa5a453a3","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.1_1774181930987_0.0060852592434008645","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@fengye404/termpilot","version":"0.4.2","license":"MIT","_id":"@fengye404/termpilot@0.4.2","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"2c418381104b21c8215cce4630e5444eca36889a","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.2.tgz","fileCount":108,"integrity":"sha512-dhbqAs9zbyG8hr9aVSkFmNeTfIHcGXtQduoGr3lOrx7N8+G1BsVEZm5g8jA0mf37n8m6gaTFJm5eERHuKqLW2g==","signatures":[{"sig":"MEQCICJEPcJZ+MiPL/vI7LVqZ0q/kmyxnl5LfBCDr/8985w+AiAh2TS6EXdUcZEKGBTO0l5o5s+wHR8L7lOeOKAjFzUErA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3205488},"type":"module","engines":{"node":">=22"},"gitHead":"da40a5e6a13d0b66d4e2dcffb2520ae5521e07d2","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.2_1774188552893_0.7597535924995629","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@fengye404/termpilot","version":"0.4.3","license":"MIT","_id":"@fengye404/termpilot@0.4.3","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"3c485a8d960f5ae7d903cb8b12f48b095efedfc2","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.3.tgz","fileCount":108,"integrity":"sha512-46MyqIcsTQUmjP73QrXPnbtoTMxpepSOJ3d9ueP5JGrBI0a9Jp6gU4XjL03BW3xwfzUaBSgh/TuIN0bDv2wujw==","signatures":[{"sig":"MEUCIQCrqbH00uvCvb5tRM7GlgWho3JamtcizlauxrnXboauoAIgOjkp2svr+C+4PyoojpSUZjYwep7tMZ2NwdmaflozooU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3209475},"type":"module","engines":{"node":">=22"},"gitHead":"da40a5e6a13d0b66d4e2dcffb2520ae5521e07d2","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.3_1774199754089_0.4679165142601782","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@fengye404/termpilot","version":"0.4.4","license":"MIT","_id":"@fengye404/termpilot@0.4.4","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"0b2f579fc9e38ee9768094a59676979e2c385f88","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.4.tgz","fileCount":108,"integrity":"sha512-bG7cfyEG+5cRWmL4sXMFYiMgfAVQnYI5gi7yYHGojEIG+C4z1PIId6MowSUnAb0dvkYO83jMNq4NCod1wUWkgw==","signatures":[{"sig":"MEYCIQC9EKOygztjqghVrDSm+m3BR3235kzhJYMoz/FC/LYczAIhAL04Tc7aQT64KVCuSav3mXlohn0W6rfR2iwpulx9hpFI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3213779},"type":"module","engines":{"node":">=22"},"gitHead":"f09e2e595ba5f40364175491173b30b67191a9ab","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.4_1774201036226_0.9707752146904547","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@fengye404/termpilot","version":"0.4.5","license":"MIT","_id":"@fengye404/termpilot@0.4.5","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"f1c3c750e5e9dfd93cffefd5bc5e0053fa523da7","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.5.tgz","fileCount":110,"integrity":"sha512-mdwH4+Ap8y37fhkWOQxQb+OBzCFu/6szNyb7HMOxipgGQ/ie749Ij1QEHusCqzpBfBtZt7/bPBgyU4hD/bGl8g==","signatures":[{"sig":"MEYCIQDwj5VFzMY/Zc21gWLSoTDsTWBlRFP8t0UNrD1CwHehBwIhAONoEF8udIKUgIHt++g60uh20c0wPcYLETjWlUjJFhlL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3456333},"type":"module","engines":{"node":">=22"},"gitHead":"dc69e8159636aa64b8fb24e5a8c1d15444d89ed8","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.5_1774205809863_0.18110483108801678","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@fengye404/termpilot","version":"0.4.6","license":"MIT","_id":"@fengye404/termpilot@0.4.6","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"a48759a081517963dedaa7395653ca3d11a84a02","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.6.tgz","fileCount":110,"integrity":"sha512-CYgZQW8u54TkuePc1DYRB94vl8zrh3Zt9a/eTLb+YnLKqT1du6AdQviXzC2FhtLHtJkb1R+v3ki9/FX6aDG6oQ==","signatures":[{"sig":"MEUCIQCpJpiFF03w7GcyBDxFGQ/S1z65GDKWViCoLzmQDkHmJwIgHaGd/DMwyrN1J1u5AlhE84nS0agcJFOJ5PfteuS88GI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3458618},"type":"module","engines":{"node":">=22"},"gitHead":"dc69e8159636aa64b8fb24e5a8c1d15444d89ed8","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.6_1774206568897_0.8365819243195907","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@fengye404/termpilot","version":"0.4.7","license":"MIT","_id":"@fengye404/termpilot@0.4.7","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"ce6dca05637ff672a02db2b0188d6fbe0fb3fb74","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.7.tgz","fileCount":110,"integrity":"sha512-4yjRpEibJRgf+VRAPG8nHo4yF9GCG9CEl22PM0J5BPOmZ8ntmD3TbyzlXHc5RrIBEkTtYCa9j/HCd61AGsAlbA==","signatures":[{"sig":"MEUCIQCGww0H7EepQ507H6F8OOE6agJ9Ij6exrbs8gwUqSZ1lQIgaVG4w+G/TuybQgdwh+yYr0IjYUNOZcm1i7MpgT0URD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3460845},"type":"module","engines":{"node":">=22"},"gitHead":"dc69e8159636aa64b8fb24e5a8c1d15444d89ed8","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.7_1774207061373_0.08779233919811169","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@fengye404/termpilot","version":"0.4.8","license":"MIT","_id":"@fengye404/termpilot@0.4.8","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"5d71b96bc213a0c7084239d370b0f1f7afc37df3","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.8.tgz","fileCount":110,"integrity":"sha512-wvM6kMPHOxE3oGcpIl8+Xs8VsngQNhXPahbO3ySDI6ykONjsiuEcOs1iYfqOMcnRzpvs8OhleMIZmPXUM/2rjg==","signatures":[{"sig":"MEYCIQCdu56BcrtYzLNSMMVunNY6S/K6gU1GfkT6DM7I2Xa8TwIhAIBawleyLZmLcic4V7L16B932FoH8ez827o7fieSd31D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3461395},"type":"module","engines":{"node":">=22"},"gitHead":"dc69e8159636aa64b8fb24e5a8c1d15444d89ed8","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.8_1774207489102_0.4046931856906808","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"@fengye404/termpilot","version":"0.4.9","license":"MIT","_id":"@fengye404/termpilot@0.4.9","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"893db3aa6f9de4ab4b845f4c52c7766cc5d4e90d","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.4.9.tgz","fileCount":110,"integrity":"sha512-+Mk2tN38uv01AlzBLY4fERByI3Tz7gKTHi/zmQmci6w+IZ3kNzgPru6NXw9aKkbNrnMyUmhQPcLCcwtAOF6cew==","signatures":[{"sig":"MEUCIQCjafYe7TenKU5Qd2i8HSVyqcNptq4f/A1sZnLSwqtMDAIgQarom94HNkydJiRZY/2wpmDawXn5O6jj0r+f0r2vDMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3461395},"type":"module","engines":{"node":">=22"},"gitHead":"4b0cbe40bcb324276253d8361c60da287d4dba7a","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.4.9_1774207750286_0.1420858357276762","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@fengye404/termpilot","version":"0.5.0","license":"MIT","_id":"@fengye404/termpilot@0.5.0","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"39dc8aa61df9b0ccc0ddc351f9f16ac6123aa9b8","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.0.tgz","fileCount":110,"integrity":"sha512-xZckJ8/j/xZqg+kBbiklClPFGj/rx8+OcUnjnEztCBnBoKNOTm2/qHqHA2bPrteGG5XkuLZNmDCdBl8rSRLhTA==","signatures":[{"sig":"MEUCICMZU9GMvjD8bupmAzICQ2nexNznGHTKI7kWWFNY2vnEAiEA8/yIcVq/rgfOnivD17v90WdIGWksGgoNjmvbyBEeA44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3461548},"type":"module","engines":{"node":">=22"},"gitHead":"4b0cbe40bcb324276253d8361c60da287d4dba7a","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.0_1774208699086_0.20573251689655092","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@fengye404/termpilot","version":"0.5.1","license":"MIT","_id":"@fengye404/termpilot@0.5.1","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"f9150b84076d4eb9c4ed90af3eecd0ff08112341","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.1.tgz","fileCount":110,"integrity":"sha512-Abuo7Fky9i7TmDTWYNT7CBlyHKhHlTO1UjZUiGdDiHtPf1MiuWkZ5+AkIye6ZupmMR8GkdI5oerd9/a5+hnwWQ==","signatures":[{"sig":"MEUCIQDY+5FoeyKeZRdeBU0qcVgA+9fjDmWuDNqdcXb8jIg1UwIgetR3h2L0KTgS8hln/XBgT4wdXwPaRtTJhTJrr+Fg7r8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3461836},"type":"module","engines":{"node":">=22"},"gitHead":"4b0cbe40bcb324276253d8361c60da287d4dba7a","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.1_1774208957086_0.9840221411377048","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@fengye404/termpilot","version":"0.5.2","license":"MIT","_id":"@fengye404/termpilot@0.5.2","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"a28ff61ea915de46732e804fe35db79206d10f4c","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.2.tgz","fileCount":110,"integrity":"sha512-/8SwSDrCAlIyoYGXDOpbor1smyoRE7yZ+cBU2ixdWjD3tExqMo2Zc6O9cUSs8WgBMi9BBA0jSyor2zMXwzJ2zQ==","signatures":[{"sig":"MEQCIGrn7yiksMMnA4e53vSyGSVl4IkAx2zphOd8C0ztscslAiAEpq683ChBCRDQJqAQk37650QXUpibeL48QC6NuJvq4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3474566},"type":"module","engines":{"node":">=22"},"gitHead":"0cbe360cb5ca3227f88e665d3fb55c4ec1f50e23","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.2_1774283518126_0.2327399061677018","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@fengye404/termpilot","version":"0.5.3","license":"MIT","_id":"@fengye404/termpilot@0.5.3","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"7a1529a0e4cb36e7fca01e2ffa27caca785ab8fa","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.3.tgz","fileCount":110,"integrity":"sha512-ZrIXIywU+U4n/+GW6ITd29twAn1nVwDLxFhkBntHDUzmUBYPJdRKkECqDwXrZd6WsT2gspr5xiFAYcQcl6EwXg==","signatures":[{"sig":"MEYCIQCUa9Dm3PL0rm4Izcs/hCE8zEIQmJmGh59Ij/IudbMp5QIhANZ07opSH21f6NFVOvIxy8Po8R6RlOQU1jFEkiXBAPE1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3475513},"type":"module","engines":{"node":">=22"},"gitHead":"0cbe360cb5ca3227f88e665d3fb55c4ec1f50e23","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.3_1774286222134_0.038899419793467116","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@fengye404/termpilot","version":"0.5.4","license":"MIT","_id":"@fengye404/termpilot@0.5.4","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"81a79f4c8262d39ea4c9769372253184f0a40da8","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.4.tgz","fileCount":110,"integrity":"sha512-HRZ7f0/SudgvllcipRrgJoPXa63xIrjYOu+zxViV+O2oaORjjhUyxDIdNyFFMe+7aUuf0jVt4H6bsvXaSpefzw==","signatures":[{"sig":"MEYCIQCfxw0EHQ8y4Tw8YgpT3s3A+p9bhZm7chfHt/GeDvOSfwIhAMW0UTieAUVikbfCGig+rsvZbO/Nld65L3EAu11KqkKh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3475606},"type":"module","engines":{"node":">=22"},"gitHead":"0cbe360cb5ca3227f88e665d3fb55c4ec1f50e23","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.4_1774287130077_0.3262759563534525","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@fengye404/termpilot","version":"0.5.5","license":"MIT","_id":"@fengye404/termpilot@0.5.5","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"c4430d72926c27850653a8ff77a210eb8a5aa5d2","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.5.tgz","fileCount":110,"integrity":"sha512-/NFywVIlD85PTPGPQgX8ZOjVGN/nkvEvhQt9P0UzGmAaxp9yNU9GV5N12rvX1wUiuXOkOJHbWwHMlug/VwXX8A==","signatures":[{"sig":"MEQCID1yE27kjisUVj4yTGBSZKAV8omWjrx9pf6tjodme/DuAiA61DfgBDVBosWTg14Q7G4kZRY0m3bxLJYCf5uYWvLOxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3478237},"type":"module","engines":{"node":">=22"},"gitHead":"03335f397463397ad67f5a67923201ce06a89b3e","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.5_1774289076953_0.1273080911861737","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@fengye404/termpilot","version":"0.5.6","license":"MIT","_id":"@fengye404/termpilot@0.5.6","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"2420646d3c35e08061456eec7131958705c5425e","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.6.tgz","fileCount":110,"integrity":"sha512-MpfVrTpe/Lukot6QGj6jRuGPgx18oVNwgZgJG6Cddri2PSbaql778r+2suZf+wTR5MOk5+IaeiWDYSCwfIo7gw==","signatures":[{"sig":"MEUCIQCydlsNGRqswBI90S7pNLFWzH/xiUhaKlB367+fS7NyCQIgUF/GvKHvy8lEV7YwNWfadwU9XgE6xDZJtpWZLLIDBuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3479847},"type":"module","engines":{"node":">=22"},"gitHead":"03335f397463397ad67f5a67923201ce06a89b3e","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.6_1774291017732_0.36524462431011795","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"@fengye404/termpilot","version":"0.5.7","license":"MIT","_id":"@fengye404/termpilot@0.5.7","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"82526329c5d6c5dfc6666f3ada8bd625bcb2308c","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.7.tgz","fileCount":111,"integrity":"sha512-3toOcDHo3SAemZkiU4XB+IKlSafmMgdPEljKg2Y4Xx9GSFMoRJLtM4O4Or8qOCJktMhelHqBkUsbFa51RMFVGQ==","signatures":[{"sig":"MEUCIQCOngzw8W1oYcPkfWiU1u7qbcD92DwvS2z7OTBdeRewrQIgVaOHyH1NLuOQbJZuVOBCacntASpdBkFKPLiLLlE87fc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3485115},"type":"module","engines":{"node":">=22"},"gitHead":"03335f397463397ad67f5a67923201ce06a89b3e","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.7_1774293362804_0.5929534358494795","host":"s3://npm-registry-packages-npm-production"}},"0.5.8":{"name":"@fengye404/termpilot","version":"0.5.8","license":"MIT","_id":"@fengye404/termpilot@0.5.8","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"a6db9183ee7ba87f462c55cdbe037309d87b517e","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.8.tgz","fileCount":111,"integrity":"sha512-oxddnCweoLRpJNUbSDlr+rkq96aGI6DgVUT+pWe7DD3q9iNkVCHacM3WU4E5dM6t8hO3VvCIFQhDdEm7OShOZA==","signatures":[{"sig":"MEYCIQCjHJwM5kKuAHH2591yfgHQctuZWlqjA58eh4LL+UkpKgIhANvLDGEkY8Fe8o/KcY8TwEPkmhlNYPe8Sc9leVOEj+eL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3485115},"type":"module","engines":{"node":">=22"},"gitHead":"03335f397463397ad67f5a67923201ce06a89b3e","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.8_1774293472445_0.009877765188585075","host":"s3://npm-registry-packages-npm-production"}},"0.5.9":{"name":"@fengye404/termpilot","version":"0.5.9","license":"MIT","_id":"@fengye404/termpilot@0.5.9","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"92417db39c8842516ae219d1c836ad2a3fabba36","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.5.9.tgz","fileCount":111,"integrity":"sha512-kgzSa8QtYOhShr4Q/VlS5iqBwHr16uPDz4sEsiqy65kiDCzlLqBnD0MuSQth7qHGyanKfgpsNAq5r0vZviPixQ==","signatures":[{"sig":"MEUCIQDKs+siNZht1bpGDx1mSMKQNyoFyabq4tYK02IjsQENawIgZgoHGIhFsJ1n07CySCGoMNMr6bsySvptQW5dLR7FGJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3485256},"type":"module","engines":{"node":">=22"},"gitHead":"d5a4a4f43abb823b1bd71b4b57a945bc79fec9d9","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.5.9_1774294674788_0.9274361144452918","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@fengye404/termpilot","version":"0.6.0","license":"MIT","_id":"@fengye404/termpilot@0.6.0","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"2db8231bedc89e06301f8fe0308a1a646a1b87f3","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.0.tgz","fileCount":111,"integrity":"sha512-8radsZ3pZZ7LhZy/Ujjfbb6aqf9s1IWlXzrshK7dQV3vn1OF0hufj0D8r25XOxg9A/M89Jnh1kW9a516ZB8C9g==","signatures":[{"sig":"MEYCIQC4CfKXxLVGh4em0Fk1v8q+BLyW3HJ/uNxiTd349RHDxwIhANyLhBSrArralTumfkcdneBP9DIz6NU94GHZblxa4BXV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3486529},"type":"module","engines":{"node":">=22"},"gitHead":"20aaef41ab1fe1d86c6b5c142f31783ace9ad308","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.0_1774296141696_0.3519776775913701","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@fengye404/termpilot","version":"0.6.1","license":"MIT","_id":"@fengye404/termpilot@0.6.1","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"f9f3de5896b5add91cfb6e106afe47b1d1a47420","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.1.tgz","fileCount":111,"integrity":"sha512-HKrYtSaM1ym3490IXZ2sJEb/v5SBP78DMnOpxYDX4GekoRMrfovPYeXEIcMzKjklM2jsrerB7Bk9rmh9DCAvSg==","signatures":[{"sig":"MEYCIQDVqZj+KKP4WoCxaoomwk7rakkkMb8pI2N0dTefW8LwJAIhAJOF9xYrMWaUFmQlKbNCHfvQHxo3JrVIwROoqqr1YgBQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3486645},"type":"module","engines":{"node":">=22"},"gitHead":"575d43d8d6efc68029ec99185d6d98f345942c97","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.1_1774296280562_0.07540991229456129","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@fengye404/termpilot","version":"0.6.2","license":"MIT","_id":"@fengye404/termpilot@0.6.2","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"a07f60717e8e798a79cec61f2e5331fa2c99adb0","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.2.tgz","fileCount":111,"integrity":"sha512-x/BNqn5h3WsRf6Jh9CZGsEtFfr4gbpL46/W2t/+PRwrcHVqLXTU8Dyvrpz4TDhbXSPkVrKiFR9W0i9LKczDlbw==","signatures":[{"sig":"MEYCIQDir8UCUOPfGhEA3LypezAzIbjMFNqZU0vwzYG9GiLLHQIhAO8KBVrJU7jthwce+ULKW9YusA/9V5ghPjbUSBEhdE0H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3486645},"type":"module","engines":{"node":">=22"},"gitHead":"575d43d8d6efc68029ec99185d6d98f345942c97","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.2_1774361199874_0.049768449564581374","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@fengye404/termpilot","version":"0.6.3","license":"MIT","_id":"@fengye404/termpilot@0.6.3","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"86c7a20688e202a7349f6fca4aaae2288a1a0690","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.3.tgz","fileCount":111,"integrity":"sha512-V0pWBKuRX7NQkL7h9Yknk96qc/hWARcLloYDTO6Jnf3Rwp/D68/qzV8uROrE/Sq0CG3A9WOmHVJABarHw6SYwg==","signatures":[{"sig":"MEUCIDp3JYvyGrev+jYppeWLxFfOUVsYapuQBaq7hVtyMLyuAiEAiqRyofoM857VPNZiRP7BZh31DiNqOLF+laQt/kw9gN8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3486714},"type":"module","engines":{"node":">=22"},"gitHead":"4263c869a5f39e01572649ce702599eb08b61a0e","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.3_1774362925286_0.772676261723511","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@fengye404/termpilot","version":"0.6.4","license":"MIT","_id":"@fengye404/termpilot@0.6.4","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"808d231e41f55cf0efe773cc76c4ccf662de8b93","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.4.tgz","fileCount":111,"integrity":"sha512-CR1g+L0luoCOkwb4vkosVDNTrFMqe575WKbDYCQHHnKDjidgvoBrFnX4H2b7dSv5AYYXAjPsWAsRZI4qry6Z0g==","signatures":[{"sig":"MEUCIQCW8pIOLTLQ/KExbM3IF6s/0IdjZyTzku7Qh6ph0bH1wQIgHM1KDuIcaLkelFzD1WtU524XtcFYiohvm/LPKC+2v5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3486795},"type":"module","engines":{"node":">=22"},"gitHead":"59e79022d2f3100a285c63d2334388cbfcc83091","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.4_1774364280679_0.5658828039898256","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@fengye404/termpilot","version":"0.6.5","license":"MIT","_id":"@fengye404/termpilot@0.6.5","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"6006251765c4e4a2fcee043db84457adcaa4c10e","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.5.tgz","fileCount":111,"integrity":"sha512-GVyIZZXBxYDdEoN3oolL6KY55ovjB0/Vlhm9QXO8JFA+GoRV3Nm/zJSYwI5kdyMKTV3BwXvMWr4e6h2fUG9OIA==","signatures":[{"sig":"MEUCIFbk738M1/iHHAIVqlsvwHapLHTor26fWW3+ykQB3rxmAiEAptF5RHG+j/HHRd3sQQIyms5KBBbY2Ys4rQHUXzv2qRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3486888},"type":"module","engines":{"node":">=22"},"gitHead":"a5d5af05c4dc2afc4028715660a646e70771fa1e","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.5_1774366138579_0.35336053367706555","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"@fengye404/termpilot","version":"0.6.6","license":"MIT","_id":"@fengye404/termpilot@0.6.6","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"e41a96c0e969197f3a307ba2c962286fa3f15550","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.6.tgz","fileCount":111,"integrity":"sha512-QvLO6csMVWWn92fposbiUNteG3vUMvPZxIgbzjQWvdA4oZ4zpabPVotBIab46Bl7T/bd4rV05lvukNXIN/JnLg==","signatures":[{"sig":"MEYCIQDPHH9GZxF6sh48D/sR6EQb1KrYpHgimNcJJzekTHy7SgIhAKFd64vmLrQdxUAay0pCdEMoOnr5VPjwCUDgbcIcFLM5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3486596},"type":"module","engines":{"node":">=22"},"gitHead":"0326ad9675645faf992e902ea1fd1bac9ff47415","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.6_1774367558382_0.3929026358741654","host":"s3://npm-registry-packages-npm-production"}},"0.6.7":{"name":"@fengye404/termpilot","version":"0.6.7","license":"MIT","_id":"@fengye404/termpilot@0.6.7","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"3249fb6196765ff8511bd361f73a7a2833ff4283","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.7.tgz","fileCount":111,"integrity":"sha512-n4OI8DUCPS088cBcJnVXx4vhHAOH4JGXsAt9Pn64lwEvjeUee+cyLTLnpyVr/rCmSc+dg1h1YpWNRDVJOJYVTg==","signatures":[{"sig":"MEUCIQDynjCQRdNuBEDBi03MXVuPV0bh0tTPw0C63oZZuelyGAIgALuFywbvEuk7bKPeUCP2fqisUIxOp/3aTODTR9xIuJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3487791},"type":"module","engines":{"node":">=22"},"gitHead":"4663ad56c6cf371062ab6606dbc1eddc6b76e643","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.7_1774369820228_0.3645253582689103","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"@fengye404/termpilot","version":"0.6.8","license":"MIT","_id":"@fengye404/termpilot@0.6.8","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"56424c62580c7b859d3d4a24d47b769b129a0df3","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.8.tgz","fileCount":111,"integrity":"sha512-1/wvUGYiPRcvh5LU8A02RjN0m79g8aO5QcN0oQxuhcb+H/xPOX1hOw+qTujq5wyOBwSfP2hC6jbrPT/M1WIQIA==","signatures":[{"sig":"MEQCIBSdKjjlXMy81SRcL3aya59C8J8bl+iv9fH4t01sWBE8AiBEn2He7K6U4Eej0kf4CUgb56BtwApnZ/LyWJmzpSgvAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3487866},"type":"module","engines":{"node":">=22"},"gitHead":"6300f2f58d2c1b9135af92c601d8b82076c6393e","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.8_1774371228085_0.7865826860683913","host":"s3://npm-registry-packages-npm-production"}},"0.6.9":{"name":"@fengye404/termpilot","version":"0.6.9","license":"MIT","_id":"@fengye404/termpilot@0.6.9","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"bin":{"termpilot":"dist/cli.js"},"dist":{"shasum":"55e4e4b3765f924135c8bc08f14357c9ce2d0df1","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.9.tgz","fileCount":111,"integrity":"sha512-OI7rLjs6F6OuOHUMCV1jhxX5qcoLbMGwfIcQJBUkAuJW6kH5r5FKLVUhG+8QjPx7QtJta4Kdh+l60Oc37p1+6A==","signatures":[{"sig":"MEYCIQCnyhvwZE/CFmUo1nr65uZvgUv0Mkb6xv/2um5UUkA+qgIhAOrhpkar+9bR2JLKbhUtPBvbeZ7KPtEsNEGUDBqJ/1U/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3489422},"type":"module","engines":{"node":">=22"},"gitHead":"5b152cb7f7f554f92ddd7a5b3b4d3c0971ff7c99","scripts":{"cli":"node dist/cli.js","build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","dev:app":"pnpm --filter @termpilot/app run dev","prepack":"pnpm build","docs:dev":"vitepress dev docs","build:web":"pnpm --filter @termpilot/app build","dev:agent":"pnpm --filter @termpilot/agent run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","test:e2ee":"pnpm build && pnpm test:e2ee:built","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:list":"pnpm --filter @termpilot/agent run list","agent:pair":"pnpm --filter @termpilot/agent run pair","docs:build":"vitepress build docs","agent:audit":"pnpm --filter @termpilot/agent run audit","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","verify:e2ee":"pnpm build && pnpm test:e2ee:built","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:create":"pnpm --filter @termpilot/agent run create","agent:doctor":"pnpm --filter @termpilot/agent run doctor","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:revoke":"pnpm --filter @termpilot/agent run revoke","docs:preview":"vitepress preview docs","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","check:repo-docs":"node scripts/check-repo-docs.mjs","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","check:architecture":"node scripts/check-architecture.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts"},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"_npmVersion":"10.9.2","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","directories":{},"_nodeVersion":"23.6.0","dependencies":{"pg":"^8.16.3","ws":"^8.19.0","fastify":"^5.6.1","@fastify/websocket":"^11.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.31.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitepress":"^1.6.4","playwright":"^1.54.2","typescript":"^5.9.3","@types/node":"^24.12.0"},"_npmOperationalInternal":{"tmp":"tmp/termpilot_0.6.9_1774372493254_0.4244807539459332","host":"s3://npm-registry-packages-npm-production"}},"0.6.10":{"name":"@fengye404/termpilot","version":"0.6.10","license":"MIT","type":"module","packageManager":"pnpm@10.31.0","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","bin":{"termpilot":"dist/cli.js"},"engines":{"node":">=22"},"publishConfig":{"access":"public"},"scripts":{"build":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json && pnpm --filter @termpilot/app build && tsup","build:web":"pnpm --filter @termpilot/app build","check:architecture":"node scripts/check-architecture.mjs","check:repo-docs":"node scripts/check-repo-docs.mjs","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","typecheck":"pnpm -r typecheck && tsc --noEmit -p tsconfig.json","verify:fast":"pnpm typecheck && pnpm check:architecture && pnpm check:repo-docs && pnpm check:public-docs","verify:full":"pnpm verify:fast && pnpm build && pnpm docs:build && pnpm test:relay-storage:built && pnpm test:app-versioning:built && pnpm test:isolation:built","verify:browser":"pnpm build && pnpm test:ui-smoke:built","verify:e2ee":"pnpm build && pnpm test:e2ee:built","dev:app":"pnpm --filter @termpilot/app run dev","dev:relay":"pnpm --filter @termpilot/relay run dev","dev:agent":"pnpm --filter @termpilot/agent run dev","local:reset":"pnpm exec tsx scripts/reset-local-dev.ts","cli":"node dist/cli.js","agent:create":"pnpm --filter @termpilot/agent run create","agent:list":"pnpm --filter @termpilot/agent run list","agent:kill":"pnpm --filter @termpilot/agent run kill","agent:attach":"pnpm --filter @termpilot/agent run attach","agent:pair":"pnpm --filter @termpilot/agent run pair","agent:grants":"pnpm --filter @termpilot/agent run grants","agent:audit":"pnpm --filter @termpilot/agent run audit","agent:revoke":"pnpm --filter @termpilot/agent run revoke","agent:doctor":"pnpm --filter @termpilot/agent run doctor","check:stability":"pnpm build && node scripts/check-relay-agent-stability.mjs","check:public-docs":"node scripts/check-public-doc-freshness.mjs","test:app-versioning":"pnpm build && pnpm test:app-versioning:built","test:app-versioning:built":"node scripts/check-app-versioning.mjs","test:e2ee":"pnpm build && pnpm test:e2ee:built","test:e2ee:built":"pnpm test:isolation:built && pnpm test:ui-smoke:built","test:isolation":"pnpm build && pnpm test:isolation:built","test:isolation:built":"pnpm exec tsx scripts/check-device-isolation.mjs","test:relay-storage":"pnpm build && pnpm test:relay-storage:built","test:relay-storage:built":"node scripts/check-relay-storage-and-packaging.mjs","test:relay-docker":"node scripts/check-relay-docker.mjs","test:terminal-resize":"pnpm build && pnpm test:terminal-resize:built","test:terminal-resize:built":"pnpm exec tsx scripts/check-terminal-resize.ts","test:ui-smoke":"pnpm build && pnpm test:ui-smoke:built","test:ui-smoke:built":"pnpm exec tsx scripts/check-ui-smoke.ts","prepack":"pnpm build"},"dependencies":{"@fastify/websocket":"^11.2.0","fastify":"^5.6.1","pg":"^8.16.3","ws":"^8.19.0"},"devDependencies":{"@types/node":"^24.12.0","playwright":"^1.54.2","tsup":"^8.5.0","tsx":"^4.21.0","typescript":"^5.9.3","vitepress":"^1.6.4"},"_id":"@fengye404/termpilot@0.6.10","gitHead":"11d44ebd24f5ee690aca6cb6f96fb370dc287900","_nodeVersion":"23.6.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-cY4U0JkIM/7b+CP8gBDLdZztZNt7eSJRhAXPXGT36G4KU6IeX6LEmT8Hbccq21rbvvFaTmqcSmbQR8nuBgEcpQ==","shasum":"a4e2e70fbff238fe6863e0de810c131f0731fb07","tarball":"https://registry.npmjs.org/@fengye404/termpilot/-/termpilot-0.6.10.tgz","fileCount":111,"unpackedSize":3482611,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCG+8dhSfgxOFcMcBgb1xKJZBzuOWwQeYbLuYJri9yxmAIhAJJ7ibxI61u3J2UvLqsts8ecXYiJowM+fGDIr2QHgJFR"}]},"_npmUser":{"name":"fengye404","email":"fengye4302@gmail.com"},"directories":{},"maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/termpilot_0.6.10_1774374051512_0.6286466355497602"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-10T16:08:03.962Z","modified":"2026-03-24T17:40:51.940Z","0.1.0":"2026-03-10T16:08:04.233Z","0.1.1":"2026-03-10T16:47:29.203Z","0.1.2":"2026-03-10T17:08:38.103Z","0.1.4":"2026-03-10T18:30:53.924Z","0.1.5":"2026-03-11T15:57:39.516Z","0.1.6":"2026-03-11T16:32:47.708Z","0.1.7":"2026-03-11T17:36:02.729Z","0.1.8":"2026-03-11T17:52:04.004Z","0.1.9":"2026-03-11T18:06:16.527Z","0.2.0":"2026-03-11T18:08:20.464Z","0.2.1":"2026-03-11T18:12:57.764Z","0.2.2":"2026-03-11T18:16:54.389Z","0.2.3":"2026-03-11T18:18:47.597Z","0.2.4":"2026-03-11T18:50:43.920Z","0.2.5":"2026-03-11T19:06:52.123Z","0.2.6":"2026-03-12T15:38:36.152Z","0.2.7":"2026-03-12T16:27:27.149Z","0.2.8":"2026-03-12T16:57:44.731Z","0.2.9":"2026-03-12T17:30:31.758Z","0.3.0":"2026-03-12T18:18:13.250Z","0.3.2":"2026-03-15T11:01:07.089Z","0.3.3":"2026-03-15T11:08:50.189Z","0.3.4":"2026-03-15T11:20:51.206Z","0.3.5":"2026-03-15T11:42:10.083Z","0.3.6":"2026-03-15T12:01:39.736Z","0.3.7":"2026-03-15T12:19:28.260Z","0.3.8":"2026-03-15T12:47:37.721Z","0.3.9":"2026-03-15T13:04:06.546Z","0.4.0":"2026-03-21T20:39:05.541Z","0.4.1":"2026-03-22T12:18:51.165Z","0.4.2":"2026-03-22T14:09:13.135Z","0.4.3":"2026-03-22T17:15:54.318Z","0.4.4":"2026-03-22T17:37:16.547Z","0.4.5":"2026-03-22T18:56:50.133Z","0.4.6":"2026-03-22T19:09:29.190Z","0.4.7":"2026-03-22T19:17:41.553Z","0.4.8":"2026-03-22T19:24:49.300Z","0.4.9":"2026-03-22T19:29:10.477Z","0.5.0":"2026-03-22T19:44:59.360Z","0.5.1":"2026-03-22T19:49:17.320Z","0.5.2":"2026-03-23T16:31:58.356Z","0.5.3":"2026-03-23T17:17:02.374Z","0.5.4":"2026-03-23T17:32:10.307Z","0.5.5":"2026-03-23T18:04:37.183Z","0.5.6":"2026-03-23T18:36:57.934Z","0.5.7":"2026-03-23T19:16:02.975Z","0.5.8":"2026-03-23T19:17:52.626Z","0.5.9":"2026-03-23T19:37:55.069Z","0.6.0":"2026-03-23T20:02:21.904Z","0.6.1":"2026-03-23T20:04:40.828Z","0.6.2":"2026-03-24T14:06:40.076Z","0.6.3":"2026-03-24T14:35:25.491Z","0.6.4":"2026-03-24T14:58:00.884Z","0.6.5":"2026-03-24T15:28:58.770Z","0.6.6":"2026-03-24T15:52:38.575Z","0.6.7":"2026-03-24T16:30:20.454Z","0.6.8":"2026-03-24T16:53:48.348Z","0.6.9":"2026-03-24T17:14:54.144Z","0.6.10":"2026-03-24T17:40:51.792Z"},"license":"MIT","description":"一个基于 tmux 的终端会话跨端查看与控制原型。","maintainers":[{"name":"fengye404","email":"fengye4302@gmail.com"}],"readme":"# <img src=\"docs/public/favicon.svg\" alt=\"TermPilot logo\" width=\"28\" valign=\"middle\" /> TermPilot\n\n[English](./README.md) | 简体中文\n\n[![npm version](https://img.shields.io/npm/v/%40fengye404%2Ftermpilot)](https://www.npmjs.com/package/@fengye404/termpilot)\n[![npm downloads](https://img.shields.io/npm/dm/%40fengye404%2Ftermpilot)](https://www.npmjs.com/package/@fengye404/termpilot)\n[![GitHub Actions](https://img.shields.io/github/actions/workflow/status/fengye404/TermPilot/docs.yml?branch=main&label=docs)](https://github.com/fengye404/TermPilot/actions)\n\n让同一条受管理终端会话在电脑和手机之间持续可见、可控制。\n\nTermPilot 是一个本地优先的终端会话共享工具，方便你从手机继续访问电脑上已经运行中的受管理会话，同时把会话内容保留在本机。\n\n> [!TIP]\n> 文档站: [TermPilot Docs](https://fengye404.top/TermPilot/) · [快速开始](https://fengye404.top/TermPilot/getting-started) · [部署指南](https://fengye404.top/TermPilot/deployment-guide) · [Agent 运维](https://fengye404.top/TermPilot/agent-operations) · [故障排查](https://fengye404.top/TermPilot/troubleshooting) · [CLI 参考](https://fengye404.top/TermPilot/cli-reference)\n\n> [!IMPORTANT]\n> TermPilot 不会自动导入任意 Terminal 或 iTerm 标签页。只有由 TermPilot 创建或管理的会话，才能在手机端继续访问。\n\n## 它是什么\n\nTermPilot 围绕一条很明确的主路径设计：\n\n- 电脑上已经有一条受管理会话在运行\n- 你离开了工位\n- 你仍然想在手机上继续接入这条原会话\n\n这条会话可以是 Claude Code、部署流程、迁移任务，或者任何长期运行的终端任务。整个产品围绕同一条会话在多端之间持续可达来设计。\n\n## 架构\n\n```text\n手机浏览器 / PWA  -- https / wss -->  relay  <-- ws / wss -- 电脑上的 agent\n                                                   |\n                                                   +-- 配对、授权路由、\n                                                       审计元数据、Web UI\n```\n\n运行时由三部分组成:\n\n- `relay`: HTTP + WebSocket 入口，负责 Web UI 托管、配对、权限控制和加密信封转发\n- `agent`: 跑在电脑上的守护进程，负责管理本地会话，并把敏感会话数据留在端侧\n- `app`: 由 relay 提供的移动端 Web UI\n\n## 当前模型\n\n- 一个统一 CLI，同时提供 relay、agent 和会话管理命令\n- 基于 `tmux` 的受管理会话，输出回放由 agent 提供\n- 本地优先的会话状态模型，会话标题、cwd、状态细节和终端输出保留在 agent 所在电脑\n- 设备级配对与授权模型，用于浏览器与 agent 之间的加密通信\n- relay 持久化默认只保留配对、grant 与审计元数据，长期运行默认使用 SQLite，也可通过 `DATABASE_URL` 切换到 PostgreSQL\n- 一个面向移动端的 Web UI，聚焦查看、轻输入和快捷控制\n- 页面在后台时，浏览器可对设备离线、会话退出和疑似残留会话发出提醒\n- 输出同步采用自适应轮询：活跃会话保持更快刷新，长期无人附着的托管命令会话会自动降频\n- 托管命令会话带有轻量残留治理，会自动回收长期无人附着且无输出的会话\n\n这是一条刻意收窄的产品边界，重点放在会话连续性和多端接入体验上。\n\n如果你是从旧版本升级、且本地绑定里还没有本地密钥，需要重新配对一次。\n\n## 快速开始\n\n如果你更希望按文档站的分层路径阅读，而不是直接从仓库首页一路往下看，可以从这里进入：\n\n- 产品定位： [Why TermPilot](https://fengye404.top/TermPilot/why-termpilot)\n- 第一次跑通： [快速开始](https://fengye404.top/TermPilot/getting-started)\n- relay 部署： [部署指南](https://fengye404.top/TermPilot/deployment-guide)\n- agent 生命周期与会话治理： [Agent 运维](https://fengye404.top/TermPilot/agent-operations)\n- 问题排查： [故障排查](https://fengye404.top/TermPilot/troubleshooting)\n- 运行时设计： [安全设计](https://fengye404.top/TermPilot/security-design)、[架构](https://fengye404.top/TermPilot/architecture)、[协议](https://fengye404.top/TermPilot/protocol)\n\n### 环境要求\n\n服务器和电脑都需要:\n\n- `Node.js 22+`\n- `@fengye404/termpilot`\n\n电脑还需要:\n\n- `tmux`\n\n安装:\n\n```bash\nnpm install -g @fengye404/termpilot\n```\n\n### 1. 启动 relay\n\n在服务器或一台手机可访问的机器上执行:\n\n```bash\ntermpilot relay\n```\n\n常用变体:\n\n```bash\ntermpilot relay start\ntermpilot relay stop\ntermpilot relay run\n```\n\n默认情况下，relay 会后台启动，监听 `0.0.0.0:8787`，同时提供 Web UI 和 `/ws`，并把 relay 元数据持久化到 `~/.termpilot/relay.db`。\n\n### 2. 启动 agent\n\n在你的电脑上执行:\n\n```bash\ntermpilot agent\n```\n\n首次运行时，agent 会询问 relay 主机和端口，然后:\n\n- 保存本地配置\n- 启动后台守护进程\n- 打印一次性配对码\n\n如果你希望 agent 长期常驻，更推荐交给系统进程管理器托管：\n\n```bash\ntermpilot agent --foreground --relay wss://your-domain.com/ws\n```\n\n### 3. 手机完成配对\n\n在手机浏览器打开:\n\n- `http://your-domain.com:8787`\n- 或反向代理后的 `https://your-domain.com`\n\n输入电脑端打印出来的配对码，随后进入该设备的会话列表。\n\n### 4. 启动受管理会话\n\n如果你主要跑 Claude Code:\n\n```bash\ntermpilot claude code\n```\n\n如果你要跑其他托管命令:\n\n```bash\ntermpilot run -- opencode\n```\n\n如果你想先创建一条普通 shell 会话:\n\n```bash\ntermpilot create --name my-task --cwd /path/to/project\n```\n\n然后再显式接入它:\n\n```bash\ntermpilot list\ntermpilot attach --sid <sid>\n```\n\n如果你只记一条规则，记这个就够了:\n\n- `termpilot run -- <command>` 表示“围绕这个命令启动一条受管理会话”\n- `termpilot create` + `termpilot attach` 表示“先建一条普通 shell 会话，再按需回到它”\n\n## 本地开发测试流程\n\n如果你是在当前仓库里迭代开发，最好不要把本地开发运行和全局 npm 安装的 `termpilot`、以及默认的 `~/.termpilot` 状态目录混在一起。\n\n先把下面这段加到 `~/.zshrc`：\n\n```bash\ntpdev() {\n  local root=\"/Users/fengye/workspace/TermPilot\"\n  local home=\"/tmp/termpilot-local\"\n  local cmd=\"${1:-help}\"\n\n  if [ \"$#\" -gt 0 ]; then\n    shift\n  fi\n\n  case \"$cmd\" in\n    help|-h|--help)\n      cat <<'EOF'\ntpdev build\ntpdev reset\ntpdev fresh\ntpdev refresh\ntpdev relay ...\ntpdev agent ...\ntpdev claude code\ntpdev run -- <command>\nEOF\n      ;;\n    build)\n      (cd \"$root\" && pnpm build)\n      ;;\n    reset)\n      (cd \"$root\" && TERMPILOT_HOME=\"$home\" pnpm local:reset)\n      ;;\n    fresh|refresh)\n      (cd \"$root\" && pnpm build && TERMPILOT_HOME=\"$home\" pnpm local:reset)\n      ;;\n    *)\n      (cd \"$root\" && TERMPILOT_HOME=\"$home\" node dist/cli.js \"$cmd\" \"$@\")\n      ;;\n  esac\n}\n```\n\n然后重新加载 shell：\n\n```bash\nsource ~/.zshrc\n```\n\n之后就按这套本地专用链路跑：\n\n```bash\ntpdev fresh\ntpdev relay run\ntpdev agent --relay ws://127.0.0.1:8787/ws --pair\ntpdev claude code\n```\n\n如果你改了代码，推荐先跑 `tpdev fresh`，因为 `tpdev relay ...` 和 `tpdev agent ...` 走的仍然是已经构建好的 `dist/cli.js`。\n\n`tpdev refresh` 也可以用，它是 `tpdev fresh` 的别名。\n\n如果本地调试过程中 relay、agent、tmux 会话或者状态目录已经变乱了，可以直接一键重置：\n\n```bash\ntpdev reset\n```\n\n这条命令会停止 `/tmp/termpilot-local` 这套本地开发环境里的 agent 和 relay，清掉该状态目录里记录的 tmux 会话，并删除整个目录本身。\n\n这套方式的好处是：\n\n- 使用的是当前仓库构建出来的 CLI，而不是全局 npm 安装版本\n- 本地状态目录固定隔离在 `/tmp/termpilot-local`\n- 可以直接对着 `http://127.0.0.1:8787` 做浏览器测试，不用先发 npm 包\n\n如果你要启动别的托管命令，也可以直接：\n\n```bash\ntpdev run -- <command>\n```\n\n## CLI 参考\n\n```bash\ntermpilot relay\ntermpilot relay stop\ntermpilot relay run\n\ntermpilot agent\ntermpilot agent --pair\ntermpilot agent status\ntermpilot agent stop\n\ntermpilot pair\ntermpilot create --name my-task --cwd /path/to/project\ntermpilot list\ntermpilot attach --sid <sid>\ntermpilot kill --sid <sid>\ntermpilot grants\ntermpilot audit --limit 20\ntermpilot revoke --token <accessToken>\ntermpilot doctor\n\ntermpilot claude code\ntermpilot run -- <command>\n```\n\n## 配置\n\n默认本地状态目录:\n\n```text\n~/.termpilot\n```\n\n常见文件:\n\n- `config.json`: agent 保存的 relay 配置\n- `agent-runtime.json`: 后台 agent 运行状态\n- `relay-runtime.json`: 后台 relay 运行状态\n- `state.json`: 本地受管理会话状态\n- `device-key.json`: agent 本地设备密钥\n- `agent.log` / `relay.log`: 日志\n\n常用环境变量:\n\n- `TERMPILOT_HOME`\n- `TERMPILOT_RELAY_URL`\n- `TERMPILOT_DEVICE_ID`\n- `TERMPILOT_AGENT_TOKEN`\n- `TERMPILOT_RELAY_STORE`\n- `TERMPILOT_SQLITE_PATH`\n- `TERMPILOT_ORPHAN_WARNING_MS`\n- `TERMPILOT_MANAGED_SESSION_AUTOCLEANUP_MS`\n- `HOST`\n- `PORT`\n- `DATABASE_URL`\n- `TERMPILOT_PAIRING_TTL_MINUTES`\n\n托管命令自动治理默认值:\n\n- `TERMPILOT_ORPHAN_WARNING_MS`: detached 且无输出的预警阈值，默认 `3600000`（1 小时）\n- `TERMPILOT_MANAGED_SESSION_AUTOCLEANUP_MS`: detached 且无输出的自动清理阈值，默认 `43200000`（12 小时）\n\nrelay 存储默认值:\n\n- `TERMPILOT_RELAY_STORE`: 默认 `sqlite`，可显式设成 `memory`\n- `TERMPILOT_SQLITE_PATH`: SQLite 文件路径，默认 `~/.termpilot/relay.db`\n\n示例:\n\n```bash\nTERMPILOT_HOME=/data/termpilot termpilot agent\nTERMPILOT_RELAY_URL=wss://your-domain.com/ws termpilot agent\nHOST=0.0.0.0 PORT=8787 termpilot relay\n```\n\n## 部署说明\n\n如果只是快速试通:\n\n- 在一台可访问机器上直接运行 `termpilot relay`\n- 手机上打开 `http://your-ip:8787`\n- 让 agent 连接 `ws://your-ip:8787/ws`\n\n如果准备长期使用:\n\n- 在服务器上运行 `termpilot relay`\n- 前面放一个反向代理\n- 手机上使用 `https://your-domain.com`\n- agent 使用 `wss://your-domain.com/ws`\n- relay 元数据尽量放在 SQLite 或 PostgreSQL 上，而不是易失的内存存储\n\n最小 Caddy 示例:\n\n```caddyfile\nyour-domain.com {\n    reverse_proxy 127.0.0.1:8787\n}\n```\n\n如果你想继续看更细的部署、运维和排障文档，可以直接进入：\n\n- [部署指南](./docs/deployment-guide.md)\n- [Agent 运维](./docs/agent-operations.md)\n- [故障排查](./docs/troubleshooting.md)\n- [安全设计](./docs/security-design.md)\n\n### relay Docker 镜像\n\n直接使用已经发布好的 relay 镜像:\n\n```bash\ndocker pull fengye404/termpilot-relay:latest\n```\n\n使用持久化卷启动:\n\n```bash\ndocker run -d \\\n  --name termpilot-relay \\\n  -p 8787:8787 \\\n  -e TERMPILOT_AGENT_TOKEN=change-me \\\n  -v termpilot-relay-data:/var/lib/termpilot \\\n  fengye404/termpilot-relay:latest\n```\n\n容器内默认把 relay 元数据持久化到 `/var/lib/termpilot/relay.db`。如果你希望固定版本，可以改成 `fengye404/termpilot-relay:0.3.9` 这样的 tag。\n\n## 非目标\n\nTermPilot 明确不打算变成:\n\n- 远程桌面\n- 图形界面控制层\n- 任意现有终端标签页导入器\n- 完整终端日志归档系统\n- 通用型多租户运维平台\n\n如果一个任务希望在手机端持续可见、可控制，就应该从一开始运行在 TermPilot 管理的会话里。\n\n## 仓库结构\n\n这个仓库是一个 pnpm workspace monorepo:\n\n- [`src/cli.ts`](./src/cli.ts): 顶层 CLI 入口\n- [`agent/`](./agent): 桌面端 agent 与本地会话管理\n- [`relay/`](./relay): relay 服务端\n- [`app/`](./app): 移动端 Web UI\n- [`packages/protocol/`](./packages/protocol): 共享协议定义\n- [`docs/`](./docs): VitePress 文档站\n\n## 开发\n\n本地运行:\n\n```bash\npnpm install\npnpm dev:relay\npnpm dev:app\npnpm dev:agent\n```\n\n常用检查:\n\n```bash\npnpm typecheck\npnpm build\npnpm test:ui-smoke\npnpm check:stability\npnpm test:isolation\n```\n\n## 文档\n\n- [文档站](https://fengye404.top/TermPilot/)\n- [Why TermPilot](./docs/why-termpilot.md)\n- [快速开始](./docs/getting-started.md)\n- [CLI 参考](./docs/cli-reference.md)\n- [部署与运维指南](./docs/operations-guide.md)\n- [当前架构](./docs/architecture.md)\n- [协议说明](./docs/protocol.md)\n- [持续改进计划](./docs/roadmap.md)\n- [开发文档](./docs/development.md)\n- [技术选型记录（2026）](./docs/tech-selection-2026.md)\n","readmeFilename":"README.zh-CN.md"}