{"_id":"relay-ide","_rev":"671-2c8d21f582eae1599921e09c41646459","name":"relay-ide","dist-tags":{"latest":"0.1.0","rc":"0.1.1-rc.2","nightly":"0.1.1-nightly.20260908.927"},"versions":{"0.1.0":{"name":"relay-ide","version":"0.1.0","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"e5ec1598fe3116d329c63bebb6edc41e8787859b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0.tgz","fileCount":506,"integrity":"sha512-P5zVleigkglXPcUnTkXJcO7fei7134iysN4Pj4dVt7WtiBjeoxxkyzQ27D6tzgO/IRY8Be7M0vp6912hileB5w==","signatures":[{"sig":"MEYCIQC00QEvL7R08TJWhECgutN7+Wi1paXT1H64JYa5fL4vswIhAI4xj0aflXo8RcgBI8c1ksFwjYCLVdqfBaF0uXbkW+uf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12297776},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"fa77b778531d2f1b9787e814ab814d7a435d772d","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"tsc -p tsconfig.test.json && node --test --test-force-exit dist/test/*.test.js dist/test/**/*.test.js","build":"tsc && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","start":"tsc && vite build --config frontend/vite.config.ts && node dist/server/index.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"donovan-yohan","email":"donovanyohan@gmail.com"},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.8.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.1","globals":"^17.4.0","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0_1775201033581_0.9709074108529827","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260403.224":{"name":"relay-ide","version":"0.1.0-nightly.20260403.224","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260403.224","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"a4541304a0c212649727c4fdfb02508b1e7b4b39","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260403.224.tgz","fileCount":355,"integrity":"sha512-RkS5Xpm1uwGiG3wHft5Ejak2ev7KVKng0AkRNpeDTjtCDBLBR2uCYWAb2fP7l7h9SytRvsYy1vF7SF/bMmloMw==","signatures":[{"sig":"MEUCIQCg/ZcFp44ktvxQfSWhgB4eEe+V9z+GSyhteEJPvGqwMAIgEpByvvw01xoTAj+AZncpBJZ9hYgXzjlIN/Ku2hxpMKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260403.224","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11167141},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"def7f031ca9f820e6eb2c258a429bcb75cc277dc","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.9.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260403.224_1775232726685_0.23703487039868576","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260403.225":{"name":"relay-ide","version":"0.1.0-nightly.20260403.225","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260403.225","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"6ba8d93d935b2472a061199bf4e7495a26a0efb8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260403.225.tgz","fileCount":355,"integrity":"sha512-2QEy/OcsIbA7mNoojSSfX3PdUd78JRVmUEao3q/tGG+Txn5mCKqeYooT2HznDLRr1Ys0HRNIEmiBDFbDJhX/DQ==","signatures":[{"sig":"MEUCIQDKDxYvzM2FLHjxXqQDuN+OphGA53MxVAZaWMXcWE3yVwIgYWiaUnU/Fd2fohv7wm7yAHwFwfiIF2NtSwqrKLgdCDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260403.225","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11167175},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1741af14239a8a3f18ec3d4160657e841fa23cc8","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.9.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260403.225_1775233173389_0.8131370362576995","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260403.226":{"name":"relay-ide","version":"0.1.0-nightly.20260403.226","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260403.226","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"f4de1466ae13ebf5a471e1f63e4ff1a7da72c47e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260403.226.tgz","fileCount":355,"integrity":"sha512-13v5m0WVcCZQFG/VyQfM4IL01F3HoD63MM1fbd52OqRnL96pp1+MFJQRDDiV1iImNgk7VzmFdAH2llYY26Q+qw==","signatures":[{"sig":"MEQCIHjDod+S56vQt+NmnRAtPGTdOyMtHDn/V5zODGNOst1DAiA6ppON8UeBsfICIc7RQflZDVDwfUU/mSNuk2jYOTrgPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260403.226","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11188062},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3e7e73704df2ed07e7fdf0e6009de856e5a64d9b","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.9.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260403.226_1775237173459_0.33766398828354216","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260403.227":{"name":"relay-ide","version":"0.1.0-nightly.20260403.227","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260403.227","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"3d2008615a893f96d693d09a0563d29f6f22263f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260403.227.tgz","fileCount":355,"integrity":"sha512-HqDRHmheSNeCziIC4d+DCwX5eNMKbP3GnRtPUc2tMvHBrUaiD52dn2YHdINviW0wr0hE/FYYCd0SDaOt+uTfIw==","signatures":[{"sig":"MEYCIQCVxR1gAFSIzRVqZ8N1UsMQOERxe1SoJgmaHiTTxPgwKQIhAIoxVRDHWbaQC0aqjaTUjGJK+00PYiC/4iyWLbX9hRMm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260403.227","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11188332},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"44e0425f6d1e4faa8059d12cf1ef228ade0db48f","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.9.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260403.227_1775256367906_0.7157837014433877","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260403.228":{"name":"relay-ide","version":"0.1.0-nightly.20260403.228","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260403.228","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"e75ff49e78ccc1dad28678474e1135452e34e73c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260403.228.tgz","fileCount":355,"integrity":"sha512-WLMUkoPkf6Qp26Hf4chA7TEfQFF64qqLnBcnO3oEc8pW/QQkEbxNiGpf7ZzT1qgVZTKnGViN1wBjqEeg4EQPVw==","signatures":[{"sig":"MEQCIHokKYPFBIEeMoUNoeeOMfMA2bf3iCWFX7JDAr2wQeUrAiBaxSZ9t4s5D/ssOfy1YRhaUQbD1xsusMZImCkdL2EzEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260403.228","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11189219},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8f82a9305bb99de04f77084b20c2171e1266e7fc","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260403.228_1775256372391_0.23464624562075231","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260403.229":{"name":"relay-ide","version":"0.1.0-nightly.20260403.229","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260403.229","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"454e1d71981e5b85e3530b5ffb225c1e0534033f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260403.229.tgz","fileCount":355,"integrity":"sha512-H0B++tTgP6tiytvwg5HWSa9IQA08mXBaSUhY8rbqFstFdxjkE6wGCxu0hSTjzbwfhV6blcpzQFkVmS8+C2JUkw==","signatures":[{"sig":"MEUCIQCtWGz2I2jxEBBRk5AcXufSZxVmUdfwqQv35WP9prZ6dgIgMtnd020RYvWGZaJLueGlclzNE27E9I2a0E54uIQPups=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260403.229","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11189575},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ade5f897e70b9cd759cf8db70429149efab61a42","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260403.229_1775256631395_0.48263180022099683","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260403.230":{"name":"relay-ide","version":"0.1.0-nightly.20260403.230","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260403.230","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"5f07f0493d6a82143e500528c75a6ec5156fdca2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260403.230.tgz","fileCount":355,"integrity":"sha512-x4ybgtEybDYEQQ5nujte3TVgts9j6198rrUXY/Q0ZmvqHY4b5IN2LzHSIJL40KMXBXfegubd4bA5QPtUnpgFXw==","signatures":[{"sig":"MEUCIQDyzwVq54Za2LELEszO2L0/GCr7VeoSPZsdRwdRGHwqMQIgeiuPkwdkjM2ksTchuMt1Wl1SsLaqygkIGVC4rTgJAgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260403.230","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11189595},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"892e0e8c6271bb74bb72936e898372fd5c979f25","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260403.230_1775256676957_0.23086984624128126","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260403.231":{"name":"relay-ide","version":"0.1.0-nightly.20260403.231","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260403.231","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"a6483d9c1c6e972c074362460b2f41175cec1ddd","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260403.231.tgz","fileCount":355,"integrity":"sha512-xZp3zjMpX05qEGrstgHClcWU4MI6n4wml7yJZPwfFSekcfVASro/piQsI+0BTk3Ot3wLoVxw9Aqf7Wonl9YvUw==","signatures":[{"sig":"MEUCIQDp+0aTts3V1AFPXxpJ5ryTW9izFI4Dj29km+rqSt72pQIgKN4euUy5nlZnrarq+EsdeusNwVTOkPRfkjJF9oyyhGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260403.231","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11192797},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"dab0aa46d8b17d825e4dfd4befc3116f05ae3297","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260403.231_1775257408669_0.9003380960936818","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260404.232":{"name":"relay-ide","version":"0.1.0-nightly.20260404.232","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260404.232","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"76b9d7d18f3b36191badbef4a875719af42b2df9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260404.232.tgz","fileCount":355,"integrity":"sha512-Oy/mx8p1xHFK/fZ4Fe4co3rHb1mIOxvl+hasuumGsP7NlN9175NElQHolt0vJnq8P3cfe8gDMISAIlOFsmqLjA==","signatures":[{"sig":"MEUCID5+ZsTfz5hcS/Q/hZatRp7ncDagC53GvdMB8s7TPdYmAiEA9QjFwKMvfl2A3l4SWHrmRc/UsF0HyZrtkU9eXx+tdC0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260404.232","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11192181},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0cef7d4002ff1a4c919bb6bc43d90339fa698aad","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260404.232_1775266753190_0.3512502435456033","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260404.233":{"name":"relay-ide","version":"0.1.0-nightly.20260404.233","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260404.233","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"ffa256af79c794689b6d2690fab1f7a1f3245a5b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260404.233.tgz","fileCount":355,"integrity":"sha512-UjDEOSrjjTk39SLk9oyoKXbaeWoFwtK+dI1ofSYHKISJ2p8+V53qmAmGprlzeJxVTeFeLc297tfdz60Gk/Yffw==","signatures":[{"sig":"MEUCICRbTkBB6jAoGgbH6IJM7B7dKK5nwMJ2ZwQbcBDHvBGlAiEAxquUx79RdpM6PvA8PRvh4zb4bZU7JUOWNKYplkWrKTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260404.233","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11194758},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"db36efdb8de6de2e253a499daf4f828fd1d7bb41","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260404.233_1775279763991_0.20057023665143814","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260404.234":{"name":"relay-ide","version":"0.1.0-nightly.20260404.234","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260404.234","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"2e7de84cc6fc544989b0b97fe1c1c2972775d266","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260404.234.tgz","fileCount":355,"integrity":"sha512-KUVKdBdHhR7vvWOS8d/O9SsB+o+JpfzQ/LKqeKTdgDzZSjvCibgVsc6cn1JSd9DCsHmsJLqVa1jiuMEeK/SYQQ==","signatures":[{"sig":"MEYCIQDdpoU1kzWvLmMu8sibmZCvgPAVbuiB4szJpF3jIvpoxQIhAPK2+2CkEFD9xViPTcMIWsDO+WZf/SQYPOFwYiAuIGrW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260404.234","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11190150},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"85cb3800e0b0bc52f178a5a26738f0cf2ac29bfa","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260404.234_1775285790921_0.6416705790364501","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260404.235":{"name":"relay-ide","version":"0.1.0-nightly.20260404.235","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260404.235","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"b8246115055596c4f226936f41bc3f92f3f290b7","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260404.235.tgz","fileCount":355,"integrity":"sha512-u3vLH+cKF88cv5zuh73ufL7uv4FxfrIYoPHQclSqqKXQLxUzA4Wuqne1fu7Bz0eet8IfJMUd1oFiFdBzYrzePA==","signatures":[{"sig":"MEUCIQDSDU6eDvL5aSqueAV/eevN/Toea7MEWoTPvCXEFedAIQIgfcGREw86jpZawtoZ9IT/+FsoKOCjJwF+5XnJPMbAuZA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260404.235","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11190189},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d9b22efbf751fdf53fc3a0c9967729db39fb1de8","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260404.235_1775288793474_0.3523613394978031","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260404.236":{"name":"relay-ide","version":"0.1.0-nightly.20260404.236","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260404.236","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"29b56e382e4dfb65a5f655c6babc3954edd70d2e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260404.236.tgz","fileCount":355,"integrity":"sha512-XZfJlG41R5QX9weh2b39cM2hhEfModHtR+boiatruiIvN2bJrpOvCFREKUx/uSWZTVbrNpIVhCZgjYwjoFLXZw==","signatures":[{"sig":"MEQCIASLjcC6coa9V/s88XwEk5MfxuSF6IbNAbS7vHKUP7rnAiBTPsbnK5wensjS+qc5H0+svLEwV25DNmyMj/Orud6Zqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260404.236","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11190955},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"92c81bc90ec2937e85449c0cead0e7464668d9d2","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260404.236_1775289490147_0.3978697004617606","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260405.237":{"name":"relay-ide","version":"0.1.0-nightly.20260405.237","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260405.237","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"8fca279b716c029e3ea4232b4bb224bb20ca1f85","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260405.237.tgz","fileCount":355,"integrity":"sha512-5zYkb0KJIJfmTml6xc45GVQPMND4BEVdlD91qrk0yREKULyQcJD9f3yt7QJ1VYHugwG2jZy6Xau8T72M4RnQuA==","signatures":[{"sig":"MEUCIEUYudaR/fdZM/p+l+A71Ti3mvc3ts0f25elru2k1e5YAiEA0ehdDZQnemJZCc0KkepO3lWRHpQTZL3LmL+zSA2I5/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260405.237","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11105826},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f18c01902a5d1512d6d46d073675b302fca0f1ad","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260405.237_1775404467193_0.2806664564976302","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260405.238":{"name":"relay-ide","version":"0.1.0-nightly.20260405.238","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260405.238","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"a6d7b8dadd4d376e1da4329552ef69f1aca0e423","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260405.238.tgz","fileCount":355,"integrity":"sha512-QZVNXM9u/ZXRv5XdTbO2EWoLTUk7bpXwZ+B50ITZ3i9T6fdcF5vGNu5qo6EoKwg1lh6C85D+mBkmLwq4tQi/ug==","signatures":[{"sig":"MEQCIGvuJgAr0xd4/8ghwRSLlzJQuBhzzITTJGrLIq4R3+bRAiBt8oqVfdiCwxO00vbUFAmpEKuXIdbCq8WztlHDugLgvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260405.238","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11106740},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8d645ae55cf8298d52f34d71002ee3b8fc3b9203","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260405.238_1775405786809_0.8243293146126462","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260405.239":{"name":"relay-ide","version":"0.1.0-nightly.20260405.239","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260405.239","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"a4c3e79b826480360527c6754625706f9d5f34fc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260405.239.tgz","fileCount":355,"integrity":"sha512-G0XofXg4mpkwNixD+wI2sHHyULEks1gf+qowaNYCvYXZauBFq/2jgvbnA3ch+oDE6HOLIS2chqDrixJfkyIIpQ==","signatures":[{"sig":"MEYCIQC2IhIbATjReKWuFE1QJM6FYdvYgEkHwhuiOvAhk9HhxgIhANZddR0cQyadXpNkjPWc2UFjmgLUFop0LPiT509Tntwj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260405.239","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11106745},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3ccef621905dbac88038cec22cdd77941fa6f7a2","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260405.239_1775406438863_0.717683892035798","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260405.241":{"name":"relay-ide","version":"0.1.0-nightly.20260405.241","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260405.241","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"72763de64c1f69906f4048885e558cda68d0a484","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260405.241.tgz","fileCount":355,"integrity":"sha512-CvHp2viWlaP7yLmlLrUjnCopN3cP1uYofHxIX8DDy/7tI8wBKZ6Tm2gp7YXGRGPVwpSjF/47Ou5tlCfpQZgLXQ==","signatures":[{"sig":"MEYCIQCJus1NEHZX2SDGU5hytCApGD4pdk23kAgaCZa2G+mFOwIhAL4DY1JAr3IGtJg7JzYPgNkG4mgNOnyIlkZzojn9DC1J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260405.241","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11110547},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"84da778a95c34a1774a27a8d70b21db3aed736d5","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260405.241_1775407209754_0.9359311817098515","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260405.242":{"name":"relay-ide","version":"0.1.0-nightly.20260405.242","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260405.242","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"53afae200003063411408b4019af19ae91c096f1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260405.242.tgz","fileCount":355,"integrity":"sha512-iC44YxtxBVNR+16QeJm0xE4bFmCSNs1QOgf8FPTtLmrEx/SOtb+3hyqTMPXcW6CImEN8lbVAupCQXark3OD5Qw==","signatures":[{"sig":"MEUCIQDGnbykvipd1vvhgDSEjrW4PkRrZ8hXyiLaVW2LBLdpFgIgGifg/QivRoKDJ53ZnPVe/KiCVN/UYI2jbxWj47P9Srg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260405.242","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11110547},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1c3c0c7a8a9603a84bb0d0c40a44833871e8bed3","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260405.242_1775407380070_0.8888310356874731","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260405.243":{"name":"relay-ide","version":"0.1.0-nightly.20260405.243","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260405.243","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"faecfd064135f49f03ba8c6bf5058b96d1fb4228","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260405.243.tgz","fileCount":355,"integrity":"sha512-NQVDKPMQxcfF+WyOh1BLgESy1sIr1uLt16AB7EbC9/aGZ9ourzrBQqbUKTSd54Rx6RjRY/IXtDoKbJcnubwbYQ==","signatures":[{"sig":"MEUCIBfpOhgqZlbsvzDu8dqpvFyz1BMNt3OSvwAj3bar4gcUAiEAhuK2FcZr2o5vF5PL1iZe2tHZqBVsZTUIhPa8CLdVPC0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260405.243","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11110753},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"33c23d9da0ad64c3cb9927e1a18af2e1efa050d3","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260405.243_1775407429225_0.4704798926715361","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260405.244":{"name":"relay-ide","version":"0.1.0-nightly.20260405.244","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260405.244","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"b8d956978cd4fda19a38c2618740576203f3c8b4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260405.244.tgz","fileCount":355,"integrity":"sha512-tJ/g/wP/kOtxgQyjv2kFlh8wnoAFX3kf30weZRHsQhcyykw0bf1xEqbZgF3OaUwucd6byalT74J3CYqnVxGbMw==","signatures":[{"sig":"MEUCIEk7eewFhLcP+3o4gfD0faDd/s3pgkItxJf/nWvGZ26uAiEAtQtWSLqDd634ErW7TdX6kRGGt/86VPjin5iQWw3zS2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260405.244","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11111540},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a2180526a9fd6064c5f24507f423db7bd822da2e","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260405.244_1775409387713_0.7030486527753688","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260405.245":{"name":"relay-ide","version":"0.1.0-nightly.20260405.245","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260405.245","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"4f076669b650db59cb344a416ef372bf4122c081","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260405.245.tgz","fileCount":355,"integrity":"sha512-md7dURF0ClrfuSSfj2N6hFuIobP3r/zVgMionqZ/JM+mBK1nHlCo7pSu7XYhQiPvGg0v0LThK0xNDC/jbWxomg==","signatures":[{"sig":"MEQCIAUfy4PY4/1lMW+JreApmu1bHktJsnVQN0MiB2ICI2U9AiBttSvIYQNj7up+BLJ8DlJYM6Rs+6IwVSGJk7zMmnMy3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260405.245","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11111676},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"dc1341267ad3639e91b4b6e80a5b81d9e907410d","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260405.245_1775418052449_0.7665583725297398","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.249":{"name":"relay-ide","version":"0.1.0-nightly.20260406.249","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.249","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"284914a68ae9c48161327bc45469bcf06b33fd45","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.249.tgz","fileCount":355,"integrity":"sha512-EYPcW495SdRIjqARs5HLdiBBmImxbyTubscB4SH/Y7a+aEfyHehwXBOKBlMO4Uv8thE8easBf9mJZ3KK9drnoA==","signatures":[{"sig":"MEUCIQCzEGwoUvxPyJ2ydxFfZ0weCRIf1nfUzQWGYtkMWKn5UQIgcB5fmouxDBZ6NT6e8H3A7cNyjAJeNYJlLQEA0HIPYwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.249","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11198657},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0627daac688ecac7b081aaea9f12c337c7155b6f","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.249_1775442297051_0.3700583563547757","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.250":{"name":"relay-ide","version":"0.1.0-nightly.20260406.250","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.250","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"cd36820fdc331373e49de9e5d11fcd832a147f65","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.250.tgz","fileCount":355,"integrity":"sha512-zwiUqlgVcuzufzqwFLeXBu+oLwzaGgVjCjp6jFDyuY8ccuHGKcgkVcG+/omLPFIwNGXnB7iMTkMNM5xUuzbLdw==","signatures":[{"sig":"MEUCIQDmGbeBPDwj+1S2Ium70Lgia7mOn7Y6jF5tHm45op0XlAIgI3clG/S4+w6nvlFNFcG5axLTiXHrn3P+T2Tah/5c7zo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.250","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11199697},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"51e8b626744de3290bf5b30bd990bdedf73d488e","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.250_1775442375183_0.7093317862588111","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.251":{"name":"relay-ide","version":"0.1.0-nightly.20260406.251","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.251","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"8e6a615da938f52ca79f81057b21df03f9ff0f73","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.251.tgz","fileCount":355,"integrity":"sha512-zwM99sz0DyfcNFxWkyGdwpl/vk4+SRKQz5RmZEkSzMbGn//JYAQcXOu//7LngIQsGGEvWZQRwjFD60j3VyJo5A==","signatures":[{"sig":"MEUCIQDPvJjDfZKoKOzXlnwUQSFRlHd7HFwfOcsMEwgPznZlcwIgKBgkgiRerD+rto7M9ZXEFVdWnx1IOXwrPMVQpKLlXx8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.251","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11197105},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5db490d045deb3e75d67dfb84e54d77665dd20fb","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.251_1775451730966_0.9610750426038361","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.252":{"name":"relay-ide","version":"0.1.0-nightly.20260406.252","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.252","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"d5f18823015e1b9b5e9f1197a9b18918d98a66a4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.252.tgz","fileCount":357,"integrity":"sha512-EeXE6olWMFe9kcMOZxuRmuXxpks2LlSTOGghvTRB5BVTzHfaS95wcEjy2C1VdN6wakiQfvJSjxUbK38cpWOMfw==","signatures":[{"sig":"MEUCIQC3aHl4fQii4edUcSHK8/Cl5vi7Q8XhcZi5Q3/++3cAOQIgOV/rOm4tQ8wDzq1ZEy3lcQ+0+kDuq1lp9hMCzEFTQXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.252","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11202061},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"17f00eb03b6b061437576b0e20407ed6ba6a150d","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.252_1775454202471_0.3824372558192084","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.253":{"name":"relay-ide","version":"0.1.0-nightly.20260406.253","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.253","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"ae535cdecbd2899e66454b1f01c14547ee73e1c2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.253.tgz","fileCount":357,"integrity":"sha512-BNnt28QKzXJT6igzVoARaRAaP/XheQ3vLwtH8x8O+VYB9GlLYvhefttBVI7EubACeV/eOvgR8ha0Wl0OBFuPSQ==","signatures":[{"sig":"MEQCICpQbqPSSWETaVI7AgPJIEeUNfhEwyKgfJgmo6gFyh2eAiAx4snrucQjGI0B/ArnpaHRx+MBMPxiR8wXEjuaVOCmvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.253","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11209080},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b55b2a78523fbf4be897acbf293d783f7acab18e","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.253_1775454877748_0.3807324771685352","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.254":{"name":"relay-ide","version":"0.1.0-nightly.20260406.254","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.254","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"00be604de08b67056dd487db433b7a5f477b711e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.254.tgz","fileCount":357,"integrity":"sha512-ldw8oKDAOZQP+OzTFRPGM/lUBRtKiooDtnBOb4XI8kjn0AebiUQVbbyXi2NlfJZoSXJd6ch3RCGzXK5d18/dSw==","signatures":[{"sig":"MEUCICwNguX3ff1wAcP8afo/4rOYohnn1p9rR91KT4AtHomOAiEAthDRlClg2w4rBrsLbadoczCMAUwPalC5SFrBZw2ltyo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.254","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11210222},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b0c2f3561ccacea79195faaaf88fab625c4eae25","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.254_1775455045942_0.07604054318074893","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.255":{"name":"relay-ide","version":"0.1.0-nightly.20260406.255","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.255","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"12e296f21ea086a90e1496a2fb47cebe78017b3c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.255.tgz","fileCount":357,"integrity":"sha512-MkhA6124I4Pq0o+n054uhLaoknU6Vt2N382XKR2xupGxp1v7Qoz9AcriLrZBAdH2z4W7a7kP0C2mcfI7WDP8bQ==","signatures":[{"sig":"MEUCIFi5rd6WICZ1twet032cMPaiQE5HItxfwxC3MO936OOrAiEAjZV3ZLfTNPNU8RRqn0+7kPajvKliLUUoIWEZy+s32lA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.255","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11211186},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9e6c33aaf629978ea8b1758361e22cd40be2bd39","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.255_1775456218328_0.07595430637386658","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.256":{"name":"relay-ide","version":"0.1.0-nightly.20260406.256","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.256","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"e5eb91a498dde8c26f0baddad93d1f5c0cd7743f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.256.tgz","fileCount":357,"integrity":"sha512-o5y73U3xtY0j+R0zyJPFOaS5Gu0c92qHJI859CJitr5OAar97Lw07h0RLBRT0Ea4Db1ySkGL34uKoDJEK8T09A==","signatures":[{"sig":"MEYCIQDKc1jf//lU3psns3kOGg0K4afxLTGwswhRsw8EcXxpzwIhAP7IxUpN5Vmx6X63S7igC6yH8WYMkgfBvc6zjlyZKGOc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.256","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11211186},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e3c3260b0704ca8a7b2273def245040ae5b614f7","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.256_1775456514632_0.8471013341709526","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.257":{"name":"relay-ide","version":"0.1.0-nightly.20260406.257","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.257","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"c35058bdb59528071e9c3028008b5e20ae78fa69","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.257.tgz","fileCount":357,"integrity":"sha512-hbCt6a+y3g3ijLSHqOrvGY58pGGa0mj6jLBGMHiPO8VPzVG+xFAvxZEZhuf+KbGndOMOuDQcSw5EN6O6gBAFyQ==","signatures":[{"sig":"MEUCIE2S9iC0DE6YhfeVg7bUDeNV4BaB+K5apLGABQFHNjBDAiEAjBTBcuUZQfkG4u9nLtSWlteo0iG7nHKkroFB9S9rY4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.257","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11211256},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"87f4a6e7c443bd37c05fd39b89a0035d84f9e159","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.257_1775457852696_0.9632546968204616","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.258":{"name":"relay-ide","version":"0.1.0-nightly.20260406.258","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.258","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"79543415591d8735c8c38761345d5874fc30609c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.258.tgz","fileCount":357,"integrity":"sha512-jbF09lfcO0XXNtZcu9pCZx6wU9oNdazaEAYkaYul8P7M3nXONHK8iwyxyZuKR64DAZRF+e8VxVxyrWsEhFJ6DQ==","signatures":[{"sig":"MEUCIQCCYXVJTUtTKuZDjH1feLXWXBy2FuV1p9ZUj87FGqV/bQIgJl/gTB46Rd8YIwh7Q19a2X1HSOHPOby3EiThthIl87A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.258","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11211432},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5a75d173d27be756d8c268d65889190ac59ec798","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","playwright":"^1.58.2","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.258_1775458255245_0.5894390283282096","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.259":{"name":"relay-ide","version":"0.1.0-nightly.20260406.259","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.259","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"0562e1bc40b88d4ee2012aecb59e60fee7324af5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.259.tgz","fileCount":357,"integrity":"sha512-Ed6vfUtCtQBvInNQFdIMDpNwtrqP7QBoCCpzGviBVVYvfbM10V/xetBZRPr+kPFzYVZRdSXyxeSD/xG1RrwQBA==","signatures":[{"sig":"MEYCIQC/IM28pxoWlJvA20xuqn/o6vj43g7ZvxtScXn+Sa20WgIhAMYEyEPybOz3/oUXEmGhhEjmG3Eh+NAZHS6V/OgFyEDg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.259","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11211492},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"320d7b958ac272d632d3aa6e6dfd36a432e9ce22","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.259_1775481361658_0.10071109322055061","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.260":{"name":"relay-ide","version":"0.1.0-nightly.20260406.260","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.260","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"ce22240cc65696c42f06ee47ac3f33ac0fe14f48","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.260.tgz","fileCount":357,"integrity":"sha512-sKWjd1VsPGWCuL0JAd+gZRdoHBLEAQsZLsm3r7MoXRUrc+QtOoVTxG8n+fEbclJ5PtnqhwMqKHvNsUvzLydZvA==","signatures":[{"sig":"MEQCICJ5vaUQZpR2nz6ukoczr8HG7GEalFIKn7+jHtDAH/19AiBRtIrFOT7bwq8pV+QneGgPeTyJxmaUxAOC2LkBfOv71g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.260","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11210753},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d81d94b0d5a298ceec4be4dd8077a2fd25d2d778","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.260_1775483757719_0.7137866148619569","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.261":{"name":"relay-ide","version":"0.1.0-nightly.20260406.261","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.261","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"d9826544349c3a641cd5a8f26ffd952904ab7bc1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.261.tgz","fileCount":357,"integrity":"sha512-5n379gPje3Tfb9qNU6dDbFpF39y/plRExxmWjcSVpFNxpngpPTR449RjR1PFzNCTvjYAjjgKpFl7CDR79e1mCQ==","signatures":[{"sig":"MEUCIQDOIkdTAqghCn2eyz5ByEU7y4sKZTcJe6WIydRS32Lt9QIgPzJKgPDaPbSGiaX/ilLn7gothihnddZXKNrr2Y7cnH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.261","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11211730},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"71c148d382c4ebb13197240a2b68a9541b67ea75","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.261_1775488579637_0.13513620570265372","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.262":{"name":"relay-ide","version":"0.1.0-nightly.20260406.262","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.262","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"6b4f9342c0465bb06bb3ac542e3958bda9dad44f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.262.tgz","fileCount":357,"integrity":"sha512-om3okeSrVnzmwCJOYraLjv1bkx1ePeCkLesb2QJ07bj6UOWX+lzVbcgKe3B+Q3InO1/bIqiz0RaphKI6FraUeg==","signatures":[{"sig":"MEUCID0IXX6VEd1jWrU9inm4e7XMicrBaOImy9XOC9/AOQxvAiEAqVt2PtuQW4pDBk+gNFAv3BA24GJpVfiU2xPgdJvcTA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.262","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11212537},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"47581c0e1b75d125ffb1bb8c30dca55faf06d9e2","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.262_1775494124845_0.38469036180415617","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.263":{"name":"relay-ide","version":"0.1.0-nightly.20260406.263","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.263","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"29cbe5a574a6a680d3d5d3bde1015125f2731724","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.263.tgz","fileCount":357,"integrity":"sha512-JmgyVtgZFvDJglVwbXOmv7IGwMEqsKF+uJ3GJoHGUE9GfxF7X201+Qv8a+BgcKjq5afeBwZ6yHDEpC7oC5dD4w==","signatures":[{"sig":"MEQCIC0yJO5nMYPqJT5qkCtk0aT15Gv3ulr5+fPlbvfjCcLlAiBfI7bjAVZA9rCZnDsjLLZVP897QajAynJE/BcRhcnc5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.263","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11212537},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2d88578c612190000413764bc39155d5b133c260","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.263_1775494170379_0.12598808529462602","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.264":{"name":"relay-ide","version":"0.1.0-nightly.20260406.264","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.264","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"2e09fa3efff8e84f370301cac7c9ab392e00baf1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.264.tgz","fileCount":357,"integrity":"sha512-BT50nfMyWBVu81DscNnctyztvciSpfGNQhchI+DFwChexS/D++cPgufqHtIo4rds2fxsSrlEHoqfWlTc1y1lSw==","signatures":[{"sig":"MEUCIEcJLjYYDRtS7biIdDhAJqopg1DwsMvqzxHOSmU+riSZAiEA3XjN07hJA7fUkPlqm7tBDf95FE1YzX6O9v97vVrBihA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.264","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11212537},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c6ba6edce361d8f62f5f5bc151e4dac5b839a9e8","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.264_1775497224995_0.24758681509063774","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.265":{"name":"relay-ide","version":"0.1.0-nightly.20260406.265","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.265","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"a07990416b8b2aaa5ad943fc26296322d81d6143","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.265.tgz","fileCount":357,"integrity":"sha512-UyVoElrYCbY8v2h4V2bnIf6yUK0P7qxN6XGJGUDGBc+fqrfgdP9Qi/pt52xCRz6NjV0HNfhuPjtZA8yRnDNrkw==","signatures":[{"sig":"MEYCIQC3u2SnGTMXQjIDbF90Kw3FxcC1gbWu29cw0WnyMyaNcwIhAL8H4NE1IM3U6bt31XPEiQtZautgRaeRLU6t/+L/nuu7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.265","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11212537},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1b2e10e172b3a56a693ba13b6d25c59311e02d9f","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.265_1775513712022_0.2961044836122553","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.266":{"name":"relay-ide","version":"0.1.0-nightly.20260406.266","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.266","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"e62f32638de84342a9c21dd6670b3d1c81591c68","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.266.tgz","fileCount":357,"integrity":"sha512-gRhr+llkLrPzV/75pf7wbh7xgsk8vyOdsNMWnAVMaYFzeCMVRQlAczdS6M71NCqAht7riQBlARkWiqRrp1N8og==","signatures":[{"sig":"MEUCIGCzpyma5JAE3pVDw4TKawZW90ieUCEcjBB1tQc0J6a1AiEAnlqCnDavyZ5s8F74HWF2Yg5RWAonrxRCOpjC3ZNdNrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.266","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11260117},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f88efd782709184c18f5c7eb841a79bab02d3461","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.266_1775513836524_0.02646059946967827","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.267":{"name":"relay-ide","version":"0.1.0-nightly.20260406.267","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.267","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"48dcc80f61c6dca66ae801b628745d35624da5b4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.267.tgz","fileCount":357,"integrity":"sha512-nLGMv/4JnyV6BRhcpMlLNAZ0jK4ysh4wssMuHd1f5DcmIAktVEOUWohRDvplrNye9rFG0Kl1dImFjMNJhDMx9w==","signatures":[{"sig":"MEQCIAsvnpRnc9+OQQQajPkuziaMLg9kqP1Xw9ANY+8ewBl9AiAtvzSTQm70aY4+1HgCsjdXQJStQVn20QuNwc4lAwLUlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.267","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11260117},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c17dacc15d5143b51068a262d3eba5783c74c971","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.267_1775516898100_0.7173145868513002","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.268":{"name":"relay-ide","version":"0.1.0-nightly.20260406.268","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.268","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"77069fd4ac3377c09dd39ae7a230532ab4df5c42","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.268.tgz","fileCount":357,"integrity":"sha512-6Yxl2xgO8yvRRlZl/v0mtbYMohyGKKGTCmi6uWmI6P+ICpcGOgCFgndxOQ3jxH8ufmBIrn0hYz7p9RvlFqsBdg==","signatures":[{"sig":"MEUCIB8I4YAcUU4z1/SHoBhGybxLUwU5LnQXfFSwEFqcw9nuAiEAlHXhfQQ0hhQ0xf9Km9QRVArGwaRfTYd2SJzzv/ykBwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.268","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11260117},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4bb6087fe1aa300e15705770e6514b67b8ca7a0a","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.268_1775518141323_0.9375287362627125","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260406.269":{"name":"relay-ide","version":"0.1.0-nightly.20260406.269","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260406.269","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"15815b8189d8cf8a397c56f1ff92f546f0c9935c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260406.269.tgz","fileCount":357,"integrity":"sha512-gdaZGKh1YkxC593yqKirKpVhyWp+O+YnhwxgeNwrG3R2dQWAI18V4m5oojyYXDEK1yKfotpgCN4SR2wPQkvnDg==","signatures":[{"sig":"MEQCIEKjULVMLlQGaU3NkB1/5ieMTLL1xt9sePZ2v1ZJdAgPAiBLp7j2vd5SCvwFx0vcRkQtAM5fVs0g4i3l2ktQRDlBqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260406.269","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11263293},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ed0cfb5f6c6cc3f49d7018c34591893fe3bd7b4c","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260406.269_1775519365549_0.2558672761867047","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260407.270":{"name":"relay-ide","version":"0.1.0-nightly.20260407.270","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260407.270","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"05124a40700412a7cac9b09c1600dde2e754500e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260407.270.tgz","fileCount":357,"integrity":"sha512-W+lUe8eA3rUIyDXDMorZ0+WLsDZCA3NsnDYVZcHAfdv/OVrHhwhHAxGPiid4UoOQxIdsktRR06ugkjKsfZctfg==","signatures":[{"sig":"MEYCIQDLM/cmNMgUnCBBVvFgci2rICbJ8DUSltuvre4JBWD+2wIhAJbCYc+QNsKkzPmv1tNNVIQPbGYkk0KsgG8SVG2iN8SJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260407.270","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11263301},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1609388e44aee182fac72f4c0f1f601ce6c08064","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260407.270_1775521186252_0.2962241005342092","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260407.271":{"name":"relay-ide","version":"0.1.0-nightly.20260407.271","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260407.271","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"c449f60d42859b57ba1d19e7f053e5541ab8ef5c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260407.271.tgz","fileCount":357,"integrity":"sha512-ITyJ1lLq1jiOdTUG5qrCsPNjVX8QFlO12HdOi1QgpnznWIAwgyqu5GmjU29IrZrmRBTU+cUrRMeBkmISVjvtxQ==","signatures":[{"sig":"MEQCIGPRBSl4qV5rh9aw0IPFay0r4sn6TkZz9jTjMW1Mw/NwAiBLde7QLa2+KLdHeMSBntMKow+dgBOtd06yNNbBbCSnsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260407.271","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11264576},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4c3f3c73070b0be2d39968f22b45c55253e1e114","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260407.271_1775521371834_0.9199591576840547","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260407.272":{"name":"relay-ide","version":"0.1.0-nightly.20260407.272","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260407.272","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"151a5a2e8c8b4c5594f32da81f8dace3c64a08c1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260407.272.tgz","fileCount":357,"integrity":"sha512-X7HGsZbM12IarlEm44MX1kY+9IulgyKiyOrQhXWJD8LAO5UT25kwlqoZjMQKGvfm5JWJXWO89wgNQFPepZkL6g==","signatures":[{"sig":"MEUCIQD+wwaSB77wHEKyPvEU1rwkOHUVZAyNmZhZjVBGG3fIGAIgHrUEOEhHxG2ung38XObMl73TZSxJTSVVvoKbyDgl5Fg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260407.272","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11266387},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e055e3a5175f3836fcc3dab697b38f87834774fb","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260407.272_1775521394878_0.35334054520677016","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260407.273":{"name":"relay-ide","version":"0.1.0-nightly.20260407.273","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260407.273","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"dc92398ef2e98fa6645b8984a14103946b74eed0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260407.273.tgz","fileCount":357,"integrity":"sha512-xPe1mqj9H6jbwCFrBrlrmVaWrh54jGC4WwIT1Lz1JnyJ63JelShUyupe/WPRoJ/aBkZNFbnVsBo8xlcGQ7sGBA==","signatures":[{"sig":"MEQCIF5ZRDpBIf9UxTPp7EE6KwCC/r9mUO+lB3C31ncaanKhAiAIxCBlmadyYgHPhFAegZkfh1c2HZQUDgnlVWswBgtHEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260407.273","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11270134},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cf331daedad1fc9c88d0801a4ef31ddd7f335066","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260407.273_1775524371568_0.564459953999062","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260407.274":{"name":"relay-ide","version":"0.1.0-nightly.20260407.274","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260407.274","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"8da8d2578b29424b20e9fae6587894299bf13dc5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260407.274.tgz","fileCount":358,"integrity":"sha512-wuuy92XM5rI7NLMuE+OLYJjeQV/5U6Jgx/o3p4hBIu3A7HcB7SokXerZS63QqHs6t+IS22fHt767xLeFEN9QJg==","signatures":[{"sig":"MEUCIQCn2Zjtvkl3O6HZ8VMP9l9hnxgBjWcHGZ6u1/YBYGYYKgIgGRg74oayXtfJCjKVKBZBATD0aY0N5eTQAfduVs7Irhk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260407.274","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11279863},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f9205821659ea03a37fae7a0eabc4253e9fe78d2","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260407.274_1775526262755_0.13417545485700333","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260407.275":{"name":"relay-ide","version":"0.1.0-nightly.20260407.275","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260407.275","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"cde542e2d3736c07bf7c9e3397c8a0d253d9682e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260407.275.tgz","fileCount":359,"integrity":"sha512-yeuEYLr3QbsqL0WnZfiViPUPdOY4yHyWCyKt1MsckPsCFuGaE/M8nyqd9sH5Kqv0sdO5mdTIZ4JqwYaLvDaqWw==","signatures":[{"sig":"MEQCIDwi1eLcvLsRcc85zc4kauXd4tdkmNxrJCtosJWFiSFJAiAxuAo5OHGxjfro5M7nFkVbVuHLHDZzmSwC5EAni+UgMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260407.275","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11287874},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1ba33af19b46d0a9ca906bfbe1238ec8f9f236ab","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260407.275_1775528377104_0.497465778281474","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260407.276":{"name":"relay-ide","version":"0.1.0-nightly.20260407.276","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260407.276","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"dfb2bd28c5332fc6be1a9664b93b1e7d4cff65cb","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260407.276.tgz","fileCount":359,"integrity":"sha512-XlhM2g6qHFMi6HQkTIOhfno2C1zYA/YLpbk8rqwYClIawHpDcrV1nIwsBUdO4B6b7DU6ese6EJ7DJ2MclPKwzg==","signatures":[{"sig":"MEUCIQDqIlI5H//mjIIR3IS5Ogmew9vJXELc/TVxa5NtbOtMSAIgTYAS3uYPW2L1lZJOuC/3tFUE/dtfHXX0D4Ax6dpEs9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260407.276","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11288140},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ecb839ffd0a654e4ebc58ad68628a23eb1d3f709","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260407.276_1775536793265_0.29418100940073","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260407.277":{"name":"relay-ide","version":"0.1.0-nightly.20260407.277","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260407.277","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"25695870836c22cad73fa44587e8f4753edae17b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260407.277.tgz","fileCount":359,"integrity":"sha512-vpPDm2khEkZA9y16lm94bfoioMGmXyx6fUxnA9PfKx80b1+myIWO6ha7K0v9oBhtLmBDTXTxu5OUHUxKjsHpXQ==","signatures":[{"sig":"MEUCIDTCw3eNWk6U88lu0KJ6UKmsJOZ+K248ITc66AGaD4t6AiEAnJO1pcPYnPuFe89jRMkh/gUgapVdVPzSBAwUlOQp9o8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260407.277","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11288140},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b3fefc383f2de7529d0bb4eaeceba82608d0b6ba","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260407.277_1775570340989_0.11458291805249554","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260408.278":{"name":"relay-ide","version":"0.1.0-nightly.20260408.278","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260408.278","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"2e36dd58b4900b4f9e963ae882ee45b9bd36acf6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260408.278.tgz","fileCount":361,"integrity":"sha512-3cFymE3x1XGbjMvOGbNlU1qTh3SBKhWs+EfCPWUWpQAodHP9eioyCOKuR3XxYhvIDhGOWhgeeSEoLIJ1ni0P4g==","signatures":[{"sig":"MEQCIGiPIGtF4s2RfhAy0l+ciiFw0niqyNRjv9LROTvO9ldwAiAjMyBT+2Z/CHjYuFgx7Ycb9KTCM4tmCMicCSS/1TJRwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260408.278","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11294339},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"942d21d75c27ae3d4ff07b9dd2f1677a09d1c682","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260408.278_1775685037565_0.29440389643270515","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260409.279":{"name":"relay-ide","version":"0.1.0-nightly.20260409.279","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260409.279","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"31b0ea5925acfcad9ccb6594caa5fa73946c6a69","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260409.279.tgz","fileCount":369,"integrity":"sha512-+A5L/h7/2tcFyvmxuxoEPK/PEbGxCTSwoSSYE5hpr3dXPUjV92GfiIi4+gMYZs6fNrIGSTSGyomYM5RzSu0T2Q==","signatures":[{"sig":"MEYCIQDzHxNy17PZEmN6yADWRmL/a9QUrwv9ns6wBOOCXyQ6sQIhAKmlY9/IQpmv67xIhnCHr4uj1x393+3WhTJJSCJuByVc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260409.279","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11355482},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cce8741be6c1d9a4c1a2e3a4cd79cdfa68711dc6","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"^6.0.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260409.279_1775718243853_0.39267430143935944","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260409.280":{"name":"relay-ide","version":"0.1.0-nightly.20260409.280","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260409.280","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"2d7a34f8cb55ecbfb7cd66fad7f36d26d704c6be","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260409.280.tgz","fileCount":369,"integrity":"sha512-aNF8sNoB87kgJkTa5Mrw4W/gI/VkuhHuNeydHngpU+7qqShwyUlYh2OACcEKOTooOCpo9ICPQCNp0/+bb8LRqg==","signatures":[{"sig":"MEQCIBLgEfAK72nyJdtzM3vw8INgsYGFZO0C/pFEckyu94huAiBALzrvMnZ2hlAP8JNGmPMKcr+E8xf39lBg8LfB8n2uVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260409.280","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11610903},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ae620c5a1f9bc19c36d660c47fbdba4ed5ff6024","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260409.280_1775745866307_0.65255815005748","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260409.281":{"name":"relay-ide","version":"0.1.0-nightly.20260409.281","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260409.281","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"1e4602af1d2ee05e90368fe3f0b63537ddafbd6a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260409.281.tgz","fileCount":369,"integrity":"sha512-nbL52SxVHD3ws1J+ha6imYpguG3Y5Axu/HDZfQk0P+Umg4tyV/CdK/lnILaYtu+u39wnJDOXZ6YDFfuQuh7XfA==","signatures":[{"sig":"MEQCIHnhXo0/WxdbBt42iLlo3VsfJOxKVFoJAKRwtbHz6Zn0AiBNd45O4I7d+xMryowrxGkTK57GxqN9rmDv44c+ziPTJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260409.281","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11611051},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ef60f162e65c23e1edba63f99801a117e568d680","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260409.281_1775765013733_0.7371276464871783","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260409.282":{"name":"relay-ide","version":"0.1.0-nightly.20260409.282","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260409.282","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"26414a65443ffeb2f116a09bdab4924072a79cc6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260409.282.tgz","fileCount":369,"integrity":"sha512-Q3XtnQcMasyGMjkYCj/3CnMh1ECgLcFaU+aoBFJUOq5C6eEyntS/riPTnMwEEtO0b97tXyoqX6MznND7DvfQNQ==","signatures":[{"sig":"MEUCIFz/Wp7chvmFp8QS5Uw1ZDCz80+tOQAt1rP765Td5M6jAiEAz1Prj/ehRs+3spGA9iQ5oJ6u70ZLgF4ZGV20C6bdXKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260409.282","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11612354},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7aa24a74118b7ff15772308d00bb1e0e80b5eef2","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260409.282_1775766538260_0.44357455591269535","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260410.283":{"name":"relay-ide","version":"0.1.0-nightly.20260410.283","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260410.283","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"6dae5c67ad634974794049abcb00927855672305","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260410.283.tgz","fileCount":369,"integrity":"sha512-MCgIsJdxeb0LJyGztu3Awp5bS97wprDWepDLMS3pCY8ARl7seG4U36OeZMxjKWR5hpeRh9pafP1F8sv2eqB4Pg==","signatures":[{"sig":"MEYCIQDettN/jDdFhLatUMX0zyUDEq7uicvjPChOipAbuLXvTQIhAIbsElTZ97Unt1xmz7piQB06j2eD9AxmbS7yLz1/MYS2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260410.283","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11619708},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cffa45747040e0b8febaba717ae608ce43f7a6e9","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260410.283_1775785677206_0.32010631090722064","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260410.284":{"name":"relay-ide","version":"0.1.0-nightly.20260410.284","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260410.284","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"2958938262e32638ade5ba51dabf527a6d2b204d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260410.284.tgz","fileCount":369,"integrity":"sha512-+j33mULoykXEl3KWKxsLs/zTJ7GbLGrqPaJfObR9AFcQi3XeuNTukF0cZWhrAwhg5UH0Mi/UNXTOj0hPuFrxQA==","signatures":[{"sig":"MEYCIQCW1h4yh85uESKIhJR7Oa+KixPo+CpDIoXIffUCAmeK8wIhAPNvVM0hCG1L9G3n45r1wbTyAh9INdQe7QY15tpPhFKC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260410.284","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11619708},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a70b116b38d6e8ff8a96603baa1f0e6541a7946f","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260410.284_1775790603732_0.08877520020887131","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260410.285":{"name":"relay-ide","version":"0.1.0-nightly.20260410.285","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260410.285","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"ae232719b45cfd2e65dba8e0e6ca9ede40d5f4f9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260410.285.tgz","fileCount":369,"integrity":"sha512-pv05TpLOanpmdF5Mm96d/u7gZDJ5LQevIqwwE4NThitJhH8ZD4n4MmHSgcro5JBEDVyG3xsmVeTa+J++uvUmvA==","signatures":[{"sig":"MEQCIGDp+yfOexUXKIgs/+W2HKW7eRbBmS+HhKpblp8IRN5lAiB/VYAmuMd+/8oWRnF6hvkPHNQhDJ5jiVEO8Wb30Enb9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260410.285","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11620537},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b8f97dc34cbab47038a2aff3e2f4da0856e1cbd3","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260410.285_1775792765369_0.5812842274363308","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260412.286":{"name":"relay-ide","version":"0.1.0-nightly.20260412.286","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260412.286","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"81ee0c395a84b608374c21d5d0bfd21266a0aac0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260412.286.tgz","fileCount":370,"integrity":"sha512-P86Ur2cuyny2ohoUcse91l0NB6AEt1VlK2WUkCoeuuaQG3OQRd+LMl9xjQ4W6opo3R/I0PgQs3C0XZuSzeecWA==","signatures":[{"sig":"MEQCIEy1PWbvksAJ8ekLPhRVu3zX1TI/inojc23laAH3Q7j1AiBkkTXvKJ/J0anZTA+vC3/J3KOmB07BAR6yC1Y2NYYofg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260412.286","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11652160},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c16a0fecfae970b72e11262fac38799038b8f75a","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260412.286_1775976442464_0.6155375828008498","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260412.287":{"name":"relay-ide","version":"0.1.0-nightly.20260412.287","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260412.287","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"704514b7a40a862f40624856bd518d3f25a3d8a6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260412.287.tgz","fileCount":370,"integrity":"sha512-x+JksweYKm6FJn+FgtHswF5OFSe1i2yqmi3yOl8fVZ1b4hS29VdkSG9y79hyMM7ah1pQ+WawlVEGJnw/lxhrRg==","signatures":[{"sig":"MEUCIQCL1YY0j3nvYboJm9HppN2AbA3gXcIr0/YPwyYOkwv1cAIgJc1ajhYhgxGo4k9+yhaLxrt8o8zi2lfUGiUVnG+jwQQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260412.287","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11652197},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"08a2165bec30e7ad05bf68baf375b36e32a53957","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260412.287_1775980604815_0.28099278665488714","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260415.288":{"name":"relay-ide","version":"0.1.0-nightly.20260415.288","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260415.288","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"24a78ac63e5e25e3f051dc9aa86a6c3feb050476","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260415.288.tgz","fileCount":370,"integrity":"sha512-FttyQ/x7zukWm9Zwx+FFiax/OSZqMQNTlPML2yLHNByYW+R7X/G3vA2DMpZqFAElMwXrtXu6KAVrkdQahERKrw==","signatures":[{"sig":"MEUCIQCf8jG+s/vO8N0V8n8aWq4xa3XoikXv/MhDWS/4UfMB0wIgeZwYJGyZ4lYrNUtrmBltc2A7DkxRSp5txJsKFCMsXN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260415.288","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11652238},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3077eb1a5f538f893ace1da0d67ad31b37c43dfa","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260415.288_1776287543686_0.3296724061968459","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260421.289":{"name":"relay-ide","version":"0.1.0-nightly.20260421.289","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260421.289","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"4a05400cd08149cf1c79bf6e5ebc257df0dd922a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260421.289.tgz","fileCount":371,"integrity":"sha512-dZ1gg8FerNLuLVd6yRDCoAhqWrlPVxtoGQohzQsVqxXkelnQazIrpWbWkYBqUFbDAqkHDV7IZKamkQNQVXya/A==","signatures":[{"sig":"MEUCIQC5WrKIfIXmB49VVYrh12QmxI0g57klUv/LWgX8BYmlXAIgEcEkrQGiEvIkYfFA9MTuGu1rY2tznKjemikYV38KTRI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260421.289","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11650868},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"88c7712f942bff38eabc0c83b9e7fd78578ee6af","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260421.289_1776795531884_0.9473536447327706","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260421.290":{"name":"relay-ide","version":"0.1.0-nightly.20260421.290","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260421.290","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"c5592eba8d8e895832e8fc2b1d093383ef8a66ce","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260421.290.tgz","fileCount":371,"integrity":"sha512-2VfJ2MTUkA+3J6BqaaB1lSftch+Y1YVLdbRhuypAdS5Y0iyV2taHbzO9DU+SX5o3e62wEY+1cqjdm2Aqfq+Jhw==","signatures":[{"sig":"MEUCIDZHwv/uY+2+/WVl0ejVpEz9uS+og4qI2DRUvuSsqubzAiEA1WDSVnO/J4Gr6oKaVcltvJ/BwAPJvSJVbmAjUXbPoYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260421.290","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11657182},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"321b4342a7b8348f3a9ad89fdd01b67ccdbbd0d0","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260421.290_1776799547190_0.8894080920437761","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260421.291":{"name":"relay-ide","version":"0.1.0-nightly.20260421.291","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260421.291","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"2ef1ba83d831c726d6f4d483573b26404dd18f1b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260421.291.tgz","fileCount":371,"integrity":"sha512-nCO4GQrfhJGkTLMjPhirzwer+bdzqmAHdi6rr9AtsDZsrevpo/hU0k4/FgXnZbx5DKqSA2OMKfHGxQ1Dl9tHrw==","signatures":[{"sig":"MEUCIQDa8iSG3RDfUIXN9SSK0rzWq6YTmVTKumm1WStNsRixlwIgeSAO6vXPLq1ftY9t4xw5wxppLsqgj8VtYRLKUVuJrhw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260421.291","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11657202},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5bdbbf654ac63b61f9d87b9384c9253611ea1950","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260421.291_1776799578937_0.15700471606882882","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.292":{"name":"relay-ide","version":"0.1.0-nightly.20260423.292","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.292","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"4ece3d82e18504440f3e1ebe7b3741431116d51d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.292.tgz","fileCount":371,"integrity":"sha512-WZYCiL24IsZ3VVsUi5lsWYisg2OcVO+vQTg+femnJwCW+RWr1oJqkNfRaffJrULnxeadzJtAu0ADH07VK/z4Aw==","signatures":[{"sig":"MEQCICaQjDK5vdUjo7VT+1tGGQWekATo/2Kprne0vkrvdXF2AiBeb1tFGx7qmSCT2XXG94c3KUmWsyWYnGGC3r3pz/A9/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.292","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11657202},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"62b75275836950f430e55aa005525afcda662124","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.292_1776919793448_0.29578464895718315","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.293":{"name":"relay-ide","version":"0.1.0-nightly.20260423.293","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.293","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js"},"dist":{"shasum":"fc7e94170ff720e3674537987525ee045b2d8973","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.293.tgz","fileCount":371,"integrity":"sha512-mYq3G3Qn+VbeHucJGO8X7ovUcw4ZJ4RWdvF6f0sVPuCiuljoh77cjbhY6NJUus3QDErL9Y+O7D93JiYAwR7S0A==","signatures":[{"sig":"MEUCIQCOW51WtI5v5odfgROk/DQ9/HFEOTIXNsC7uQPIlzpEKgIgeuhzHZlh3Dh3oxPs9d6iXE8z45t6rFdXvYYJsY6YG4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.293","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11657202},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b41a8ef2df2b58b3c9cf28d161874d2288ccd010","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.293_1776921979054_0.8964210073276506","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.294":{"name":"relay-ide","version":"0.1.0-nightly.20260423.294","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.294","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"34957a41242c927b510c86b280b9006f8cd47649","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.294.tgz","fileCount":377,"integrity":"sha512-rOleMeMHVTcS6rZj2kP8mu24DMWMNA+H5DDKuF9H+/tqajzpbzLdtIHAdKE26+WqO6QrV7hKVUbmBZuBZfux9g==","signatures":[{"sig":"MEUCIQCuyEeGz2txY+lH8maQx7VZTJnlIVzaB8GiLfOyns2o/AIgf+HSpo0MA7DxyVQV/BV5WzisGVHzAGyWZ89EfuNn9xA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.294","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11676278},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"074499a5191f856d4077c6afe1540c8f50359377","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.294_1776926692006_0.4532453141299879","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.297":{"name":"relay-ide","version":"0.1.0-nightly.20260423.297","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.297","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a01f1fd768b78205384324506556563186cc36ca","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.297.tgz","fileCount":377,"integrity":"sha512-wLAVG8KCYNwjZnuupkCmR/IM31876hibD1O+TgQUwhYotSUVZRsNNgNPpWkrT+KVqfHUmkRGlW2BaWB7o2Dttw==","signatures":[{"sig":"MEUCIQDzHFuOiyelLY5QdmhFaJpSXH2j26PG8VfjXaBW3d4qkAIgd2kxqn4DEEw+H2hPaAwU/xOEvQ5njLGNxXUwgdKgkuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.297","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679260},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c495cbc8f101170000c6ab2b3bf5bc458a0c4248","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.297_1776962062689_0.21345771026185623","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.296":{"name":"relay-ide","version":"0.1.0-nightly.20260423.296","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.296","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b5afac36864f236ca7dfdda2d6b717a7ac963c4e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.296.tgz","fileCount":377,"integrity":"sha512-tfmbI+EHt60eePUFFD9hSxXjhQ693ZuhAEGBhMBbHsBF1tyCt8hoVpsAcZB5meCHonR0tZDlXxdp+3mIvDDJWQ==","signatures":[{"sig":"MEYCIQDBajvJBiEwl7UirSCFPlpMGiarFAYPfNGlf0dHg39vHQIhAO97j9fMyjruOkKSuC8d68103SGNX/Q/L0Rx1sOJT7uk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.296","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11678973},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"70d1d85f6717c5c373a5bf2eda083dd923cf1784","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.296_1776962065195_0.01565482108348748","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.299":{"name":"relay-ide","version":"0.1.0-nightly.20260423.299","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.299","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0023fb8f42df4337b70c9799de3b0d88b436f31a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.299.tgz","fileCount":377,"integrity":"sha512-KYArOYpIms61QH2aQfyNS52ZgQqBJpyUi1YHyQQYtj2hI42koFdvse4JS/h/YVoQHbPtmvzJjP3xIRiWuTZiWg==","signatures":[{"sig":"MEUCIE7zt5Buyz6tv/7twQzQewlV+3bSeihv3lpDgRreyt5pAiEA5r+MIht3qvYJj+Q14u1G6QQpZYF7LSypg3zPuwUvTfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.299","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679311},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f51e16e1d16c1177aec105fbc13c17737482a8b4","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.299_1776962070798_0.8957279804125176","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.298":{"name":"relay-ide","version":"0.1.0-nightly.20260423.298","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.298","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f4339747c8e05f1303b3ec9859bc831911a5b226","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.298.tgz","fileCount":377,"integrity":"sha512-5Hoq1jpQLr59D5yMpiutWIHjSIUTMoehjlCxlOzrNgTVZMFXcAaxewni+EhBnfPj+47GUZxoPU7YJz1vd89fZQ==","signatures":[{"sig":"MEUCIQCWaTXb0+XL/Aa8r9xZPa0JfC8UzHmkUiBDMIhRY+gQEQIgdZFHMP1kRdqg3yGk0DJMzmB/o9S87WO/JKoiO0zZkhE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.298","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679326},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5bb40e9446d27f30f31bc1745faee98c0ee54e72","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.298_1776962077525_0.858425892759431","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.303":{"name":"relay-ide","version":"0.1.0-nightly.20260423.303","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.303","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b8628ca955af7b2fc9ee3e0aaf767d6b16fcb222","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.303.tgz","fileCount":377,"integrity":"sha512-0c2NJ6hZWPAX0kYk+vUgRdGSEKwdG4lAuAlDEIZ+g7r8F2q/r5BUACSqD45uhueEKDI9qKjcU/vrqNc1LqYY3Q==","signatures":[{"sig":"MEUCIHBWaQop06W2EFQfAJY7OjkJJ96WUCKBGswG0L/yR+QWAiEA+57N5tBWro089EXW7+QsUNm5sR6Q9qSB4/xFhGyYh8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.303","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679722},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c6b47ab60e1920eba907e9f34b32b09cbd9451f4","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.303_1776962081591_0.3506854721685191","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.302":{"name":"relay-ide","version":"0.1.0-nightly.20260423.302","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.302","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d8259d230289e1e640bcc660c9c62e03acec0617","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.302.tgz","fileCount":377,"integrity":"sha512-piRtogCsdBI31tONNHLqUfRBdClAsd0htwgET+Oh68yftGJPsy8bYAlcxjDt+T44IsCVz5ALidzBhQavybwuNw==","signatures":[{"sig":"MEYCIQDDBUljx7AHGePK0iBmnTllP1mqMEoiURgY0uMAkA7cCQIhALzpdg64UcqWhFE8IrVzMdhaTG824aRgBNAOgDVYBmDT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.302","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679600},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b2978bcbea6b38104bd31f514902014f057a0225","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.302_1776962084555_0.04483227572671433","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.300":{"name":"relay-ide","version":"0.1.0-nightly.20260423.300","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.300","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8358f4b158aba9fcca61bf5980fd1b6011446d62","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.300.tgz","fileCount":377,"integrity":"sha512-F/hBlbtetH3waoVS+V4z9b3u3Trs+LsrNs7oNDj+32T78c7b7z0R7gV1aphiNXrldP3A9Ckp2DQQxmtzqvXVCw==","signatures":[{"sig":"MEUCIQDeaxPiDpcCbTh38iwe73879/EEumT8QZR7q6pG01oUpQIgDU3whPEjl2MlsH5WENTrlkuH3z871JRC4KlXY0XtkKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.300","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679318},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d735e46d44bfca2a076eb4d35385e41ce5a5f344","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.300_1776962087867_0.20369287731369767","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.304":{"name":"relay-ide","version":"0.1.0-nightly.20260423.304","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.304","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2755ce3adcceabfe64dbe187be99500b759f0694","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.304.tgz","fileCount":377,"integrity":"sha512-RD8hiuy+L5Vp4TVffu1A5ZmHHN7mFeAry7Bs6g3NxXp/4zoSY45vVdfD1fuMXu1/HWRddRvNUXb30FCYEeVfxg==","signatures":[{"sig":"MEUCIQComv4xbkkW1di9AdBNHPZi5q/0+BTRU0kHVpM6CYtV5AIgHpwCUdojqP8xGc3IwR98CfCBVUVkeqsjdwPi1z8DPl4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.304","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679696},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d82def2776496fae8158db9219d75b09972db5a8","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.304_1776962092469_0.400783408895637","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.305":{"name":"relay-ide","version":"0.1.0-nightly.20260423.305","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.305","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e51363de9b3a93d95da6780b22583b655c11d2ea","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.305.tgz","fileCount":377,"integrity":"sha512-f9t24SWCysEi5XQWh7UM3bWBVddwbIrw+CY0s68I0T7zV/RhpEwZOZOUQc2E4qgqOYFZgsJ8o+7m2Rnd7QDPIg==","signatures":[{"sig":"MEYCIQDe1wWwwQCd239mW6VNK6VovfzPoNY3Cl8WTuQuP/sDbwIhAPuo/nXsNsebOOqanp8FzKazS6iSkvWiJQeB3aksQwhC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.305","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679934},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"591ab5458aae7c29a58682a4a493f00a6da1b38e","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.305_1776962110172_0.4274667933283052","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.306":{"name":"relay-ide","version":"0.1.0-nightly.20260423.306","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.306","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"73bd163b9be09adc12b5496626c919b5531d7075","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.306.tgz","fileCount":377,"integrity":"sha512-k35FhFBsXn2ZlSwQBPc7BQPaEY/VrqQbFqGI5yaeXazB6H3oXbqaKICM9AsFZM5TjX7l0OrBuEbmidpHXT8+Xg==","signatures":[{"sig":"MEUCIQCLHdzpnjKH/zGQLQhzx02A2WApR+DaXzKPclqcc5mu+QIgLdTZbgVxfPuUniOva0CyQCWq/liseWrz4e5qj/19oec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.306","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679934},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1f4e395c08109cff59e3eb3cd266dfeb4ab7b1ff","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.306_1776963254401_0.18094950952743538","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.307":{"name":"relay-ide","version":"0.1.0-nightly.20260423.307","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.307","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"de330e4034144797ea1c6a25576559b18c7c4df6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.307.tgz","fileCount":377,"integrity":"sha512-OzAd8DQjLzBoDhkSzeYJKcDWvYxUEoUgroQdwCUKRi1s8R+H7XbNHK2uTVgHQjPeNCRpYFtaLeH9RFTpGHTpCw==","signatures":[{"sig":"MEYCIQCwBniOGz9EwZPE2A73Ipy3m2HixBb1C+OlT2o7dbHNxQIhAL3aE05H+ZfHV2KJTJXUW1yr9WqFlPReyNywLSpExEve","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.307","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11679934},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d727cc90b34fcd29209a66895191735738ee0526","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.307_1776975209859_0.8879769789933734","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260423.308":{"name":"relay-ide","version":"0.1.0-nightly.20260423.308","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260423.308","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e4dadcf3433132be44d69a44fb8d88210f01f414","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260423.308.tgz","fileCount":379,"integrity":"sha512-Xq065K2ojn5YYWPv7wtzJx/HdtU/loTOLmLDQLrzQVLRwUqqz7AnxN0SWqlRVVBYwXNtr3UOiaUjYJ8sgzLpTA==","signatures":[{"sig":"MEYCIQDhuMZii3F9W4N5x9MnKC1AzGeTTDvCpOjOfwTk8FdN6gIhAMxow20f6upMEYDY4aVB80OPzX0LQp0KQQPp74qPqSu0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260423.308","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11694410},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7fbde24bbde4078adb700fac98203ea05729bf67","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260423.308_1776979019657_0.027669189265764782","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.309":{"name":"relay-ide","version":"0.1.0-nightly.20260424.309","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.309","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d2608d6788f1aa2ad8cc04431475b35db1a30201","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.309.tgz","fileCount":379,"integrity":"sha512-vbdxUoX7xNSQlayEUB1setNCodfKAFgLm5hvN6ZIH93Ep9GRMigCV2hwoRp//+8s5bNyW2ZQTjeiEN7/fBFF/w==","signatures":[{"sig":"MEQCIHj+t3/7KoVf3FU7Rrz4E2dYMUoH4oo5IMqCNDkAdUw0AiBQlB/6earWliNX4kgGufa2uQJluYQYkCrgkpCUNqpMzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.309","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11695115},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2be194caa9400c67f7d33a5de0104af7308091ec","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.309_1776994942613_0.01606483524661728","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.310":{"name":"relay-ide","version":"0.1.0-nightly.20260424.310","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.310","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8efc826df027d37dc5f9d112e1bd23a22a0879bd","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.310.tgz","fileCount":379,"integrity":"sha512-eqcbjBtc9vhd6vqoAb7OClPKNxfDks09oL+ur2PFuALoEIl/nbZ3yriLvqgnr/MSn0xNdcPYFttu9L/WiQjoKw==","signatures":[{"sig":"MEMCHzRhaYXjE7FZtt31WJYfvu8wcEt6s/cVhhynX0z8HUkCIA+sVApOA9VvhRcEw2l6447/QsiSKSMzOhGX5PjQm7bV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.310","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11695121},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5908849d4e1dbab4b7289f0a5f21b1ec6ff2caa1","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.310_1776995465679_0.5785403416415926","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.312":{"name":"relay-ide","version":"0.1.0-nightly.20260424.312","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.312","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a45a58ea1e30c7d719390e0fe722eeb7160d4320","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.312.tgz","fileCount":379,"integrity":"sha512-fqhs2F6ZX8o/fOdWtj1srj1ORybh4IUP6KEwe/lKD29ARsbMwU85LrP/hXzURgtXBTnG2aAB4o58fZDx79uJow==","signatures":[{"sig":"MEQCICJg11Xshoq1gAZrPqxDX1ECbyVSWIMrdlIK4WidkZBlAiAechbbQq8f3mWu7jeMVLLaVj/woUJVcn2Dk4jsLbAUJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.312","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11696428},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"15313283d8c8ed7682fe4243a84a4fdb5a98ccbd","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.312_1776996819875_0.016364535511025347","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.311":{"name":"relay-ide","version":"0.1.0-nightly.20260424.311","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.311","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8b2a9732a28e3bf3ef771a3756c06cfbeb6ad781","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.311.tgz","fileCount":379,"integrity":"sha512-PgjsaKwVfz+3J4lK9MRFmbKqnPinuiQlURXD0RiZrzKWiAWoOZufdOgkCUwbsjqEUW9NIB280Q2L+XZOe8C2kQ==","signatures":[{"sig":"MEUCIQDILk5rrEB6hZrh2+thw0eIs+3j0DkD10d+KzmJdNpU8AIgQfvL5k1Mh5BU0D7NfCJceVqaZ5tBtdFjfVFWwmH7PA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.311","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11695121},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d23c2af9f24c49606e6d4328cd5a7820cd865ae0","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.311_1776996819893_0.3663482253595931","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.313":{"name":"relay-ide","version":"0.1.0-nightly.20260424.313","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.313","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b87388178e9925a8b76715dc3d3809cb725c4181","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.313.tgz","fileCount":379,"integrity":"sha512-PxkVLiy3TUGMru7t1T6CJRA4IKW4NuE9wwMd4gL3vRtWISuCNh5RBxPaks5ppzNhcXsbOFvG3OVvHcReB8Q/qQ==","signatures":[{"sig":"MEQCID8P0ohV4o7T5r1TAgPAi2S1gTDwL9QzEEBnvFB0gv4KAiBq33woPkwzQN4lgIpupWqb7ioe1WBYuoKJicdGDPz1cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.313","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11696452},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d383e43d8364a9870a92499535e88c3483f880d9","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.313_1776996827873_0.8339698750349567","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.314":{"name":"relay-ide","version":"0.1.0-nightly.20260424.314","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.314","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e37285acf63752c37637fd692ab40239dd30e99e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.314.tgz","fileCount":379,"integrity":"sha512-gQ32RiV56dz4fEBynWMNszB4rDo1SAWcah1y9sXQrknT6VrPYPWcktr8Y9UPq3UMBtBCqcsmZid9Mnncgk8pMA==","signatures":[{"sig":"MEQCIG08jK9HGeo/WfjjYrM6RnnyaTQfvlfi2DYpUWzmwNmIAiAdHwIm4DmhOdKpHFJ9AtHp7fUyrPbZZFQmmHcLj0q4AQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.314","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11697032},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"535c063279c79fca634ad8bcfccad31317ad91d4","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.314_1776996829788_0.5712955730316827","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.316":{"name":"relay-ide","version":"0.1.0-nightly.20260424.316","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.316","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0f3cc93180bc79b6aec11a27c4c9edb415348727","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.316.tgz","fileCount":379,"integrity":"sha512-pL2he1jK27h9nVpoYNKeB4U5H+wJLD+8uvWtE+ruWTnCpwLpG5BDNnxG899YvxawhlqziPXie7tLL3oKJbH4iw==","signatures":[{"sig":"MEYCIQDWrD3+7opYVVEmdcyXYOQRs9IEQb+p/rorR6Kn6BaliQIhAJBhHKY3GaPYCnmaEFcc4+KxidS/BzwLtV+u2kv/ptJo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.316","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11697234},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"31df62ea5362c5ccc6538097276e9832eef34be3","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.316_1776997070634_0.16648267481650048","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.315":{"name":"relay-ide","version":"0.1.0-nightly.20260424.315","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.315","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"756c9aaba516d0b7bd6244c93241e21731ed7806","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.315.tgz","fileCount":379,"integrity":"sha512-DpGhWADgwq4eSKGqZt4xFMaZtZb4Il0gm4A7OqJXvCtnuwf6GBrai9GX6iYwl3J1N5ocXlRdd/+mS1v++FIZjg==","signatures":[{"sig":"MEUCIQCANgrLPT3cuXwQDS0T2td4mlXlmn3TKV6H3QSYvJKPawIgOZA3seP0ZE9qzjvFUgGLkzU7yU8S7hl5gPzmN6aX4h4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.315","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11697112},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e425d9c82724ea424249e254709e92031b54f573","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.315_1776997074042_0.49407350175512454","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.317":{"name":"relay-ide","version":"0.1.0-nightly.20260424.317","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.317","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"82133ca2bb958b4014d49285fa2bdd3cd7067566","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.317.tgz","fileCount":379,"integrity":"sha512-R2MVsjsbupizteS7v1QGmDkcr399JFNccqMuKIqaUZabpIXeaKFxClOF9xY6uuoGJa3xUcKMI7I5tNA2cjzPxw==","signatures":[{"sig":"MEQCICJIZ/7ZvB5YT+Huij/sYdUHGd+csHgm3HolVvEeZRF4AiApKhRKOa6G2Z4Xuabw27090Aio94FqyVsMBfuujEoZZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.317","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11700140},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bee9231baccc8bd21e9df0ac00090a7b39bd74ea","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.317_1777000020335_0.8771737693556474","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.318":{"name":"relay-ide","version":"0.1.0-nightly.20260424.318","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.318","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f64e2e9d712e433cac1b8651469ee80923ccb095","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.318.tgz","fileCount":380,"integrity":"sha512-zbFTYIz6g523HPQhtHeA1aBHeBBlz6b7c90GMxn1B8lRYt7UubdFl6zMSlon4VaKNfPv1/mykf3FNvqTTVSH6g==","signatures":[{"sig":"MEYCIQDLwHhNJZD3f45zPBL7XtaCDH5TigvyOJfRU06OlmyNrQIhAI/C7UoGprs9lvfmMyHOGRF3C7q8bYWQlDX3VirhTuGd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.318","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11704351},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8396edc156a3a676eb5e1dd37322d75ca0aa937c","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.318_1777001035366_0.9868850806260607","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.319":{"name":"relay-ide","version":"0.1.0-nightly.20260424.319","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.319","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e041ba0f47757b05d23a5beb3d67706f561b462d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.319.tgz","fileCount":380,"integrity":"sha512-1Xbg4teubPuv/onDmKUOZhdcnN5z75zxLbXTwoT4RQQCJhFiYequ7Rf0AVXANMa4UIelHgkQ875hGBvsEiYq+Q==","signatures":[{"sig":"MEYCIQC4ND+GBaoGppXK1/62ZtgMBHlzjurz/TZQerEybbs0XQIhANjxo3z4/4h7VVopEa1jy7ABPVFK1NUogS/kfRc4Zdc0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.319","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11704351},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e00133ea2ecd58de3f00cc3d45782df6312d4606","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.319_1777006825585_0.9381962890568878","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.320":{"name":"relay-ide","version":"0.1.0-nightly.20260424.320","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.320","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4da787a93b8a981a2d18ce237f1cc41ab4c28a17","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.320.tgz","fileCount":380,"integrity":"sha512-xNz7grdrYzCTH8pbBJBnNi+oZxwxG8PfdJajVdf757eyRLbQOwKBTDt5BqPxt8Ac6h/NjF64/YlRaQ+xpvFnRw==","signatures":[{"sig":"MEQCIE5Fa0ihXc93eqQQAF/59RUdBpa1bf7mBAfYxHdL20ngAiB65dhOAVkDVnDpShggaAGTo0a6cqMTF1T0Zh98UFZB7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.320","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11710787},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9b02dd6c08097268b277464a00e467f16f917a57","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.320_1777007227698_0.9234259031622143","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.321":{"name":"relay-ide","version":"0.1.0-nightly.20260424.321","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.321","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"cdbc7887d7b9b875dfe8c7bc34a0f36aaf5fe2ef","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.321.tgz","fileCount":381,"integrity":"sha512-i3PteS3rkIsnLV4RY2IH3RkOYrpEGWaYPfVQcR4AcXyyB9XnHTkj2jtliu1IdsGk3mtqzeLZ7ZDKxrmY9a3rlg==","signatures":[{"sig":"MEUCIAXjW/s9sCPc4TCuJx5+WDO+qiOflOrZmJa9Z8NngBq1AiEAtTlgkudVQ6pORx13WlGlpQON7Y0wHbQXCvKmXHw+eJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.321","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11727221},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d5c62ffdc884871bfe1f44304d9dbae635e6ac48","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.321_1777007771948_0.45401084425712446","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.324":{"name":"relay-ide","version":"0.1.0-nightly.20260424.324","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.324","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"576c1c53f6bbface7897b48aed45a952c2c1ad6f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.324.tgz","fileCount":386,"integrity":"sha512-EQy/syMdM+r5twT2l5ZR1ua0pd5+J+pw0id981GZ+VpmmNrL+jewYrVYSs+YdpINyjFmkGaQyGOJtzzbJMeRQA==","signatures":[{"sig":"MEUCIQDa1BlYLMhd+V/Y7dXidzGa5EIQFmvH7ZA5azod6+TfOgIgLHxm8fG8SOEOgkgWnMJBZGiL4qb0bpIwqaGrHMxola0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.324","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11750199},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e520f78948487d832eb7b98217bb25e0113f0442","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.324_1777054496936_0.44302770073444897","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.325":{"name":"relay-ide","version":"0.1.0-nightly.20260424.325","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.325","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1b1d8a5d7f91e842f2efa1dfb28a98a43229ea03","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.325.tgz","fileCount":386,"integrity":"sha512-BpXKlIldxKgFD4Uu1xU+gWe5SQJoYgeum886wHxeq+rJ1hAJNmPu9j+vArMq7gxqu69R+JLC1PhTtFuAxK+Hrw==","signatures":[{"sig":"MEUCIQClgM4vtq8rSd/B18tKqBp/j5e5pG5OGW5cAfM02cocXwIgVEIdkt6DErZ3KjsxW4NMYXOJ7QxaZ8qScu5GHgp0ViY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.325","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11771071},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"057e3031974a7228ce88b840a1378cdcbbe17795","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.325_1777068883140_0.5027629044939566","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260424.326":{"name":"relay-ide","version":"0.1.0-nightly.20260424.326","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260424.326","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d29af0b9fd577605c3dae5da455994a5d0d2e50e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260424.326.tgz","fileCount":386,"integrity":"sha512-wYlWxc9yvrm/EMcJ1QwSWmw6HXxXAvC5g3GiUiHR1pGJVjMl8R8q65KSQT7ULXXwoOpG+VdUxDqOFBZMDylXHw==","signatures":[{"sig":"MEYCIQCPkSPb+8nC2ED7md/qCcGO4ksSVYopK5fN1lzOHRN0pQIhANMQoAQx+2g2XpfJFrgsb8QqDMAXJgg/dML8S7w0zVZM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260424.326","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11771264},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"04f967d5f51f710d1d94e4fff20d4dc963a3a044","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260424.326_1777070588248_0.043976460103769544","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260425.328":{"name":"relay-ide","version":"0.1.0-nightly.20260425.328","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260425.328","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"02ad9eb709bc30cc18b4660777d116d7fa19a15f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260425.328.tgz","fileCount":387,"integrity":"sha512-bXtXcTdlySSN3vp0kXXE5+Z6SHlRU4avmGPZkDucVr6tNRMWOtCAWwEnfQNLejwTvQg+D0ifREDIskM9+dt93A==","signatures":[{"sig":"MEQCICsMyX/7sJJ3GoOAKm2s5U7vg+iPOfKXNiavcZUTfSBcAiA51obESKUZ/nMwBNe8jlVe/k5Z8hXKv8HrKhu1hxRx4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260425.328","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11786772},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"931cdb0c07ab0264455a27d8355e66e35a4aca95","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260425.328_1777086136483_0.5165979374873069","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260429.329":{"name":"relay-ide","version":"0.1.0-nightly.20260429.329","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260429.329","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6c92fe2720a34e8ec678eb77f8430c64a5460c72","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260429.329.tgz","fileCount":393,"integrity":"sha512-aOPqwAGeJX+3w0du07G0EweQ0HW5bag4ckVYhGpG6UY3C6NC5ek/j9SEOHEeRX5Av997khEc02aJ1zg0ISNtvQ==","signatures":[{"sig":"MEUCIQD+Rxmc49DHOqQJbdOWmdEkLiJn6j2JVTOjdHl0Udn4lAIgREeansqWoHzR7gvN4rWPkHUIvIOOSQRByDBZ915MSSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260429.329","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12010984},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e94eb92117892c8606619dd323218025f7e17b33","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260429.329_1777467977701_0.9896951985557465","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260429.331":{"name":"relay-ide","version":"0.1.0-nightly.20260429.331","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260429.331","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"341638952c54af1899af1dd54e46cb4291dae255","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260429.331.tgz","fileCount":394,"integrity":"sha512-63/G/AF1mpVCifwD0/HETLF8ZTbllGuY8YWk9bmDL+P/f6uVbMnponBlMddCl2Ph3bRxu9Z4aqwtU1cMAkMFZA==","signatures":[{"sig":"MEUCIQCulEJWZeXxA7UVUDD1b4K+Tk8K2n/9xklEq250CJ5GygIgBdGicotmW2qHj2OBmBBIkP2vHISaWAaw5Dt1LsFM6Ik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260429.331","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12032826},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e2d4f06ed8a433b42ddda62a33c69267d0415383","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260429.331_1777476596710_0.5513734124018026","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260429.332":{"name":"relay-ide","version":"0.1.0-nightly.20260429.332","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260429.332","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b06cc5c8d9021e17beec90d3f2734d89af17b509","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260429.332.tgz","fileCount":394,"integrity":"sha512-grIfRPavGG8WZ1DiXqEtkg2/uifIxSzJlsqPIEiJJPegiRvjyDTtiNblalBUxyzrH3PacC4g6anQ6ok1g0Pm6Q==","signatures":[{"sig":"MEQCIA9f0OAwiaG4jHTbYfpEiJqMKAgbXAMNVi5mb17VZ7jvAiBH8azoA+fuXRpVecuLuge4RsodQqGCOBYU/Hqv0SkkrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260429.332","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12039708},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"af0f507c40ca1f488cd45f1cb9bd70f008f5b345","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260429.332_1777496787168_0.0471450037206429","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260430.334":{"name":"relay-ide","version":"0.1.0-nightly.20260430.334","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260430.334","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1502a5793cf2a25d58b2e314f06c0f0e00dd7ca9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260430.334.tgz","fileCount":394,"integrity":"sha512-BnBsdSQTrfeLSd7ASDs15S9HHVlF7SPpS2mOr6ksz9KUZzY5A4IEbB/fxCrGtzr+xv/MG6VkUGB5TPK8D5/lFQ==","signatures":[{"sig":"MEUCIGelX01dX4qP93fg9FIc8QS5sDR3islqoA7/5KX6e2DUAiEAl5iFKJ2OoEKHXseyWs34iauZG2cZxAaIRDOfhiWOOp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260430.334","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12216168},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6bbb93ce77cba37a5aaff9d380d7e6f02838100c","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260430.334_1777519999179_0.60687425343364","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260504.336":{"name":"relay-ide","version":"0.1.0-nightly.20260504.336","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260504.336","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"56a30c20abf0345ccf7b22a3da16d6124ec96e9b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260504.336.tgz","fileCount":394,"integrity":"sha512-4AJ7Hr9vz6tW6Pk+QG/O9VSLHTHU50yC/Dsnp34ItHLaLmh2o6MCK25EhqpRkIYj4N658YNYpXTEl9DqxJIpRg==","signatures":[{"sig":"MEYCIQDXCo9o5zlQxJ/UoTfIL8kW5P9Tb50uJSKb3uP0K5eyfwIhAKef1CLqGXgQ9hGTth0HWL9ojGunJWNIWacIgLtWNqau","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260504.336","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12256387},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"43f8c7452fcb9822a75721586bd80ece6430a82d","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260504.336_1777878085319_0.12070331212427998","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260505.337":{"name":"relay-ide","version":"0.1.0-nightly.20260505.337","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260505.337","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1f17243edf62a39de7e711c67acc40f74b77aef5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260505.337.tgz","fileCount":394,"integrity":"sha512-4xufbaimUHFxRwqbMbjKCROh1lCWvvavlel0ODErzmsy2Lg39Lh//ZsZAek5vqu4IkoWODSU3HfKshY8xGHkjg==","signatures":[{"sig":"MEQCIGPoKUnYdfji4P+Pdj7PuUQGbGtDsi+XG4lrF+e+celOAiBUxxJrQSSkr8ql51psyhH7Q8rEJuuwJ4N/orESQqFx0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260505.337","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12256431},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"fc9babc5b549972b3a4e4db6015ca616aa73af49","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260505.337_1777951114008_0.026700460264716508","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260505.339":{"name":"relay-ide","version":"0.1.0-nightly.20260505.339","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260505.339","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c0f2f02a673bafd73f31bb280b5d415121260b9f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260505.339.tgz","fileCount":394,"integrity":"sha512-HWC70ANFm2xR2AQQGff8VDgRX40Rssd+s76Jww/SHke54GArrVgXvRaYjf5yQ0dPniH4hEOqbp6Lqiz7GAGgFg==","signatures":[{"sig":"MEUCIQCtzkhAF9GSwKTMDqXsdQRYny0+I3l1I6m7hGRjbmHbwgIgVFJlBOBuxRYwDdsJaq18uLscr20/IZrBssXifHyXJhk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260505.339","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12261763},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b4a1f705a689f354502ac9be39a8a3b902e6a9a5","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260505.339_1777959495614_0.2698704314186535","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260505.340":{"name":"relay-ide","version":"0.1.0-nightly.20260505.340","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260505.340","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"38a9359098f89702902d4bc2dddf0ab23be64102","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260505.340.tgz","fileCount":394,"integrity":"sha512-fJXrXA5akSXJdSDEoZSCH+p3I/pC5b9uACSnDhvlzNBimE6+BOM2F5b/9ucVpDk488WxH/99igmPlYU/PVdNiA==","signatures":[{"sig":"MEUCIDlqSeG5fQE4sU1kqcaNkV1aNbzKN47ejJXQr0vWk/UkAiEAkXnSMWqqEW0RI7xIDg7iUTc4n/uVX+MHO2hTsCjJLwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260505.340","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12262136},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1d831b55b19403b44514e90449b7b253e98d1312","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260505.340_1777959774483_0.1318346040619074","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260505.341":{"name":"relay-ide","version":"0.1.0-nightly.20260505.341","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260505.341","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0c3e2d8f9c10db612291d406c57acecc30f6afab","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260505.341.tgz","fileCount":394,"integrity":"sha512-l8mEyHJjRjHvFlCikCdytinZ+AFU7EGU3KD6G9IV7DmVeHND2EfsVaOJuE/w8HhAjDUUJ1910Dm2YNczvbEE/g==","signatures":[{"sig":"MEUCIAqhwZw+V+bAQ0SCh7NHttU84oY5eQ87YiSbdovjJRgEAiEA/S/9hidd1bfk8CIAZjeJ3gS9khXVzT3mV7MGjL+1mCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260505.341","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12280630},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f0bef8733e864ebaf4587318f5d32423f3bfb006","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260505.341_1778009891076_0.4829428639566624","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260505.342":{"name":"relay-ide","version":"0.1.0-nightly.20260505.342","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260505.342","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8165dfacbaf25c624da0d73ed260117367f52f0a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260505.342.tgz","fileCount":394,"integrity":"sha512-xMFb+CXJLzErFKBA4O+oPHAIvBwtrfOhgPLdADMIamRzWkOOQylz5EbvJtAptunRuunL3TEFJI4IHyaQj06tQQ==","signatures":[{"sig":"MEYCIQD15nQDzEov6Uz2+8KBemEQWZszL2ZMwwmEuxG6K196TwIhAPP1lP16o5SWNLZsBRAzI37umyTxctaivaNIWBAJ8dXa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260505.342","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12295417},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"253e074498587e5d5a32f423c62391044eb1aaef","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260505.342_1778016314336_0.8071988501458396","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260506.344":{"name":"relay-ide","version":"0.1.0-nightly.20260506.344","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260506.344","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ec08cfa3cff4499bd872fbf2354605abecc2be56","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260506.344.tgz","fileCount":394,"integrity":"sha512-gR7RXQFxLiv4E3BgBJDrVW5Wfkspp74ic+VTWzULThiSwVJNO/UQDERef2fwm6zkbSA+dMqLvzciT8bp5BIytA==","signatures":[{"sig":"MEYCIQCh50j5vuSYO5n2ULZ8tIY2x9chkRUePubOaCarQ5iMZwIhAKtL/s4ncsCWfWjpATMPd9F9yz9ZWBhPdJY1e3VHkLjB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260506.344","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12310366},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"134618e988f1936935153e8f7b2ae67d5bcf7db4","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260506.344_1778027130186_0.8181139457403286","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260506.345":{"name":"relay-ide","version":"0.1.0-nightly.20260506.345","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260506.345","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7b73b1568ab8c581915e8c76788d021bfe7bed0b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260506.345.tgz","fileCount":394,"integrity":"sha512-Zaob6wpkAr/hxR+iXW0RXtfNKMgMTFnGaDutyFiphfr+psdP/iZdPSGd6RvssMkdQ9PX2KR4AQ69btueBOufyA==","signatures":[{"sig":"MEUCIDP99rxRD0RC3HbMG7uoblx4Cuh3SLuc6W9OwKZRblrRAiEAvuppEvB6ByH9rFH98Rf9Id8xgx01vV3PH6u+rvul/3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260506.345","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12310328},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"52eeef2d88240648f8aecffb9198944d660d5c84","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260506.345_1778029892193_0.4870147255277666","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260507.348":{"name":"relay-ide","version":"0.1.0-nightly.20260507.348","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260507.348","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6045f89cb9b952c67aa40e075a3351790fe14c86","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260507.348.tgz","fileCount":394,"integrity":"sha512-4mHdxtOcGsj8ywfaIKvB7EO85OE42rolhe1svZeo/Ou1DZ0V9Rg+CvNFL5fdu5FPbGNVhZcZLZ1WhSGwgZxVqQ==","signatures":[{"sig":"MEUCIQC/X/GRqLAm3sysgggM8J0h255zY0d84bS+TiTUSDvpfgIgMfWo+LMVJ0eql0tBxZnYjJVKt7S/uoKfzuhoG5IaIac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260507.348","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12318416},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b891aa10567a5af0c2b8355579c2a36e1b2922ac","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260507.348_1778124664787_0.3096010438717667","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260508.349":{"name":"relay-ide","version":"0.1.0-nightly.20260508.349","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260508.349","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"66169d0ccb27073a7c3bb15581309257ff3875a6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260508.349.tgz","fileCount":394,"integrity":"sha512-8WQLYihfiNL5WX+1i1ZQcUz0wiYnX0/d6TS0z9tVnxDtN/0Z1nwhd2pajdowF0n6+ggMVfUIBUlgnNlVElA6sw==","signatures":[{"sig":"MEUCIQDArPNKjGhAgaAGAkIkafF0bhM7YfYwXyKJvmhAqK2qBAIgBQcUGNnPaw401TksoGzGdgl6ZcWVdqD5JKfJl6k+skI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260508.349","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12292896},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"938fdf03b8c56d94927aa44275608979b1657634","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260508.349_1778225087403_0.9453114293363636","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260508.350":{"name":"relay-ide","version":"0.1.0-nightly.20260508.350","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260508.350","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"90a1f832cb467b42b54a829ad07f9b342e094e52","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260508.350.tgz","fileCount":394,"integrity":"sha512-cn+yGRhz55lbDjStkon/HxRn/CAhmebEZBzT376a+eHZqIkVmOx2xZrTS2GTVoKM2SrpJ4V5dCP1fnEnaFM+pw==","signatures":[{"sig":"MEYCIQDsxxtt/KG4ImORbwT8XffUnN1OEUCN7ly10KWgl+pdJwIhAO/CxK0H4K1q+SuTcAkF64zlx88v58KaMUQxSYFujBRa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260508.350","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12298032},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f9530cb903f50c6b3aea59c6c5f076bfe395f911","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260508.350_1778225477835_0.277302295598127","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260508.351":{"name":"relay-ide","version":"0.1.0-nightly.20260508.351","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260508.351","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"66b93a919602eedfec9dfb6a749d32eb5314e62f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260508.351.tgz","fileCount":394,"integrity":"sha512-aPp4+uD/69hWacqeUBQyEfL8NTvQLVpEk24IptLMMSHS2yptAbC9Vzb9caf48lH1mnNse8o0IM790iNzHgN+sQ==","signatures":[{"sig":"MEQCIGAdTpBr1NDMx9e2u5GkX4EP30OPBBYNdz3tMaAXd/26AiAyOzONaGSNdfB94CYt2Wn1x4aPZaFd2bHTmPMh3dksQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260508.351","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12298032},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"fb9233583ea4be4817224beb3c4c703559813d0e","scripts":{"dev":"RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_PORT=3457 node dist/server/index.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts","test:e2e":"playwright test","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260508.351_1778229452644_0.5162609629014638","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260508.352":{"name":"relay-ide","version":"0.1.0-nightly.20260508.352","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260508.352","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6532dabe0d0199e08a7752c4bd8fe59aa80ac93e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260508.352.tgz","fileCount":396,"integrity":"sha512-DzBBkygoPkMnGCgCy4tgt/VKc1g5fJFjOQWd5Lm0c9AUVcZPQIejH6+qqYB12A8JsJWl9gQtkxI65sGwX29jdQ==","signatures":[{"sig":"MEYCIQC2SMWvorSFRO7R3KomM+eAqVOgmxsSj8hYkAIVOvmVdAIhAKqlajXVL0j4YxHp0yEOX+VmKcFC1+azu2LetdALlLLS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260508.352","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12307888},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"682eed31e942ec92d1489e959686325250ffa2cd","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260508.352_1778231338597_0.30310320042503314","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260511.354":{"name":"relay-ide","version":"0.1.0-nightly.20260511.354","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260511.354","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a251981172015f946248cfcf60fa15f36337a7ac","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260511.354.tgz","fileCount":398,"integrity":"sha512-VF/boOMIMQ8Cb/oKBS8zwbM3yDxzcB5D2a5Nyh7RRMzKFiRDKMumSxNLJXrlMKQfQq7ks2mctKbFotfwex/AIg==","signatures":[{"sig":"MEYCIQDKih4FxbwWzAMGUZyclQNwlL5J8g4w3FSYEPnlH6sH3gIhAPuYlrLxS6FQ/RdHa9cIcjZkFpGvRg7Mb2ZH6CWZvxdb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260511.354","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12331375},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8ad397f10f6b39d1e3ffe2a7e9a0cf0429e93c52","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260511.354_1778515598377_0.869707338134204","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260511.355":{"name":"relay-ide","version":"0.1.0-nightly.20260511.355","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260511.355","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"434d304ec3096f20fd92d0495798bf702e122166","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260511.355.tgz","fileCount":398,"integrity":"sha512-mhRBi9bxKWrKi4opwXpvpWsbq5tsdsS+wYCx9sjsSS+KZvg0M4UNvoPb0TKbfmWXb5Gyf7xeDayfPMm0Ogj1eg==","signatures":[{"sig":"MEUCIFEkAxISAZZBYNR8Wcih/gkgSyjumY6vwA6uf/eu9rcfAiEAkwlY3OQg0S5wEWqgi9vT5rNu+rJQYnzqX8MjxgQb/yY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260511.355","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12333486},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a17030c12ad207aff8a166f6b259e5ba97e7a9b0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260511.355_1778522023087_0.19742950128817904","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260511.356":{"name":"relay-ide","version":"0.1.0-nightly.20260511.356","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260511.356","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3a0d6995c57668c597c4b6db06e7cf0922e16380","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260511.356.tgz","fileCount":400,"integrity":"sha512-LvqyIgjCenMavYigXXM9qKhI46BYzNHeojDhX+3RZpxodp/icrsNelMgtdOg+uS1UgmxLCBKXCtwen3bSJ+39w==","signatures":[{"sig":"MEUCIQCiI/kgdgkTKAE0XAsn4MtCrvr7UyfPJqU6GzEECi4tcwIgdUplgG/JXBpkps3PL+5IjCWaWkP+NgLcMMTC13xfl2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260511.356","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12348147},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"42b33f29dc86e031ede5d9c5afd258ecf8b0eaac","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260511.356_1778531552089_0.30572436103710476","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260511.358":{"name":"relay-ide","version":"0.1.0-nightly.20260511.358","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260511.358","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b868a3194f683fb251107dd647e2b07d08f0c36d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260511.358.tgz","fileCount":404,"integrity":"sha512-Xr3sEbC9NWyWC095WGX3CAYO1ymhzxDBBWGmZN4JHcovc3hbvI30Jod/WEk9uirBdpaGSnyJDBJf+LE4h/N31g==","signatures":[{"sig":"MEUCIQCDsm0Cc7WROdP8rD9KPeXR1xFFVJT6cwFLIYYx5pqv7AIgTpPjuSLErGG57TeZLevEHdb5iz66dYNJVJhbr2UTT/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260511.358","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12377275},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b61237bc2fee3c1e07188d67fcc2896c822f757f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260511.358_1778537954253_0.958100603296651","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.359":{"name":"relay-ide","version":"0.1.0-nightly.20260512.359","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.359","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"929256392fb25da54e8bb80fe87a5f31e1db1757","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.359.tgz","fileCount":406,"integrity":"sha512-QZjJxjDZvtZ5jNAcyn2UTVJxoL9tuF3W8bmH7F9ZveHQiexWr/ZEznKs4IvXJ+0CoZBPxsP8QCrxiI8uciDN+Q==","signatures":[{"sig":"MEUCIQDOyDlZwypD/1O7uDYRmKNmGNSFkUrAPiJZoMQnjmgk/QIgblsPMFmXiOEzD6ss7mEDZsiC8LYY9YK3Mk8awuRQ9tY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.359","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12387744},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4b1f55783b65a596283eb009b6d992dcd1291c1e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.359_1778553554135_0.07532768007055113","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.360":{"name":"relay-ide","version":"0.1.0-nightly.20260512.360","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.360","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"97a3aff31fdb81a2ff84580382fb3b78de584f8f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.360.tgz","fileCount":410,"integrity":"sha512-ykBVgyk+/Ixk/NOZCrryoPXNggdaw35n/7bSWoNb/9JL5XNpA1LlRwMtcaH2uddIUm7NbEE6k11qhirUmtyqMA==","signatures":[{"sig":"MEUCIQCdEadFCrx6CDhjQjX1lUMhD8mby9ud74DprLEho7SBaAIgKR6eJV8SgI3ECKTDxoBff71mdLUFGlPy9BVjwvAmVqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.360","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12415770},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"65547d4e97fc923583059032d4d9818ac97c698b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.360_1778560368065_0.9681403300768863","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.362":{"name":"relay-ide","version":"0.1.0-nightly.20260512.362","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.362","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"73c688ed460a6d01347314fc34e6d7a1058ef487","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.362.tgz","fileCount":412,"integrity":"sha512-EAClvFFZC55IynPCRRXYA1KHfqxpS+BsPxiFxzGNc5pI0r1/DWAdwtqaghOQv4nevPGMASIcL7j25lvdRcSRdw==","signatures":[{"sig":"MEYCIQDaUymQSgrEEraNRsv77jFCxrgdF0JV/YbgRjtDCfzIwwIhALQJabhj7cp+Q9s5cuFh5m/CuFcJIU2yEANxN1L10rwl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.362","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12441292},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b0b488af11f204d31d881892712ce9c8ccbac920","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.362_1778565451110_0.7278554487970987","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.363":{"name":"relay-ide","version":"0.1.0-nightly.20260512.363","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.363","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"44a3d4d8b723ec32c7e7d1201cfbef4340e849c3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.363.tgz","fileCount":412,"integrity":"sha512-YHJAWuzc9t52jQwRhFJtXGTaAZblL/XxFa4pQLD3zu4+SX3x3gQJUy84F8N+WdIODPxcJ908vWepMiEFM2E5hg==","signatures":[{"sig":"MEUCIGMGb5UboxfXvVUrMp2RVDe9DThH/KsUAd3xxmw9kl6eAiEA/8BuuijGF874bTByJypwL9OtNjASn77umHYay8Xl1qg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.363","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12456594},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cefc3a5713de727eb8ff5bae1eb1a5459132492b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.363_1778572253685_0.43421152732888446","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.364":{"name":"relay-ide","version":"0.1.0-nightly.20260512.364","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.364","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d5c1f0fba86780a2791b96c7c91f890ec67a48c1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.364.tgz","fileCount":412,"integrity":"sha512-zwvoUbxSIbTjcqwmMrezWCnZPXeaKOR4yCH7Zmvr2edjdoU1vbrW/ErjPvfgtmZ6tquH6s6XCnTP3M8T8DQO8A==","signatures":[{"sig":"MEQCIHvq3CXNvDuBMFi2jBjd0jJu4i7dctMSR0hR3aWZcDQNAiBFNHhIQfJZiaHmzyJiqBTFku1KsfGtVaeJM0bUlIH5Ng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.364","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12463697},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1e9c62768a6800761bebedae70fd24b27e8a10b4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.364_1778580837973_0.4777309318883478","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.365":{"name":"relay-ide","version":"0.1.0-nightly.20260512.365","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.365","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2bd3d34c60b4650ddacd5f5427e51dfc6b26a597","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.365.tgz","fileCount":413,"integrity":"sha512-dDfMULPiNV/8QKLw10j65fV6g7YMQed8OXO3F20er6KaDQk81Ex0s7LQld2ePR54Kcz3cZl7zliZ6RYPZNNyNQ==","signatures":[{"sig":"MEQCIHpH4pz8Cnw1u6N0yp+7daGQLL5PLnQF01yKGyDUtisjAiA3A2J0Mo3ZO1kQwBZPP7YbfHgv0dC3cUnVB/hrQPQlDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.365","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12482000},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5917c262ceeb1f0245ea5c50579b2708a0a4c8cb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.365_1778581562897_0.8030681116746372","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.366":{"name":"relay-ide","version":"0.1.0-nightly.20260512.366","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.366","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5a30aa9fe63876b77329366220d6d06511e177c6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.366.tgz","fileCount":413,"integrity":"sha512-RHvUe043JL5wKhuoBeGS92YQSmd2IFLmyZxpK33zLLv2jmIbKT9nsmz2isdi7l3nC0WRIGJ/Zuhooia8aGkVUQ==","signatures":[{"sig":"MEQCIB6AMLjmtDjGrhG51AQHqsJsW8VhAczMDZ6zILyTqrKVAiA4XAcIHl9UOE12mPV/KKXSUor0U1Oaqn174rPlIRtfew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.366","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12485013},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3f8f4ecb55af7eac227c684ed86339286fd7dcba","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.366_1778584095521_0.3757022749988508","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.367":{"name":"relay-ide","version":"0.1.0-nightly.20260512.367","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.367","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a688d27c1a7848dd6cfa04312aabcdfd284eb0d8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.367.tgz","fileCount":413,"integrity":"sha512-MEHNZx36/bilIbh8ps94ediaQvYPDkl6aTF/BUki7shwq3FruKOtpYUlC4FIRwG2UWFZhk2TSwIZPeAQMN914A==","signatures":[{"sig":"MEUCIQC4ysnHAbs2EHUbft5vwf5+tVR+Ux0QHcX4pFRlKX5VCwIgHKDWqOopc0qXtQkiCFBMvvhOe4sCDRZ9S4uGKifMIjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.367","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12485013},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"feed43aeda8c4d659114f100c5167430303b93dd","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.367_1778590049029_0.36308543534735005","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.369":{"name":"relay-ide","version":"0.1.0-nightly.20260512.369","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.369","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6595a84f1be32da8ef683ff762793c427d9a0008","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.369.tgz","fileCount":413,"integrity":"sha512-IGPnRSSejR+CqDsBjP4dt8t29uJm/lCNMaE74VMpUGOJBzY/St811e8ekOLPz8nKHhsHht/h+ue4/htT49FD4w==","signatures":[{"sig":"MEUCIHP4Q0PAqsKE40a+c77t/HiVS7u5VWX+S3QLR+SDXEIbAiEAnr7sCLQQo07QbRG+bVFsE6Az34w9cRrLvkdPRmuEIFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.369","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12485086},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"55e8b189daea86f8a1dc6119d994d18d2edb8a2c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.369_1778593552226_0.9786765606699352","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.373":{"name":"relay-ide","version":"0.1.0-nightly.20260512.373","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.373","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b2d512c407f0f7305a12f94bd8c3b22a33943b40","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.373.tgz","fileCount":413,"integrity":"sha512-FDwl9wItpOvj540UXa5jPUm6FaDCQUPB/jAzYz8iKiBVqDHZs34bd3VXTV5uwputYnMFTeEtcK+I8ddbEM4r8w==","signatures":[{"sig":"MEYCIQD/mQ5gNI54jciQ4ToxErq7t+eAcyFNj5ybCH9RnL35FAIhAM9vS/fe6HiFffFrioKfE1AFDb5XuxnMggBLo9nBU9QJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.373","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12501361},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7ffb7ca5b8da6f188e603b6120c113525ef37831","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.373_1778606811874_0.13724468979782567","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.374":{"name":"relay-ide","version":"0.1.0-nightly.20260512.374","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.374","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d354935b8137c1f3b18b04a4a90ea5fb0a43ef71","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.374.tgz","fileCount":413,"integrity":"sha512-mjWBMRzMWC4MghtLR8UHhfGhv1/b5eAD6K18LI5OEUkEWeSNqwscV61LJ7noQ7Jj2gArlQVan/48NpQJCJrlRQ==","signatures":[{"sig":"MEYCIQDlV+sbdksrej4owqMSsVV5o2szoRzZFHDxGSsfby5DAAIhAOf5g1pFGRuLsI5ifjIszJHaf/5ODwcLfzgBg++pnf+M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.374","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12505037},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8b478267173cf89533620fb45b5b11e8b0dd2d0b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.374_1778610534228_0.6705606470954697","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.375":{"name":"relay-ide","version":"0.1.0-nightly.20260512.375","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.375","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7c13007d6a803a3638f498425af142b5dd686608","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.375.tgz","fileCount":414,"integrity":"sha512-5GQQvLmgnRI5fYmehy23MTxn8DbydLMc8+ps1nZo1XkJdXIJOnQa/9LjevbrchJ253o/KnqibMqnTmU+7B7+0g==","signatures":[{"sig":"MEUCIE0cLmHQ36lH8G1O3rMjW64u+X83IqGgk6V75iXl9tFxAiEA8gWeQm/vWyotmLjmvq2tgFy85tlGZ0weN15b7PTbwMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.375","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12518299},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d35bad5f04e1afcda0a4868df53124cf7b8c1aeb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.375_1778615548352_0.4722117099870151","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.376":{"name":"relay-ide","version":"0.1.0-nightly.20260512.376","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.376","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"020ab02886fa32b4e874a1bda7fac0f20d5c4b97","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.376.tgz","fileCount":414,"integrity":"sha512-nrAsKIlCIY2ZJFGPDBZoDtilZVteYE/V3ntsqhJ/ASTtpLDX8JRxyEjm1jRLsD/ysG2BhUmnP5yZda2xYKRWLA==","signatures":[{"sig":"MEUCIQDWBaCbjwR673L1aPSVOOprRUhjMMWVGHjiwJsKc5ciiAIgN2HjNy1LMZJe4p6NeA884aJNheXkqM66eV9gNJ78kDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.376","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12518299},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ab8dba7222e0ac7cc4cc158d63edbbfbfdc2d0d9","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.376_1778629200086_0.4527429430237466","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260512.377":{"name":"relay-ide","version":"0.1.0-nightly.20260512.377","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260512.377","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7dbedbfb92054a619a1069f9e39cb02ee262f5ae","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260512.377.tgz","fileCount":415,"integrity":"sha512-q7wXdexDrb3QUlOz1MT4fPFv9kxKCVS9fbuAam7ZzGNKPyYD4qHM7yHSsjk27z8Ah2sQtn24pVeWBfMpwUDT+A==","signatures":[{"sig":"MEYCIQCPo4E5aeqvcG1GEV3Be4+tES1XLHEj4BQPntS43U5VswIhAK4pfuHf9TvZIUOZJ+AnzVBjoNY05THrG3FU5arWg9TP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260512.377","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12527319},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"fdf575d675740d0be285d5bf48396cbd4aa6647f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260512.377_1778629440649_0.36000732277723335","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260513.378":{"name":"relay-ide","version":"0.1.0-nightly.20260513.378","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260513.378","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"eb3b4164bb6f10105790482c458c76133d736684","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260513.378.tgz","fileCount":415,"integrity":"sha512-MIlBm2gaIfXvxHWefU0ZY6gFu63y67sRYhsEptJO4DM6JKhWJVjO9lHAimvrK18cjRJGUiek9uC510xVbzOZgg==","signatures":[{"sig":"MEUCIQCa1/4Q+cp1ZLEWGBLgbdQmTgkcRKLNx5tJmNNDacbBAAIgMSfzWhqOvMQKEDf5dfEVZGDU76MbSqM/Ub/PXslSga4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260513.378","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12527319},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"dcd6742332563398bc6cce2c1556e035dda8ec05","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260513.378_1778634064214_0.48149225110813587","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260513.379":{"name":"relay-ide","version":"0.1.0-nightly.20260513.379","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260513.379","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d411aeec39ecd12a9d1ddd5890c3baef3f82b2ad","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260513.379.tgz","fileCount":415,"integrity":"sha512-EvBcOEVJWjZEOk5BX2fu9AjiS6Jl9+yArtbzoFQq3xHQ6MxxqPVEDzgAeToiYijJVTX7RmPT6z4fOrHdBH2rKw==","signatures":[{"sig":"MEUCIQDPUmWx8DXIW/pmtZ5fAVmx4d+w5shknHL9h1EerB3n/QIgUbauT2KtXft51UkiqpXg4jQmP/3tmqsrXnGdcw2D+aY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260513.379","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12527319},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d5c5896d826c6a43bf5db9bffb77a4f3946e310b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260513.379_1778634241658_0.8969121311052217","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260513.380":{"name":"relay-ide","version":"0.1.0-nightly.20260513.380","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260513.380","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f0b20e8a461700f0a92e95658ca2b5b47b6dbed6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260513.380.tgz","fileCount":415,"integrity":"sha512-/PZPB/GD7HZ9o48fah1IUEelnwAsTvK1EKY5my983VAXrZJsmVOXM/Ntxf14sGWhtLoL2+PDw1vLEg6kcwbPsA==","signatures":[{"sig":"MEUCIQCkjA5As0MYKfWPFQhOKSxHQjiKrUuT6HJTmW7Eu7fk0QIgHIticqPUtnp+9XAjlHXfpBc6bhH4rw0SvE6qSlUWu8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260513.380","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12527319},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f81c78adb3d62b0bb0877b8f8cef99bd9116ea62","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260513.380_1778634257182_0.30819894653594315","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260513.381":{"name":"relay-ide","version":"0.1.0-nightly.20260513.381","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260513.381","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"65d53e406fc33b8315c48a57be97930100ff0b30","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260513.381.tgz","fileCount":415,"integrity":"sha512-wTLuap1eO6zPhDeX1rd2ACzh+0g0rcm87fI8q55poyd7WnMtfv1NrENQz4FPgg3HHjONyfzRbv9PW9iYubo1jA==","signatures":[{"sig":"MEUCIHzFJs1HmVyamyRLa/+6KNcv3yi3pGZkZTJxE5JDtEqDAiEAi/N2zifYjMaqaJ12qi2uZ3gz8nGHPCaZ6RwXV2/4wIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260513.381","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12527319},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ed8fb45486a5d6db8e21a2e66403a61ac60dc8bc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260513.381_1778634522294_0.35887695576506395","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260513.383":{"name":"relay-ide","version":"0.1.0-nightly.20260513.383","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260513.383","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2e42b842568ad01b1a19c02d95c7ba55e989e179","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260513.383.tgz","fileCount":416,"integrity":"sha512-+lA4ur5GAB+/oGGTpxMwXoiPLeQ3KfbzGODpREOHTPJcbhAoBWsUz23VHJn5t2NWwr9HCWPj7fZxUmprfAf6aQ==","signatures":[{"sig":"MEYCIQCr19QvyieEO4RBTZl560N2xAqSqmCUrKojuOjo47UnrgIhANtaDyglFkaD2WW2zvO31YrIdHbOURDJKarsjOIES3+W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260513.383","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12530009},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0e6aa0d771d34a3e0c4a823440527ccf1ac171d6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260513.383_1778660882987_0.3077574212009939","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260513.384":{"name":"relay-ide","version":"0.1.0-nightly.20260513.384","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260513.384","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a040a4de0f902c167efd43339d68780be83de49a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260513.384.tgz","fileCount":417,"integrity":"sha512-ssK0+HNR3miE1D2zrSGbkRDrLKh7DDaptdsPO7PaClK7Q/Z4Ks1AqwqpEG9udCl33TEST8xDBYBiiOsC/KyfuA==","signatures":[{"sig":"MEQCIFmVNDg1SdZe9kRkWimGOBjKbiwhx9nteSGlQ9Yss9ryAiBhFVhgtcIJD1YF52/TBCFCl1MC63IkHGCkuMLoy1j9OQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260513.384","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12533410},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d6d497d46adc034eeafbc5c6cec1b01dc007632d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260513.384_1778686195412_0.8304788894842721","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260513.385":{"name":"relay-ide","version":"0.1.0-nightly.20260513.385","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260513.385","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"de1776fb8cd114c8baf64579227254cfccdd1e6e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260513.385.tgz","fileCount":417,"integrity":"sha512-lEYRZZCOFBNwauDO8HdXHvJrCHKdGZEpTVLQlY8Dply6LkxqX8fnAAYpwRYpYULt4myUIfneo+1PIstcZ6N1lw==","signatures":[{"sig":"MEUCIFXdtZThuRVobvQ7S0zSCF3okgSMQToyVj9u5dsTTKasAiEAwTKmAHEsPbzxisZ+SKBdleY+tDvYzKyV0ID8O7qmtBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260513.385","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12533410},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5b7520f0e25686626813cc800939b3a89c3073a7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260513.385_1778688788695_0.1565666457861088","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.386":{"name":"relay-ide","version":"0.1.0-nightly.20260514.386","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.386","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e6e22a21f196ddbf7aca7515367ed8a16133427a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.386.tgz","fileCount":420,"integrity":"sha512-6gnijrWvNRSQMHteaVo2ltTz0LiACPV4OAd6k4OO2RG8mgNiN5h75JkXrn552XxA5AXiRz9zOF0cBFx8tCnOtQ==","signatures":[{"sig":"MEQCIDAezdrkd0+7vhrPjKdHxhRoV2WyYvGy3wgBa/+iPZ6iAiB6nAxciZsVDhmIXN6gsIiWGo7Y7DCz1n2FrnWLgQiYvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.386","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12538555},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"57e1df8af5b2bae2025e2325f57fdee5c1817bcc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.386_1778727207666_0.24517178936643735","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.387":{"name":"relay-ide","version":"0.1.0-nightly.20260514.387","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.387","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8e7640acaa2145daa4bb34d7b0540c33198cd7a5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.387.tgz","fileCount":420,"integrity":"sha512-WY+j/vuqaAU+ysJuD1qwmuQCl/psGhlaX4pxW4Wj4/Wf6M6qh7jHeMYYCjNebdxRZAjUfCKstLb3laUet6TDeQ==","signatures":[{"sig":"MEUCIFPzDtDUWCSR5jARkg+9EYVL9gr8CVaC4Og5Hea1WloyAiEAnbn58YJub0HumwG9/s0kkNDOqrsLyoV/J1uuZqoTpWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.387","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12540405},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8e93b5adb1fd85f231791abb78f03ebb8e7f73d7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.387_1778729272337_0.10717334885516028","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.388":{"name":"relay-ide","version":"0.1.0-nightly.20260514.388","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.388","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e516ea67a78ce1fab427f89efa9cf79f062c8236","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.388.tgz","fileCount":420,"integrity":"sha512-X4qr1nYwpUxgnxwk6tPVpMP3Xoq0tbkJWygaOT2nFfi1VnKWnMSrTqUFfXDneCoBdRWf4tKLdDMZ5j3C6EDIYw==","signatures":[{"sig":"MEQCIC6SocnZEk+NhLS2NFxToA1yXP91XQS8ZqYRscQznlEWAiAaTKB0Dm+TPtcn3Xs6bq3CzDQD659awHzBwceLjAl8Fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.388","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12540506},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3c86ef9fab50b1360fd2439250c9dc1ba9eb99c6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.388_1778729691882_0.30784335093791526","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.389":{"name":"relay-ide","version":"0.1.0-nightly.20260514.389","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.389","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7bda469d7393d41fe3c0486b23cebad34bf75fa1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.389.tgz","fileCount":420,"integrity":"sha512-x3ETEosj06HnuUUqWSWxPqAPFY0AtzwHzsi6mG1s2wF2DIbf9PAd773KvH88zOwsQJadunODtssQW+QIx4apRg==","signatures":[{"sig":"MEUCIQD/+q3dwvbZESpQxLP/OJ9UlabGoJ03zgRM/fcGm13nDgIgbrl1FahBNAf6jvirVHArcNlE6rKIuCKQrmoIgF9bR0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.389","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12540506},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7239c8cf78f79efab6df8dbbb556df1d7fd6be92","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.389_1778729693151_0.8254735226583267","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.391":{"name":"relay-ide","version":"0.1.0-nightly.20260514.391","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.391","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"171d263551d99b611a8669c66dc213e0e389af8b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.391.tgz","fileCount":420,"integrity":"sha512-kP2MWqP5t7PAxI7io/TgiNAJIUjm7meeUbytwPFpbAZh1XGDY9Bt34A2rXYpDy7WLMNROB75cHPL2mrao/BvgA==","signatures":[{"sig":"MEYCIQChC3/w3aiKWOeuSJfG/NJW6pr4LeMK3XjvhVaodpEWtgIhAPaWH15AN5HHsHHegUuiTGNKMOcfhXZSJXgWgmQKMYL2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.391","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12540658},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9e46044cae2c37a312cb04012f00410f38575309","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.391_1778729962146_0.8038465507798167","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.390":{"name":"relay-ide","version":"0.1.0-nightly.20260514.390","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.390","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9c4eefc68bb27be0d2098e8bed9bbccf04b0f6b6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.390.tgz","fileCount":420,"integrity":"sha512-nyT3I4tn/2aE6REgzl4//UuuaLV5lUgDDJWl4vKu1iKqwynzawBjtJXBOtWZ3KuMEBwnxh8/i6rYBPYmsbgfAg==","signatures":[{"sig":"MEUCIQCBMuxH+a1Vn6SGmXPrFQYDRzCcsbAgNomHSo+vax0gcgIgTc5LnOJGvth1ErRYnJ+5yFa3+1f+5NdOlyKbeGQSf8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.390","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12540506},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f30a78634c12783c4efa9d843f062fb5a8023b96","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.390_1778729964915_0.17272143762470127","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.392":{"name":"relay-ide","version":"0.1.0-nightly.20260514.392","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.392","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0723673b3c655b798cddc2000c0835d6994fec6f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.392.tgz","fileCount":421,"integrity":"sha512-YcxuMUCw5ittbHH23bRuwAh2fc0wwVt4YGqdJI7YR6llAcBCWOCv8xSJpg1MLF3Iwer+9LWOEu9vzv9uW2yOgw==","signatures":[{"sig":"MEUCIQCYvf6CcJgk+YiiLxZiRH5F0z+2HobA++GcjbdPnKnuNQIgf7vYsZvbEAH5zsAC05AB2lsQkIZx7qT+GkR88NuU9Fk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.392","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12542760},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7a1df58ccc631a610be3a406eae24b050b750860","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.392_1778729981232_0.37116578600217864","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.393":{"name":"relay-ide","version":"0.1.0-nightly.20260514.393","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.393","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"82a4ec38653bd75bbf527db88ef8b68cbc8bfbc2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.393.tgz","fileCount":421,"integrity":"sha512-KixE9LwieBgDzSh4Us6AF5YsyVk3DoXKvQlESRF5KXgo+DBFAF5TjCJsX5yH/8AmjcW0RN+uZ67lhLRHNSP+ig==","signatures":[{"sig":"MEUCICwXrx3tRITaUABoxp77gqD93G2ZayWq2cJ642eIZMCWAiEA2kRyORpAw84tRuCxrwdOwQg8z5XNDeVoSPDzRoJruJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.393","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12543216},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b2338a8f8ab09c3c5c0cccd1b4802b4b421284e1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.393_1778729988046_0.35128303194932964","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.394":{"name":"relay-ide","version":"0.1.0-nightly.20260514.394","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.394","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5868773c7d14ae30afd9459a5b2f5254f9da3867","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.394.tgz","fileCount":421,"integrity":"sha512-Uk0y0J7lMSNz301oyWr/eDH7GtVeh6YmEOvAH/zyTvWycduGHLSflCIvXmM25tMwectAYHwCdZhtOJi1HjRPKQ==","signatures":[{"sig":"MEUCIQCAWNx3S7tozH60hA2FksP1xBaa/1LaMiRdFhpYTQBy1QIgFDrWPjkEyeExGDyoeCvRkOdZX7YkoA8A2OTwjwQ7PFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.394","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12543216},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"443fd6dd910230f58233538b66c89104ea41c68e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.394_1778730001272_0.5913957452917418","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.395":{"name":"relay-ide","version":"0.1.0-nightly.20260514.395","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.395","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4cb6a59cd529409a194b7c16cbc085f35107409c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.395.tgz","fileCount":422,"integrity":"sha512-1a+6xmSi7AjVRQzb6dNjrA8ZsUa9haCIKITbj5eNmgm5qLrb///Xj/rCHc+tPBt5Wgs9e67qJ5Vj4DYVl4Ft5g==","signatures":[{"sig":"MEUCIDuxX0iTSIIvOpU5YkM+bhNMMsH/CA3+z4ahOXWXXbiGAiEAzNVwZNVoyJIZSWlpxQ/eu4WGMYsL3wxgzSKwpN6ic/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.395","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12549624},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2a27461047daf98b4af32d8aedcf4df04c76823a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.395_1778730971755_0.20008976156034763","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.396":{"name":"relay-ide","version":"0.1.0-nightly.20260514.396","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.396","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6cbc7107294236adabe98f2b9edb4671014e6b56","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.396.tgz","fileCount":423,"integrity":"sha512-+vNKzvi+42E0GTDFa7WVP4LXzEMIwFENwogbRU304TPoOvaByFOWukNXBl3duWWmMkDmoSQ52Bd3aHD83LUqMw==","signatures":[{"sig":"MEUCIQCVQa4Jt8UUhja03sv1hCnpspxcnTmD9BymEU4plHhMJAIgAsRrJmgPPQSe/RJulrxrOolUh/lGcXvyeuF3YurEDJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.396","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12551608},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c5dc544a078c23a18ae8de82e3411a0a75a4cd19","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.396_1778730994563_0.6091695107432771","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.397":{"name":"relay-ide","version":"0.1.0-nightly.20260514.397","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.397","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6aaf4e292269dd403c21c854a293ada2081a22b6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.397.tgz","fileCount":423,"integrity":"sha512-BOw9U7d3wxcz8b/LCABTuCVqBu0plKywHb5TfseB3uJgsixyhiYDt5sQRjlIVhmcDBPE2e47citN5u2QCylASQ==","signatures":[{"sig":"MEUCIQDhJm/6symBnJ4lW4TjXIHsTpGrI1i0zZSQIwRYduY1eQIgMfE2hyH8goAW0/y8uoakaKXMviZvsOFjgMeeo3RG7fU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.397","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12553877},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0eb9ac06603a1f649a81157bccf5e6b14cbfac32","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.397_1778737470229_0.9319106570391302","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.398":{"name":"relay-ide","version":"0.1.0-nightly.20260514.398","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.398","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ea2b462138395481f6bb1cae25aff45355054a95","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.398.tgz","fileCount":423,"integrity":"sha512-bsk6m92aFtpoj/soGsH2KVcfWefowu4yVVHO19usO6VpodGaTbDq34R8xmAgDs0A7tKE8ZDXLWyVFxpaiZBIhg==","signatures":[{"sig":"MEUCIA3AQDoFY79B5eI4kLa64P2gjw970fwmKqRFPPWvGV8oAiEA+AMPnBmNPzhTnjqolULT6kl09hcZjkyghaqFt7+lzmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.398","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12561452},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"595bcdd303c29d3a59f99ec9695f9b6bb827cb9c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.398_1778737936748_0.8614604111588691","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.399":{"name":"relay-ide","version":"0.1.0-nightly.20260514.399","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.399","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9e668bd7b47aa3325a928db78a956cf6d9a5e81e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.399.tgz","fileCount":424,"integrity":"sha512-8pAsb0LB5JPq6dIJ/OREC2eNre0pSw4UU/WRw2zOEQccPT5BmMFWXJBIBC2K3UB1o1BZBVjidofzu0rjdwPwQw==","signatures":[{"sig":"MEUCIBOZj7kemi7IPwNqimc/escBb0hj8s+1jXjwB3FLC30uAiEA5fYuaazSjDzIpSXlR+s9nzFCNRo3D/tGGNyTIYnzoTo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.399","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12567061},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4034137aa8c9c4faa382b811901a270450df9dbb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.399_1778742280431_0.47254527354317766","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.400":{"name":"relay-ide","version":"0.1.0-nightly.20260514.400","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.400","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"999cdc55af8860f47a3293f49f8950b4eb918234","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.400.tgz","fileCount":425,"integrity":"sha512-USRVVEs8A2R9ZotmHj1ihGvPttkyLwYQrRbjXifXzKz0DyX3VTq5JJwZpXgKZX+MZNAqeEnNVKRItU8YNMjyXA==","signatures":[{"sig":"MEQCIDbpUiJCZZ8MReNs5At7ES/4ybRRgDLK5i+gyE8ZQgzQAiBhevw9NS6Km898BOKqV0Ca89ExVYHD1FZ5YPCXS20Lhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.400","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12584206},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"39398599913041bc5e0e5e3356fb46058988ddf3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.400_1778743319436_0.6825908593749812","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.401":{"name":"relay-ide","version":"0.1.0-nightly.20260514.401","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.401","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5be8390f99098a49daf544e3756e781a9d7bc6da","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.401.tgz","fileCount":425,"integrity":"sha512-54+5U3s6YzHyWSjy+mGSqItmquVN0K64PI54Q93V7X1MvNyvkuwXLBf4LnzS6BVqCLi3S4pKgsFsO91MIwl58A==","signatures":[{"sig":"MEYCIQD8bQkuBzLVHE2YUWm7R7EcJ6sjXkB6n90pqBSf59Pg9QIhAMSH4ileVEuX0c7XQjZz7Q6j44daqFDQL+tAS4UvhF4x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.401","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12584509},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7ea5a385d4aa2b27983209b274765b893116647a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.401_1778750898969_0.6655324476346698","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.402":{"name":"relay-ide","version":"0.1.0-nightly.20260514.402","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.402","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d87e88a67fe30dfa2e32990467597048b5d6bbba","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.402.tgz","fileCount":426,"integrity":"sha512-wLjvdVLe1T281LkxhHnlfKOqvbPNNcKffGDdu+NJfUZnsBBHoIGdcaUTIGE7Vy/uwkpoxNojg0nVBpP/jyogIw==","signatures":[{"sig":"MEQCIBLXsgL5XCh58rqQoT3IHMBu1Q0TtjAdbXiprir8mNg9AiB9IxdQ+x4k+ASvSHW/+MZOlgGjW6gyf2sv60IhRxCXGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.402","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12588277},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"caba93a1b8faff3b34c03734190c0bd5271647c6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.402_1778767087301_0.5319741999632981","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.403":{"name":"relay-ide","version":"0.1.0-nightly.20260514.403","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.403","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4a7b8d049ffbcf8f1c21e0c6a838d2fbd9bc100b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.403.tgz","fileCount":427,"integrity":"sha512-xK7nWiK+j6Y2GZNqna4mR3wOxWQGI8akqGujiDtH+/PJZSISCOOAtDzqQL6290vgiYZVIzsJXxDZNB7uUrnL5Q==","signatures":[{"sig":"MEYCIQCWSkJe6s3pgWcXCpeANy50SQlaOw12O0sIYuG89TzSSgIhAO8CsUN9LP9g2WVnwcyyqH/WTGnRlamzKRMbURCwH47I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.403","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12595586},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9506787c29a5f9f885833437898be9662933d744","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.403_1778772152698_0.6455441278597869","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260514.404":{"name":"relay-ide","version":"0.1.0-nightly.20260514.404","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260514.404","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"36fd8c481834597c930e438277f7c76fecf085ac","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260514.404.tgz","fileCount":427,"integrity":"sha512-JM9V1SUP9gFV+xgAF2ASejRpXt/7DZM7F4vbVFXO59rM/Kp2p9nB4xszmzrcMd8uPq6BE40MQIu5uDYIpdUPlA==","signatures":[{"sig":"MEUCICNFJrzwFEXDtSAaNSycITwPY1Tw1M2Q6cfe4VaSH3buAiEA4HB/oco4NqG1fk6CwqzJ110YcMfvtLsWdYxtYpUV/uw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260514.404","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12599613},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"aed9f43505d4215ed2a9555423622bfeba274775","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260514.404_1778776466771_0.3036610724993045","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260515.405":{"name":"relay-ide","version":"0.1.0-nightly.20260515.405","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260515.405","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0b5619810b5ef69e15c1d06626ecff5155a01c0b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260515.405.tgz","fileCount":427,"integrity":"sha512-JLX8HReG/lPdzbryPWKPDhOXQvbX0KvONFS9s81Kw91v5cnrxg5ntll4Z2HjvE1G3iQl1ZhHyrF6vF9sq+z8ZA==","signatures":[{"sig":"MEYCIQD0D9fEuy7C0tfpFzxMbR35Bzmt7pksTUjGAZKyySdtKwIhAKakoylaN9h3UhhVx+BCTAvhSfAmJfbp2oqy9VHnpaIp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260515.405","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12604197},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"31397ac31249456a1dfb00b0b65c29bd1ff180b1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260515.405_1778812628102_0.231557041232624","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260515.406":{"name":"relay-ide","version":"0.1.0-nightly.20260515.406","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260515.406","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f5c2a7ff304e52afd9ad59ab0a66974f56a61b12","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260515.406.tgz","fileCount":427,"integrity":"sha512-niIYVcexZnQ3G1ndFh/zZTgH/Te7UL6lvKtu8EF455q8Iqe5prI1w6TnITviQO9Bmzdge4EUO8sel4yeSTSORg==","signatures":[{"sig":"MEUCIQDbgUDLeX6qsna7T2zpG2MHGi1YFxBhdg/TE5rNNDshsgIgXn8kfJzOTTmnAI1eShR3qA/yRB6qoxaLo0JezUXRkOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260515.406","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12604197},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8647ded3138e9f8d972c23907e6aada76850f577","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260515.406_1778818712463_0.6121576897073355","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260515.407":{"name":"relay-ide","version":"0.1.0-nightly.20260515.407","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260515.407","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"73a57b863274addd78076328b1578c2dc1714873","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260515.407.tgz","fileCount":427,"integrity":"sha512-LVElfRT0yjEs73gdplcNpcjy4bk4xJF48BoDiVrJ3V5w1iL7t0LMLN9iVj3E0xzTL4NmSXHos+RMpdZlNRaOyA==","signatures":[{"sig":"MEUCIQCCt+u7BVwZ/B/7evQVxfTUdjmS46zcBTRSlj5TeHDGiQIgRUdmrlGh0H3DisvU7jjA2ZWULHJyzP4XASa0hX0f7BM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260515.407","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12604197},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a9f64e7c3ff0cdda790ae6ff397cbd4493fe9f1d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260515.407_1778824685895_0.4588516574522312","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260515.408":{"name":"relay-ide","version":"0.1.0-nightly.20260515.408","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260515.408","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"cb7b5377cf74824e204c11d9bb4767273bb41e34","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260515.408.tgz","fileCount":427,"integrity":"sha512-Uh0f3/uBtpf4h/9i85hXN3Xl0KLpwv0Oct9mun2doXRDzI7Fj/OkJqO4VlJy9vq3JHV2VFb3O6rHGXujxmwfBQ==","signatures":[{"sig":"MEQCIB+Q3VFJcMyg8Th5YvA9Bhq2dKH2T37FX67XG4Br1ExjAiA1kCc+uiPV7v+iZ0Lh9fCqbnSeZz1C3bu+B1TzS6jxfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260515.408","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12604197},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9586ba8bee2425fc26ecfce562f4b62d793803a8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260515.408_1778825493949_0.035846501287842836","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260515.409":{"name":"relay-ide","version":"0.1.0-nightly.20260515.409","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260515.409","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"acc4f0ad8edb2af43e3f972384f3b9fc52d78e65","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260515.409.tgz","fileCount":427,"integrity":"sha512-ltCaslRWYAJrqmUyeQzeVJS52n15sJ1ksjmyf3cm12c6bdqQQNK/GMNsWxxtXt5esaUTFKBzvK+Qn52fs2oYSQ==","signatures":[{"sig":"MEQCICoV/gfuIOULqTJGTAjaS7HUhIGM2L5b9y3ixNu5uTOiAiAVm8CV8xS27cSYsOped2FPmRTFq50FnuVv5C6+8O60+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260515.409","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12600196},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"014213616a5dd74f66e0e8d1a28d6a86e40131c4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.11.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260515.409_1778827530884_0.8638986564213442","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260515.410":{"name":"relay-ide","version":"0.1.0-nightly.20260515.410","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260515.410","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"755aafedc945d90cfd17bcce96ccb3940eb37e30","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260515.410.tgz","fileCount":428,"integrity":"sha512-7yPw0E7havcnmIV20zhzfzERcfoPbEQj1kVsr0DczGzGrDDfSiMCqPFc0clNrOMAOa1wCYYuVahOi/D/Ml/x1g==","signatures":[{"sig":"MEUCIQC3Qv4rAfOvkZyds839qxBQHi7YEo6q/8hfCFVXtO9duQIgOJKEYmrhshB3LEJ7GlIX/CCRkxbKV4OZ8jR/P7VAjvs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260515.410","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12611542},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5698a9459d0a278628de954373625bda77c99522","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260515.410_1778885165445_0.9513992902782766","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.411":{"name":"relay-ide","version":"0.1.0-nightly.20260516.411","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.411","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0afc5fff239595d7a548d95fe0c6440e31528313","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.411.tgz","fileCount":429,"integrity":"sha512-QIXFrjq0THau1bpDZEyndo9pHLVLavywHkcVXS9vXMC8bIfb433zTqajeIiJhVCy7vHrpkdgVLxYMwIrb9+IOg==","signatures":[{"sig":"MEUCIDeI3nMvBZ4T36PlwsIvBuqTHn5uJZh5SbZanq+H7MfYAiEA3NAFtIw5mplritJEhzoFj4jjeswWqD+XFoj7Tyi0jc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.411","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12618747},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7232653b95238922f92bdfc206ba519dc489375c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.411_1778895388208_0.5016659106965786","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.412":{"name":"relay-ide","version":"0.1.0-nightly.20260516.412","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.412","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"16e8fc19f7d758ef00365c094fe3d8ed94087af0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.412.tgz","fileCount":431,"integrity":"sha512-IRllaAg1wMMvw9AfpYR7xisvVi/OmXpE93tRMhQJbGrs6wQYwWXU21FVVoJ6jOlz7qeA0xFU+9iDCJPIbYFrvg==","signatures":[{"sig":"MEUCIQCs2JvwRHSV0t3Uim0WX3ozxe5iJkMGwHCV0e0oadnYHgIgfOra7ZkWCabbefK03rBqhVmlTCE+jX7kRfgxhKiDKXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.412","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12640772},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"108b7fbbcd6a206502360336db5599886767c2d9","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.412_1778897370740_0.5195527037219081","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.413":{"name":"relay-ide","version":"0.1.0-nightly.20260516.413","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.413","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ba0b7e74fb673cc9665b022244f0d7fed90ff760","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.413.tgz","fileCount":433,"integrity":"sha512-Om2DKCDAoT3eSXmJbdTihXHMSP11t7Vc7l20kDVvU3wHLlhbjh9FmnOWakT2+AInewXiIhofO2NI0985Xvh2kg==","signatures":[{"sig":"MEQCIFo7CMyt7HRK9QIcwEM/h1gqbqKc2iV4VEYbAFYHO+FRAiBfftfPcejKdBoIDwKVOA1nIu700lY6MbV1M7PRJ0oD/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.413","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12652372},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"fabcf934f77c31d65f27ea89fcb5637d8cf55a99","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.413_1778899670278_0.8801773125320065","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.415":{"name":"relay-ide","version":"0.1.0-nightly.20260516.415","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.415","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a2ef7941db50ae9171b717b48c88ea8fc8c76169","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.415.tgz","fileCount":434,"integrity":"sha512-s+uL4dSWJqbn5YoOJz4oM+LYKFbPNKhfrzla3Pc6IkHAYqLfsSTy0BM6JCxMokxpArar9OuOMJbB7Nh0m0zbPw==","signatures":[{"sig":"MEUCIQDHPHiuVE7feRecnFZ3JK1fj8VKJDFR5DK5MWvV5Oc72QIgVmvJ/RRKAE4LgUaLHqbXa2JLxzoR/6Jk32Bnp4FiHOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.415","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12660478},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a4c147a69a77f652298c373641e9f725c490e3fc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.415_1778903700630_0.5743660866583149","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.416":{"name":"relay-ide","version":"0.1.0-nightly.20260516.416","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.416","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5481cc3aac5c4f569283c23d2b9f5d306e62e40a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.416.tgz","fileCount":435,"integrity":"sha512-fSmQVxXEPhwM1OcZ1A4sBY7ZQJBk4kxba3lDLxk9is5EyoWU2dx6FQPWbJGC0KtcjB5iX9Kpp01hrxi596Bg9g==","signatures":[{"sig":"MEUCICSmA5Y2JJ2LrVtqc2HrxW5k6QngRV2Xd4TEb7fyZsbeAiEA9HTg3C4lReDzDZe+aSeVVRNnwc2jRvuPO/I+MlPtBWU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.416","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12678808},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c45885a46a773f94ac0cb73410a2ce21995cbbe5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.416_1778907443920_0.9591556343191758","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.417":{"name":"relay-ide","version":"0.1.0-nightly.20260516.417","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.417","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0ec0c55c549a3d9dab35b4a5a5174c3b48ae4a5c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.417.tgz","fileCount":435,"integrity":"sha512-7Mf+m3HuVbADY4a/kLPb+f/v449Fs8WJmWb8EayjMMGIHiHm85nAJ4A1Qino933yj8OtME3uPqLIHoLVhnsXKQ==","signatures":[{"sig":"MEYCIQDntZZE8+XSMRCTcGe93dByq1w/g2Ohp1ODRpwmV2gKOwIhALde6uvZyHUVFqpopG8UBCgWfrLUTuWE5615eNKOD5Bb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.417","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12678808},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e8cceb9d72378af19bb03f14f35154ba5d73438b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.417_1778909687375_0.13150456709398028","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.418":{"name":"relay-ide","version":"0.1.0-nightly.20260516.418","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.418","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"af78252a0bca75a9d931a476b0d8a0f209db6974","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.418.tgz","fileCount":435,"integrity":"sha512-E3f4MgFC/nk2ki2dglFk/N6JG7V3rwQhwxPDfKkdmmevXfhAAS86JImO/ArS6Gjvf4iiDSfgNwJlvC1aNmHo9w==","signatures":[{"sig":"MEYCIQCbj0OyQZhHRATdr9qVspRt614T3Q4rzDh/bDjsYWgaiwIhALXZdxnWErpZMq70Acszp22X/ZwjzAOLNmiRUf1VCatO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.418","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12704160},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c88b464846d79322aaf8a4b18e0442aad35194b2","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.418_1778916550445_0.34121649084200034","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.420":{"name":"relay-ide","version":"0.1.0-nightly.20260516.420","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.420","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"aa1575ed0e279d8e6b95275dce9b85b6492789d5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.420.tgz","fileCount":438,"integrity":"sha512-+a2/QWkfSxpshiKY9VfNHYHlg0oQRSKzXBunUIV6j+5SUj7YnRPO4kP3SJSjR2rvyJJXPRikmw/HEm89E7KyoA==","signatures":[{"sig":"MEYCIQCuDbX9dOcn7XuhnGcCzshfJ0444bsR8EYwhEAepK4gnQIhANeCY7vb5gl35UKdPVwTyT/uqP/0GbikLkwq1blOIL/s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.420","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12755766},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3deab6d233f32aae3db38f0fb6718443570f2353","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.420_1778924422530_0.6222824615625477","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.421":{"name":"relay-ide","version":"0.1.0-nightly.20260516.421","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.421","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4d9a8219e8b37ff2e9414272b9122e740166fc5c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.421.tgz","fileCount":439,"integrity":"sha512-LAT2xHcjDUaLOE+lMS7WEoXCxni4FexUyxT+u7xQQ0PbvzcT2GZcGRx/pENmiDX+z915ZZ1djkTQpHMV16hVVA==","signatures":[{"sig":"MEQCIGuLWR4TeRSgSz6k7wf83NsWyLkyEc9duaAhwJqU6Y+7AiAZ9ydkVoH9ZxsoNP/U4baWrvP7wwUa+x7Ij0HWcbbGjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.421","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12772234},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0b1fe1f5cf056a79fd3f4f45bf05af7876b05234","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.421_1778927507807_0.04820881295315349","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.422":{"name":"relay-ide","version":"0.1.0-nightly.20260516.422","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.422","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2d34e925e41d49c8c0136ea346b9612ef06dfb38","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.422.tgz","fileCount":441,"integrity":"sha512-eoboScOj4B3d8uYrcKxhevbyYsvAPuNaaGHZ0YXwanKC85mieKW8tjWR7G3v3DEshHJpUv55P/iSphGuVETEwQ==","signatures":[{"sig":"MEQCIF7W+fdEDhvHPWQETOKYMoGEdwkbEVIsHuhmRIiLTynOAiAhMqb6FES6utGyS1r/DdSdr75ER6gYQ8dZ/5en/BJj6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.422","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12791511},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f0af6854d1876d9c7ece24d148bcaa124ceb1884","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.422_1778928584226_0.12337078574962845","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.423":{"name":"relay-ide","version":"0.1.0-nightly.20260516.423","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.423","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9ea2778cda1eb4e3fe664087deec6f7d39282491","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.423.tgz","fileCount":441,"integrity":"sha512-p6Mdcp5JH3ySWflXloqyKVFjUm+j5RaJhET/EwshPFabI/9c1h4yxjuxWAYJzIEU+EvyUhwOXKfs3CA0PrjJ7w==","signatures":[{"sig":"MEYCIQCDPrQvDGkhUFDvbjjevZLz0NDIOSovKjlZqU1TwWKL/AIhAPXybMuY8r/WXxrNkius58laCT7FlKn8wMME1yDTLDo9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.423","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12797715},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"66361500a6ea2f69993f69b209f71b86d1b10060","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.423_1778932281577_0.7494877826609507","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.424":{"name":"relay-ide","version":"0.1.0-nightly.20260516.424","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.424","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a49832cbe19ff3ed1b0d563417ead33fa617d0e8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.424.tgz","fileCount":442,"integrity":"sha512-S2r8cNYjrYrea1XdvvyFi+O2JiAWkAcBP4qRlcqctWlWy1ct5zVzdFPDvr3cUIumkmKEMPXCRq9C5/HzwRyljA==","signatures":[{"sig":"MEUCIFSgKNzObeLvO3s5KZjtKyGdSmIImO/SvOavZC/OT9ptAiEAo9LxkE9L79bZKt/A7xHIFhTBMXGP3Kg16aYR4jeuhmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.424","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12827552},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d5fed9500b12804ad7f97c2bf48ec9c79627b2f2","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.424_1778937314750_0.8064083372421806","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.425":{"name":"relay-ide","version":"0.1.0-nightly.20260516.425","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.425","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ad75d1103166335a7388223b7073f20f66f72785","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.425.tgz","fileCount":442,"integrity":"sha512-XKkIl9VXFLZ5OP9o7+Oz8CntBpoVpxGNV7BzGH7wMAw1w37hGLfl4W8AG42X9KNgx0r9tph5LKkFVMKGUHpeZw==","signatures":[{"sig":"MEUCIQD/X2bo5ShydgN17zFokzkHQ9rNKtWJniM+TQxbxo6f0QIgfQCfclY95nOGNlXy2PjtoMp0ygs1bIejr/xk7+ZwpCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.425","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12844462},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1850cc60f6549158111e027ecb4efb9f7b41df9b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.425_1778940356741_0.3591777134598384","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.426":{"name":"relay-ide","version":"0.1.0-nightly.20260516.426","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.426","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6556851d294833b1a78399f8b411dd1d96791308","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.426.tgz","fileCount":442,"integrity":"sha512-YRi5Pgqynf1OipI9qPGIhoWXeyP/YIh9TvIQ+Zv+JMpmDjFuBAhrQ7FU1KIgOfDG9y31nKswBEGER53lbyLTmg==","signatures":[{"sig":"MEQCIBsqs69Fe4cDppztEKBrzWPmFL0RcnJ27y2YgbHkeZ5CAiBNU3TXgmKmsThxbMvkSCviW7/PdpkUhUUOzFHexRiDeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.426","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12856266},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e561930b0cffc0480c698821432462cb69cafa15","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.426_1778944770219_0.11641291872647197","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.427":{"name":"relay-ide","version":"0.1.0-nightly.20260516.427","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.427","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"deb48b3e18d9ba5dfa5d4258d69fdd98fff75806","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.427.tgz","fileCount":442,"integrity":"sha512-0MzIkzBdcmvHNe9dMtUwemvWRQbMkXzUDkkqKlcwOx0LBRR3UI0rHwbrmOHxxvgtN1gCu7BsvCCEVd9bjB5pqw==","signatures":[{"sig":"MEUCIQCUq9TeiuZAcSMpTxi9wy88W80p3Ryc2LyzQtut+4TsvwIgQlMtF+VoQzD0jOgcfcNO6vP8BDoBtiY08MSfWjjmI+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.427","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12857124},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7f60ed87b127379c724d36dd6ab8c6468eea2ae3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.427_1778948853157_0.3474340573233441","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.428":{"name":"relay-ide","version":"0.1.0-nightly.20260516.428","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.428","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c5a61e2e25062e9aa8cdacc38b683e3647ffeb28","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.428.tgz","fileCount":443,"integrity":"sha512-JsNVFm4YBkv4qy8YqTZyBGkaNdmaIxBD+qcfkZSikoAoF3uWUBDbopHaGFBvwjb+P4gfO2CRXoAZP9qnyytNqg==","signatures":[{"sig":"MEUCIQDtDtmmMClIc1/sHg83i8dPL06324uw3V6K9WoOdrivZAIgGwAuHROX4M7tNcYyTKUJBYHEEnluUjyi1D1+zQK8hFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.428","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12876136},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d02776c21c4c461c064d4fd6d8fbed87c8d0ee03","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.428_1778952466428_0.5806316006696084","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.429":{"name":"relay-ide","version":"0.1.0-nightly.20260516.429","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.429","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"186cd765f9fb11cddcfb2b52b464ff24a350962d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.429.tgz","fileCount":445,"integrity":"sha512-skjxuxGB3o6SQd6y0nYXeMOA1V2uo7U///MaLlEF96Cku2zcbKT4HWseGhRqxZBfJEB9dD0/kDNt5qQsR0tetw==","signatures":[{"sig":"MEUCIFikNceraA0lIuDXQ6u7seNjU4ikNkKseHddl8FRSxPsAiEAyomwcTeVqdOKr2OYVdCyKYUamXLSr/IqqskY8t/uqqM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.429","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12921044},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3a5a9d8dc1f524d50f06b5e1e45947e39c602a62","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.429_1778956386006_0.9378556301509657","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.430":{"name":"relay-ide","version":"0.1.0-nightly.20260516.430","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.430","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d94e7e11590d16684ddc397a0fa51485f3a0fa22","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.430.tgz","fileCount":445,"integrity":"sha512-g0c6PWmIjnYpE7DD/eDDO2PTJb6XhPuI2wyrdVp2hebp1l+1SRHUjHbgwGXn1Uj7IqnjPF1tXPsYiTSnpUf1wA==","signatures":[{"sig":"MEYCIQCkwtJtkTrQoJTNub22PVBwPnCm54PykDkU0RoX7oh2mQIhAJm5Wllv8efwilyyiZReV+odhLD1LzY1+n8ujIXrQq2R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.430","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12925584},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"fad699981765f5840746a9edca29e30c07612df8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.430_1778957221306_0.9969801080308887","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.431":{"name":"relay-ide","version":"0.1.0-nightly.20260516.431","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.431","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"eb1d7a3c249923547c19ccf3767330ccf7a848bd","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.431.tgz","fileCount":445,"integrity":"sha512-Vy+JpjZ2o7poTrmOqxzsvQ3/5+eIMsUe4te5q5W+IDRhszEcETtfmjZj8I+Aj1zIRFWtY5OHDzUzjccmm52XhA==","signatures":[{"sig":"MEYCIQDDfD0KeTbBjXj37qaxUHrjfGxGrwX1JYeG4pLyBcbisgIhAMMwiA0tDpQMOAYaUpM3VyCd4XwW2b+q9Pby3BiyL8zw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.431","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12941667},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"da72dee2f0a7f93156fe0e19c06724edbf1972c2","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.431_1778961745593_0.20913668800630747","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.432":{"name":"relay-ide","version":"0.1.0-nightly.20260516.432","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.432","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"711e9c881f50158f554111798b9cb945ec9eb147","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.432.tgz","fileCount":445,"integrity":"sha512-25d0iYGCmV577G4f7uh2cRLKAOi7n0J3JFmooROpXBpDoxON0jPqQ+KG0xWZU55UHC2piKaw9Ch2dJtxYYY9dg==","signatures":[{"sig":"MEUCIQDySPLSOnOao2pHtNy2gB+mMah6+tqEt7g6JqwxbzBIbwIga0Q8jljDew9d7IOPikFohlMCJxYgfU4vVyweCyZAb1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.432","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12941699},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4f4b7a0282a514abf9e28b137ab5786a11e321cd","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.432_1778962718669_0.5554173029231635","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.433":{"name":"relay-ide","version":"0.1.0-nightly.20260516.433","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.433","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"737c623af2ec37c0a1c89b820c2327e0acca86e3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.433.tgz","fileCount":446,"integrity":"sha512-TZlPw0DAhWY84kAshkvEsgSCb/5dbiN7j/os8z/X+ELfpdtILbSInYcCdQRGDLBrk6vrQlVNsTEOyXUu8VIbZQ==","signatures":[{"sig":"MEUCIQDhjESj9YhJSiLhjtBv1YSBVN394mbGhz+ytEFpouFhugIgIZbrl3Skugdoko4gj/vKRwu4fVvIGrULyQIY4L+Mw08=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.433","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12946702},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bda3df05e8f3f2ff888a0dfae31ca5a5114426a6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.433_1778964682108_0.35188009013226207","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.434":{"name":"relay-ide","version":"0.1.0-nightly.20260516.434","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.434","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ea7524e82e0ea95139214c1bc0f4d6800ea4a813","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.434.tgz","fileCount":446,"integrity":"sha512-f9s6po7+Hrl/5QLZmzz/8EIGwm3xtGXS2YQLHTu8D0fmjGKECi+HNHVNNvBA4GAdpRW8njsR86zKOD7hRJtO4Q==","signatures":[{"sig":"MEYCIQCxJMxwFDSgvYTRwkCcRHOOBQrnHsYBWFEjGtiWLU5X5wIhAIC0QmcaqxW3pZFejnEOdlpcP9uDjiEdxlb4OKLsFHxp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.434","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12963098},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4ca2e99a2b40e0cdf5314c5bfda424f04ff1d197","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.434_1778967485685_0.8651888169380539","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.435":{"name":"relay-ide","version":"0.1.0-nightly.20260516.435","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.435","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8395c7059bfb73365ca39dac58e359ca41d7cc36","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.435.tgz","fileCount":447,"integrity":"sha512-9gNSp4Z6Wq1WwcSR62AY3IXT3Uzc27/WsnyITDb5HU+SWVd9JlTb1kr+D+v/RmFKkL49r+877tJzQJbtCrmyig==","signatures":[{"sig":"MEYCIQCInpc0hvz+/RhtDtQpSGRDp9VLGbV34oxyfZ5gSsiGmQIhAKjvbvh9jefNjuLdth2wC6Qii9rTEoOvclrM/qaJg8wa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.435","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12983887},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"48bb51f4ce4973751b80757d1af4512a9c3c089c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.435_1778970671620_0.2260001283345996","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260516.436":{"name":"relay-ide","version":"0.1.0-nightly.20260516.436","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260516.436","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4d3550753ebba440c427e4e5e375a371648dad1e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260516.436.tgz","fileCount":447,"integrity":"sha512-IOGIFKvgTyaRy+bcDnrmNj/9aNH7o5++odj0bF48k2BHwg389HMwrEDI9oPPZT00fAnDfiuhcUSzSdKBjLcxzg==","signatures":[{"sig":"MEUCIQChR2yPGqFyHXx3hP9y/mP/yAqmKhLHFpweQIP+uTk+QwIgCFx+ryclKp50OBKZXuCHUqx5TEkuxxenvXdOPO+SeH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260516.436","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13000889},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"77550482e6fdd33a0190f0d56025093d3548fe92","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260516.436_1778973570843_0.08244421028810822","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.437":{"name":"relay-ide","version":"0.1.0-nightly.20260517.437","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.437","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5e143b739304e962a75bc54026b19f7a0b81f2a1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.437.tgz","fileCount":447,"integrity":"sha512-k87FHfGDFgbBY20KUI/pJi/IfuICsUyEUKKrTLim5yzUBs9OdK/QbrW0ycLZsrjgYYcfKHuZHVVh8uZiBxptDw==","signatures":[{"sig":"MEUCIHxPyNAV6MV7Lf+YNl+cJmsO8aOS4BsXXqIRQGiVczLhAiEA2QBhA/dSr/AMkpJnpLF78p9nvW2nZ3PYG8jrmwMnv0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.437","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13020130},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0cf98991909e656b113e8f0e6383c7c0e1f3069d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.437_1778978276157_0.9197272044767879","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.438":{"name":"relay-ide","version":"0.1.0-nightly.20260517.438","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.438","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"146e3db3230b9202d901f79d87415a42e6030ac4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.438.tgz","fileCount":447,"integrity":"sha512-/im/tH6WQDYLoVEzpNv4JPpp+lX3jeooqripnYnUTzbxX/6tMeesK2/ZKTqabuf2UtNJJfBrxMoWNadc9eZ1eg==","signatures":[{"sig":"MEUCICfdORqkF75RDjfAIzcX39pYdw0iZFRGLUjZna2bGdklAiEAjS/O4qoTf0bUZhEt6S5IMcRQYLOjI4O2IIZPLOWP0QA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.438","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13029775},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e050b08cd5a5736bf71526788770c3742ab3ca14","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.438_1778981955606_0.6332952323283383","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.439":{"name":"relay-ide","version":"0.1.0-nightly.20260517.439","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.439","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"176b60e2c5643aabe0c0c76392de2e53375f3faf","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.439.tgz","fileCount":448,"integrity":"sha512-IUR6ytppPJBqron92iFqCO/pnp+vAq9UIdTmBUWr12BJfOAU5MbrqK56x3nZvDJEPf7hcweUXnnhcZjiNPcJ9g==","signatures":[{"sig":"MEUCIFAQDpd8IcAEvFAiVIC3/8oBONrb8mdOUERchlHjTvjhAiEApfY7OKhQeVD5OQ4KiKqsXoWqxkdu8cXMC7o3aEGOSOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.439","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13038169},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4f8df5d8404d89297b0491e5bf76368ce28f89d0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.439_1778983447863_0.6441065984725307","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.440":{"name":"relay-ide","version":"0.1.0-nightly.20260517.440","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.440","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e41892c8cf56adc6793cc444d0803d76ce972209","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.440.tgz","fileCount":448,"integrity":"sha512-pDNKGUu5spKBdsrgGRKG1BTKYZ/AcYTbdIq2tVHojlepMQnNC4Y7UdjV/Fmaji7gJAyXcb48VR8wqdhCSUQrBA==","signatures":[{"sig":"MEUCIEqjE+lCvognqpcrapI64TC+ACAdQ7vetc+rmKPgRlNgAiEAmJgk5D594Fi5MCkLBXIaioUhVof69T3QQZ4FZdwaTtc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.440","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13051137},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bb337954c6a694ffd4fa235b358c9ed37b670104","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.440_1778988305417_0.46103651965542825","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.441":{"name":"relay-ide","version":"0.1.0-nightly.20260517.441","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.441","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f88174a85a3f10fa3057a305cd6b2b5eb26e3164","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.441.tgz","fileCount":449,"integrity":"sha512-o49XHocDJspV56qbQCJ6srrh7hxOrwfL8G89oM0pKnaBlJq2yZmE6URe2E0bjq+Z+wWGC1DpH5ZxnvDO9Qahnw==","signatures":[{"sig":"MEUCIFLh8w6jaJlutVJcsiyMrm4aehSbqfRgJce2Ekmr+fnyAiEAs2byIt1Sb4uq5VNtwPcozNwPegc5EhFSGGaE//imxzY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.441","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13060526},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bdf4c578977937a68a7af84ae276464c6af7963d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.441_1778990728819_0.5072811283761334","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.442":{"name":"relay-ide","version":"0.1.0-nightly.20260517.442","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.442","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ea5d21c84afc499ca305895f379586d715c30b55","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.442.tgz","fileCount":449,"integrity":"sha512-Sx5F0O7CqtgZsE460TfDQfeq0+cPn6rOCr4Cp/Yov9vo4mMj0WKLV8a23/zrAF2v2BBPp0qzjxpmoujy8Oz8Dg==","signatures":[{"sig":"MEUCIQC8KBCyT52IWmvan7Bz1DLTpS5DzffArUbAGi+kernwOQIgaWp4LuvRl+J4IEnbak5jAsuM4sHtrdQQZ1kITYl4R0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.442","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13060526},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"784459f56b2bfe97085ce3bf5f95b92249ba3a62","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.442_1778991695012_0.267016968508363","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.443":{"name":"relay-ide","version":"0.1.0-nightly.20260517.443","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.443","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b9de8aa3f603ebf3d3e46b0969eb732946729483","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.443.tgz","fileCount":450,"integrity":"sha512-w6XGjVJhTSa4SnXmkkhsqKWzWmJyVODy/0PCdMsFjJZKtdMiODefjI1QwPJ0vRaDVNZRBVsx5+/V9Mc6/nBTdw==","signatures":[{"sig":"MEYCIQCnBA0IPCYeVOoMzTtHz82iIBu/FVEGAWEaGlOoHVuMYgIhAJe2i42tI/4J9RZIEozryM9oCJ0QyImgt2Ec33mZu5nn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.443","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13069551},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a31b46f62d385d63d1bc968da9443928524c1c02","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.443_1778993334304_0.732878965295781","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.444":{"name":"relay-ide","version":"0.1.0-nightly.20260517.444","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.444","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f64f12d0fa815bb25957ac662a94173981cc5937","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.444.tgz","fileCount":451,"integrity":"sha512-LoHQUuCIq2TK4N+fUsvMVwAktJn746CysanZNFqo7AHKi1ne+C1mZWwh44nr4GAY2XogveWRDfEbfwrQpvhhDg==","signatures":[{"sig":"MEYCIQCqLwldEopdrm4H/0FdVSqT1Gj+mhRbs91efO+k/typegIhAIiwzqNkj+FGtmL0usf0fv5+SyzLcTPYvzzjhXD5HxXq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.444","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13088766},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8f429e48d34f88e514428f89ac34a2614b9ae594","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.444_1778997385416_0.17621575605153117","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.445":{"name":"relay-ide","version":"0.1.0-nightly.20260517.445","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.445","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c9df06576f5b0d37cbb03364dcf277c7baacd3b5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.445.tgz","fileCount":452,"integrity":"sha512-8NHQVQszhDbug2RdebAs0ZnCqDsmHrwj1WvlWu68cOoku6GlqxgLFvMvUDHUqH3oD601Htw24Kk+henB+OL1qA==","signatures":[{"sig":"MEUCICjkfYlSI+1d1BiVObyPsY5Mc1CG/4bzTdD1LL1gLCQEAiEAuy/YZN9sKs8dOmyLH3Qwp1OOgZ3xr6nb7PBxWQaIwQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.445","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13123123},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1cf39148dac96b11eeeb3c53ed6ca3978e3a1751","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.445_1779000878827_0.7270789701299032","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.446":{"name":"relay-ide","version":"0.1.0-nightly.20260517.446","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.446","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"157f9ac1cffc25486dc59b7640e3fdfe15e18b89","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.446.tgz","fileCount":452,"integrity":"sha512-d3IoEtJjsJsB9UoikMV773N9R78FV2FmYovWfY9Q8JL9Ei7Ui9eBGs1tL6qyGOqB8arHheUYJAOTzlOcMWQ3Sw==","signatures":[{"sig":"MEUCIQCWWVMAfzUJA+fDv9un7wtIWB8oz54nCmsTURR+Nu5g7AIgbf47y1+eu59hFkqmE0hcoRiLDwoDgEuCeDZwWEIMAco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.446","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13123308},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"37b2bcb41dec0689e43cab60bbc9251e0055ebac","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.446_1779003447814_0.829096954137295","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.447":{"name":"relay-ide","version":"0.1.0-nightly.20260517.447","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.447","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e658be9494ef226d974c11162e39466ea10c40cf","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.447.tgz","fileCount":452,"integrity":"sha512-w5u+0y8FR3gxOhYE+xfKOnP7imFLeKddv5BO2GlNWVc7UxrxoiHeh+dsJBVkz1qsS9756JGzFHD1fz6GZh6GjA==","signatures":[{"sig":"MEUCIH178xMSHbJq+ap/94siH/tMK5By1FmaBSurkTbrVCuMAiEAodnjI6BXEf+9luZB0LD67l0Xqg0n4DDc6DVovmrpRdk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.447","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13138347},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6d2b24a4511714aca2f2d03fd2ef65d85adea6e3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.447_1779004912933_0.3149544507700053","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.448":{"name":"relay-ide","version":"0.1.0-nightly.20260517.448","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.448","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"59ae35a5235ca4cec9aac5f3b050f353ca431fc8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.448.tgz","fileCount":452,"integrity":"sha512-jmkyxgDiRKg885CCXA/dpJ6Co5EnXSLlRuWgiHVx7far6490ThMusUA1lrHTorbIePQG5KV8miJ3hN8MRBq59Q==","signatures":[{"sig":"MEUCIQCfgEeDHpEx+9RwQn4n6MAyBAYSQ3PIrJNzbQW4j4QyPAIgVKEwBGMTUNNIDxq/SdpYM/w61jdfdhWY+LP3uX7djxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.448","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13146763},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"21fbe9cd34a33ec48434e10246ee94d7e1b96847","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.448_1779006002973_0.9837963367735523","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.449":{"name":"relay-ide","version":"0.1.0-nightly.20260517.449","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.449","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4bb073422963630b69da86590d8e87f35fa35994","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.449.tgz","fileCount":452,"integrity":"sha512-Hj6r2WGmO86Imjs5HyqSJLwK2R+m320K9johDvjv6LgRbtmL2oTnmHaqxP508H04zfflWUWepgyJ41/GQ13O7g==","signatures":[{"sig":"MEUCIBmqMJ9yZ8qrAhPdZ07Yl9NO4gaqAnTL6cyjDHbJk5lEAiEAsu37eDx1uCLOnP0pv1BZonAta82hmpRR6rFa/s8tpvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.449","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13154535},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"67fd15303c78987131f757670c7ce807b444e659","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.449_1779009499850_0.1356370038430328","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.450":{"name":"relay-ide","version":"0.1.0-nightly.20260517.450","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.450","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6030e3fdc907a030f75340f6f455a491d17967c0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.450.tgz","fileCount":452,"integrity":"sha512-xHTK89KjiVRYszSSLJgvhV9erHfd1Gkbp8FbuRL5oKz40zngEIrWPTrE8IsOCRlSSfy4n/fbdXQTSCGqqYv/8Q==","signatures":[{"sig":"MEYCIQCTMPID70JfCscM25d4N5vvavrEVi3ZGhGWJIeuOHQdewIhAJxf26EIY17AGSP3zeIYHLhPnjojceASqIVPbUqcHdk2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.450","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13159158},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"863447e0433defdb5970322a0bfef06b87766cb4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.450_1779016358973_0.6204828875246955","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.451":{"name":"relay-ide","version":"0.1.0-nightly.20260517.451","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.451","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3fe79e598b20aa580b9cb8fd1c49829d6c1e298f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.451.tgz","fileCount":452,"integrity":"sha512-QZafDaVtbUOjNr+W4Rpf3t+7L3zh9rEGM7ra/7RaZuIfDvzBEnY4n583d4Sw6HT2jpT2G5tnsN9RjrQnw0n27g==","signatures":[{"sig":"MEUCIFlvhzHnukl8F5NzDcUtRT60f99lhwc2Ym1AnK3m6/UiAiEAyhaGoqocbdCQDJMK0Sf58S7MogPjtrO1IFbvn1HAS0A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.451","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13161694},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"55d8a75bd0709788bf540c0e798ea4049b915ffa","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.451_1779019584342_0.23679052757088348","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.452":{"name":"relay-ide","version":"0.1.0-nightly.20260517.452","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.452","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"96bac3fa0219467a1aac37bf38b6eb058a43ff92","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.452.tgz","fileCount":452,"integrity":"sha512-VXDSPLiRwRfhclUIAwoKLVJmdYJFub4kZL6ZdJdPBisNFwL7SYh2M1d9zHaGC8HU/AZRaN7SI3m71REm+/NenA==","signatures":[{"sig":"MEQCIA1nM1mz2AcULfgKQ8ISjs1jqyKbUsfMtlP3YerOWn+xAiBbItJl3rLc/FjTwaq8lMpImtXAvBKhOagLLbLA5RHAEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.452","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13162919},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4f7bb33bbdcf4906499c06e9249f1a1be466ae84","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.452_1779021550090_0.2357558745236168","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.453":{"name":"relay-ide","version":"0.1.0-nightly.20260517.453","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.453","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"81a614c759b81904d6818cc4aba994224c91b188","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.453.tgz","fileCount":452,"integrity":"sha512-fkKFM8nmh5QwjukdfgUbVBLbAaHUtJw3byzzkRhJ2L54sUtceo0X/AdhykAqg++30+ihw8Zoxx9EiDL5mL9mBA==","signatures":[{"sig":"MEYCIQCsXk/1i67RYF4enxObmZhyupLlBA78EMZbaPqBaJ3sdgIhAL6WvSs/jqHz2CXHofEfNCdAFF0ow/Ne1s5igNVl0F+H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.453","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13163015},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"43e5a72a3635562e5003ddae55c013329c2afe18","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.453_1779023363269_0.49098309377635263","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.454":{"name":"relay-ide","version":"0.1.0-nightly.20260517.454","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.454","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"811b8f0c53acc7ef57dd1b38c582ba0d64f36314","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.454.tgz","fileCount":452,"integrity":"sha512-IdrSC40Jmmliw4t4HN1CrKrVIw1+1qpQIje3OvxCQSitPlNkzLmg4zfrmWEcZE3la0I89kS1Nsy7TTuSd/bSbQ==","signatures":[{"sig":"MEUCIH2wXN71NyZfmkAzUeDxC9jBw9ohqNYY7bvsIRojhzUEAiEAvImAUzEHAdNY2oDRRWEvcx0jr1FcAPP5Ch1SWYnL4go=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.454","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13163015},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3481bea9a3027fb4cc3f8179754861846edb987a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.454_1779025439340_0.18736262390073355","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.455":{"name":"relay-ide","version":"0.1.0-nightly.20260517.455","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.455","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4e67e54ddb6eb9e6f14167d10bf8f853cd91eeaa","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.455.tgz","fileCount":452,"integrity":"sha512-aPlnfhGWAP+61Va3wIWlUMsWNb5HUjfztZYyfJviuORUb10vcYZbSni3cUAtOBkmOw4BatJIEFs7QEnSrdvAfw==","signatures":[{"sig":"MEUCIFe7oYIrPi2aCwqqKaH5OMBv5NmYRgICHBgRdJG+frwuAiEAhHn/T7vI3Al0/N/YnNL3ifAQd5H/gJ6nDxT2r/3mF7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.455","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13164598},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d2100531fc322bb44a742094490663aeb315e15f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.455_1779026168048_0.8574515077156315","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260517.456":{"name":"relay-ide","version":"0.1.0-nightly.20260517.456","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260517.456","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5bb009aa61805132580986e7ba8fe1f00487e7c2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260517.456.tgz","fileCount":452,"integrity":"sha512-7vLYk5xDDynHwxrRygBZNlK6B6CML2wQOEdgyVx+wAPQT06U611aiiQ77aEba3ulIQxQpmWSfBjoM2ObWEUN/g==","signatures":[{"sig":"MEUCIGOA3qJJbqqfjwt7cjcJwoev7ikRBBFEffZ1bvKRBv/sAiEA3PwHDRbfDsIqPZTQjV1drLoI38AT1GIiYf13UnFxZhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260517.456","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13168119},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"941fec817ee60cba3e78e6f5bc4ba211f2d09242","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260517.456_1779053303174_0.7349852308021319","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260518.457":{"name":"relay-ide","version":"0.1.0-nightly.20260518.457","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260518.457","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5a85134465716f1e64d6bf8d9ced3bca8234b0f0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260518.457.tgz","fileCount":452,"integrity":"sha512-SRB+Zdcd96FxDkoFuUZ7zP3lpNCicVOLPAGIzXCqq87DmAAY5+38frlUu4RRNSKHk0KCVFilPOs9H10eiE/+pw==","signatures":[{"sig":"MEUCIQDVymRUDDFCMu0BaJzmGdrZ5NNdQUwGfbFyy+aUvOxZcwIga4tFBbi+hxhe0uwb8eDDHjLbQkFZqggm6KbnTDpR9is=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260518.457","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13168458},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7fdfc3b4e2fb8baa833c76d884965fb5e1fa91f5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260518.457_1779072111236_0.204401641815658","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260518.458":{"name":"relay-ide","version":"0.1.0-nightly.20260518.458","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260518.458","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"57abfc6ac426375320304f7d068150aff0e9660a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260518.458.tgz","fileCount":452,"integrity":"sha512-Voc0hMMyRhVhjz+5/RciO8U+2kL85xH6zHJ6CXndZGA5qLH/PZiRyVhvkSLvY3K4slSVPv9UkHM4WiuI+xUJ7g==","signatures":[{"sig":"MEYCIQDbzO8pMNPCaMuQufB1V8vMa4/+MLvRa/sJ4XflEHb4DwIhAIRwJH5iIcQKDffASCXJMtvpm9DLxlmGxzqIsS1aM+d5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260518.458","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13168458},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bd4b8cfc1683f15f7bb5054c0a7e6c62041b100c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260518.458_1779076936215_0.5859875692825627","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260518.459":{"name":"relay-ide","version":"0.1.0-nightly.20260518.459","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260518.459","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"bbbff9e77326acbaf479a9c6e0d4a7b5e324fd40","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260518.459.tgz","fileCount":452,"integrity":"sha512-+vz9SdnWJO9tKl5Wz4GWavaW+4uXRtvUKWb19W8F2QT9lPvluMTtLTVMIyGd0sNOtOx6W3GNly2B4cGEBdyK/g==","signatures":[{"sig":"MEUCIQDd/Z+vmKveMrlprkwyCz6SkudoVSQZnxHENVAFp6nSEwIgcrxoeJ+O1AyCSNjNF7WMyt+N82wTWAWD6BuyUt9+INk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260518.459","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13168716},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d2ffe56754f13383ea078916ecaac051fb0c06f3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260518.459_1779077911519_0.17103523158257716","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260518.460":{"name":"relay-ide","version":"0.1.0-nightly.20260518.460","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260518.460","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"850fff392afb992b4b30a89dc7bd0eef3953ee1d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260518.460.tgz","fileCount":452,"integrity":"sha512-AOAwtLaxmjURpPBU61OnYe/G4IzmuSYQBzF1K/Gr3b/DA+V34hnHSxtnM8NjOw7Gr9inyrJi+U17tPvYrwwRqg==","signatures":[{"sig":"MEUCIQCrR7huKAgku0ZOaP+7jhpxtpiu+alqJzkN00dI2HOAXwIgfZUcok1s1TXhW7U1NHASfyP3MX0pp7JfR8+KwlkRGUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260518.460","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13171668},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"083ec3be2537941418225118415afd8425b16e13","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260518.460_1779083261497_0.6588166973938494","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.461":{"name":"relay-ide","version":"0.1.0-nightly.20260519.461","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.461","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a045c44030b8649d116a039fc51a9c32e932d67a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.461.tgz","fileCount":452,"integrity":"sha512-GM0uRUm0fE3zjsmDx3WITBGpjsprDz+lHbHlg2lBDId1/XdAn6LvLyeRmi096NKHBXnfb98KoT3ZClYJzxInwA==","signatures":[{"sig":"MEQCICyHOmunQtx9+mXcPsJKbJzlup3uJayVZC9UnVKFoylJAiAeFlEp51BkQZ36JGM0Fl/Mn/UFjS3qCUKVFyBORBtGQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.461","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13171668},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"437be606a23c822dfaa6bdcb3e206b6797f1f36f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.461_1779214693724_0.6114228871347684","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.462":{"name":"relay-ide","version":"0.1.0-nightly.20260519.462","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.462","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"63e1283529ea926f5931d045587edda995494f1a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.462.tgz","fileCount":452,"integrity":"sha512-EPKrB0EyhnOG+IyES3ZPcKHMHolqHQXaxFHvJEg9UOqcpEVhnS5Urmq3ykmovL9184nY/fo5Eya0HTF0oU4lsQ==","signatures":[{"sig":"MEQCICNBmcv5fUopRGyqrvMOtKjXdENfUY5LoJoTwbzK8ql1AiAr30g7K9uLp2NNih5FMBDtUD5+Fx8GgUUgVm/Ozmdg2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.462","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13171668},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4ecfad3df065daca83cf3ac347d2d6c74d289f61","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.462_1779216968507_0.9117471880215162","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.463":{"name":"relay-ide","version":"0.1.0-nightly.20260519.463","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.463","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b5cb46644bae0928b932c355f6cd4f9544640d7b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.463.tgz","fileCount":452,"integrity":"sha512-eo95DPkKSlr8+z0WgxVC3oKM9pedq1XQoJGxPnXnm0gRViNNhGxgSER6PkPhqkxiuRdQEcNMnDe8QcimkZ3/aw==","signatures":[{"sig":"MEUCIQDRUGfrysUBCpUkfbXoZhPxoyFKFSbBvJuVTzUMWrFKugIgYTt/BBAqlqzz2Mc6f66onE9oo+KIZ997moynjNLe800=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.463","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13171668},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8e8498f6ff945fe45e0cfa6c9d70a0405a173c03","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.463_1779217435678_0.9174629574332462","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.464":{"name":"relay-ide","version":"0.1.0-nightly.20260519.464","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.464","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3d2195b74d807a980f5179bb8baf532874a7299b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.464.tgz","fileCount":452,"integrity":"sha512-JjqAixjHYAZRy5ultIJhNtzV6i6famuon+ZwQdoNzBMAXsr0hxvHyWM7s/t42VL12rw9vrY65yaqLN/7gVufSA==","signatures":[{"sig":"MEUCIA0dKCy6t7DRjeGHwS6UQj75h21W8zuwfpOfZZxOqWk0AiEAszvtxZKMoi4cMGhOcNTuiYQl5GKLh2wkCfCq53Wpdbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.464","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13171668},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bd558d7ca4e8cfc110501cf1bc04331daec11186","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.464_1779218711257_0.297068524945727","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.465":{"name":"relay-ide","version":"0.1.0-nightly.20260519.465","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.465","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c7379a8181c7b7550e13fa80dfac2527883c9a9a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.465.tgz","fileCount":452,"integrity":"sha512-+ALY8ryAkw+9Ihr5wWlQykuSRoYmhZDP6CTPbszW3v/nWV3mk+ZsbNJGP4dWrvusgHWgn1KQr6V2dQ0YBCx/og==","signatures":[{"sig":"MEUCIA0yxCpkqFzpNQUuPwkMKBOJWdZNJvozeLqDPYxQsmvDAiEA2fG/+yBn1guYJRJeXFbBLv0AamJ9dqn/nRbjhayBuDI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.465","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13171668},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0081f0d8c7916a8e2f9be428e7b52765a112c493","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.465_1779219131693_0.30228054604941246","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.466":{"name":"relay-ide","version":"0.1.0-nightly.20260519.466","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.466","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6244a201472d71e8928703e1095905ce27321ee2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.466.tgz","fileCount":453,"integrity":"sha512-jdPGbIlf0GdbWKLSJAqkPdRcwA8gqR71yZed5A8LE3mvHU/PUB7I094972tr8stYxf5KGS8gv9/KplrlZmbEeg==","signatures":[{"sig":"MEYCIQDXd+j5jvTUNmT/7jtgdlojaT0XX2ChBGCqyAHJvTjwmgIhAPCxyIv/gtOxlnWSpYqvTqRA5EOiGTqKOiq48TIA7HRx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.466","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13182595},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4b66267635e576a9ca28c872736a5f24c06d6847","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.466_1779219543605_0.4601451979921982","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.467":{"name":"relay-ide","version":"0.1.0-nightly.20260519.467","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.467","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"cab89089990fe11365f191d18199b1fe5634164b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.467.tgz","fileCount":454,"integrity":"sha512-PFbf+BQbGhcGb4x3Bvm9Y/QyLdQNTlmQt8Up466jd1sbJ8eTV09pZdcLUAvNXeGn/CrEmOZKeDozpAl9+coE2A==","signatures":[{"sig":"MEYCIQCr+EwmimF3guPAQt+EJNlRWbId3a1PnP63alFNufRUKwIhANGEwV6EKjX3KPdjg925IX5fDyJPazdRMWG4yWTb+j7U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.467","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13202266},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b600a3bfdd947b13abb533744aa22c73a95bb42a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.467_1779219949117_0.9874957066578063","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.468":{"name":"relay-ide","version":"0.1.0-nightly.20260519.468","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.468","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6773914ddbd87d250f7b00bb73e3ee33c42d9452","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.468.tgz","fileCount":456,"integrity":"sha512-V7UGrM7w3JTg1nHv5ywl+xc0KjPldSxERxFd6OWPyjY7iORxGru5CMSGHAawZhqBbJ9/Gz5HZj9tzUTpeLx+OQ==","signatures":[{"sig":"MEUCIEXR/JRLqz9T1FCjq5E0prPgT6cFEkN7fQDieTq56thhAiEA6ekd9mydUA/8etp1B9p4Tnhq8VR6ghEraOftR6Yf7SU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.468","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13218960},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"821b4ddb1b7f6e019a835cca60a13f04a0e07bda","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.468_1779220257428_0.3289286316832214","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.469":{"name":"relay-ide","version":"0.1.0-nightly.20260519.469","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.469","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9343a0225ad8f199950288a31f6d64488730f31b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.469.tgz","fileCount":456,"integrity":"sha512-hmU4xR3Z/2BUMe/ZYgzAEwh/azuYUn/ACsVgvu4Yez9039CiT174toMtIRDyhEwr03Frg7joYIS6ZhRNO+A66A==","signatures":[{"sig":"MEQCIGmJbO/Gy16FHdxCQSSRNwVZj0N+xGm5kEBVUTdRjwqJAiBm+JpJyFwYdHIXTAle4wrfpJj48QVX7VdHOw068Ba10w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.469","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13227840},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1a3fdfe29df4311866a10c55b7ed6f4fba43ed46","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.469_1779220693304_0.9171160688247617","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.470":{"name":"relay-ide","version":"0.1.0-nightly.20260519.470","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.470","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e2fbafcee9e59185e90b0624fb6125a026f72d02","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.470.tgz","fileCount":456,"integrity":"sha512-zEwDuN9ifZCoSKpLkslZY56QHprmNGMAId+2ltdgJvUXN3ejUE9HJ9y4D3vN1h/ZieOGOmvTTSz9we8uD8VNPw==","signatures":[{"sig":"MEUCIQCNlkpTZAxRZe10BaijzrW9al2M2+I+NJpWMabOgZcJYgIgV7dVBU7DzGk1MXKLgk1qD5RKGGaJRAVEszYzpgNGUM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.470","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13243725},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4fcf1b256df2d89c7adbcab02142f59d20b164aa","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.470_1779221118995_0.7997687805438702","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.471":{"name":"relay-ide","version":"0.1.0-nightly.20260519.471","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.471","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"bf24b2286421bbbf8725ee68c782d922427f5c83","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.471.tgz","fileCount":456,"integrity":"sha512-iKVqxndoJ2WQ/cEEmKv2H7hWBuvo0Y+3fFbthZD0P/Nmra5JLUJICtpCZ5HcK7p2IZNYNR2P+UiSAE8CkE7wwg==","signatures":[{"sig":"MEUCIQDkoDlDDqVNDUuEAPbBLNuSiK7AKIr3DxQK/Hg8GgjFNQIgW6SNAWFWxztzl6zyJFigp5VLa0rB/movZiQvsTHTDSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.471","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13245188},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1926e4c9b841c02545e1923f5d9aa927c807d6dc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.471_1779221660119_0.044622588373945726","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.472":{"name":"relay-ide","version":"0.1.0-nightly.20260519.472","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.472","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"bf97ba05ac6e42267788e93829a2335db8de6f2d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.472.tgz","fileCount":457,"integrity":"sha512-IE3xJDIprKTtT1lYTUevdomQ9bZD9Ew8n4OeLHnRZ/DZDIltW936+TU1rnGOxmHKYbPg3+XiPsfGeaH1j0LE2g==","signatures":[{"sig":"MEUCIQD5muK6eoW91+Y/bIYlSpWqRPr3S72IUxHVKy6BHU8YaQIgeCnUxEJpS2t9kzIaxw7j5E6kPIuBKd3Pyv19X7JklAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.472","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13260652},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"98381c71747b7bbe8c9a707e49823cb6e3e23e26","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.472_1779222041223_0.5272769134845452","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.473":{"name":"relay-ide","version":"0.1.0-nightly.20260519.473","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.473","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"21edaf77ddfdd4a6fcd161ea3b6fb02aba82acb2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.473.tgz","fileCount":457,"integrity":"sha512-wHRLKGOMo7HR7G/DczyWWxDRChoZZFIS8E8gWCejxkgZx92Z6tE1dbq+77nF8M/UN6ebmp0UQqVsIVSg1JEAug==","signatures":[{"sig":"MEUCIBH00eEmelQ2tlmi1ep0X7oxqrv4gt9NN+b0pZkeJuDWAiEAjAJ6zlGmW1IY+2+fLjg/dFpyqmbJ9WLAA41cIu+8AzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.473","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13269177},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"37de19a7f952bd4ee1cb5d2aad4c79219859e559","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.473_1779222662674_0.8559952714817818","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.474":{"name":"relay-ide","version":"0.1.0-nightly.20260519.474","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.474","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0be27149493f1c7e64a0052026f469f472207067","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.474.tgz","fileCount":457,"integrity":"sha512-LMfu7/OWtDCKSc5q+sR4+wtz6TTKfg3SsgxeEDjL51ebzQCYceDMA6kIHFg9pg8aIaEXNbq/9IolPT4pYs6RZw==","signatures":[{"sig":"MEYCIQClf9hDzUYTBuXOvzT1gDtEf6jqfafpMkYvDGPw+W8hTAIhAKDozQXzS5KTi+LgTlsWGLvMOczyMuTwoyDGdhJUxfiO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.474","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13274309},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2c01bca8ca66b1f5bdca6b4ff3ec5534a081f839","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.474_1779224624410_0.9412357359110624","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.475":{"name":"relay-ide","version":"0.1.0-nightly.20260519.475","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.475","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"99be697b5a6c745054edf8b8bc81802073701224","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.475.tgz","fileCount":458,"integrity":"sha512-pdX0OuqoRfd0sfCg2wNHQGNfVGClbtDoWtqkjTHQ/1d7avD8TyiuazzwoyNTEsCU6ItaXaIQOZB9/wimg2n7ng==","signatures":[{"sig":"MEQCIG6X8sRpRgZTi/xBDLS7IVTJbwNrQNvBFlFb3vGCZQ5AAiBH1Zr/wyIn+nioFNzydpwE8gR8Wnz1HWAkixr6udHhEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.475","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13281221},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b6d7af1e46a9a486df743e7086ea7c1750b78f54","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.475_1779226439700_0.996066938446214","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.476":{"name":"relay-ide","version":"0.1.0-nightly.20260519.476","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.476","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"fe4d2ad6800a0c3f92cfac2277566e8cd37cd176","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.476.tgz","fileCount":460,"integrity":"sha512-Mf9kpsaCSHE8cmqZcZSXmEtDyFoZUdFVYtIGaggENHIuqurOVqBWMME8/auzceytQ5kspLWGCEvsTJ2RY8JYeQ==","signatures":[{"sig":"MEUCIHnvwDti7AZfFi1PHaAPVJ70cODKMCIk1rq+OZX5v91UAiEAqzF0l4Js7UBzj6pNX688mAJqTDgznelvumicVQ9r++s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.476","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13289165},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4d42a2d62e05b67c5902c662f5b8e8835a436fd8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.476_1779228708654_0.6664771148151036","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.477":{"name":"relay-ide","version":"0.1.0-nightly.20260519.477","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.477","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c7e0d1116644aa91cd1c20cd3b0f86657ea8ff4a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.477.tgz","fileCount":460,"integrity":"sha512-l1Cw3T9Q/R1OPgOq1MckAnzI6iFVTbuUvHybN+I8Ujig0ZzQfFXC8jWVh7kydLsfTmNGqWWtW07SrWXDyZMPQw==","signatures":[{"sig":"MEUCIHMaUcoV2kkaTPO3V9oRoUk4Dpg+8LgCjpShSqzY7P4OAiEAwJNZJyxbl4C91Ux4agW6d0LHfSOziyuq2gd2C5HsuhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.477","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13303905},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2e85dc616424a256b46427f99b3abea831108f08","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.477_1779229102855_0.7971895141585865","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.478":{"name":"relay-ide","version":"0.1.0-nightly.20260519.478","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.478","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b1710d64218ba39fa25335c8e2bdc66a0a19e613","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.478.tgz","fileCount":461,"integrity":"sha512-GVbC112PYwo61xEWfbuzpTXb9JeF1aa1s4BwTVpnX6/qfIXfM/AJd1gKeGOEmFpGuljnrXCd5h+uZL9SHwOG9A==","signatures":[{"sig":"MEUCIBmljb+yBW3Cz3kcp+ULyM5E/hgyMIBbW+PQiNFswz+tAiEAzOB8taZhTziEd8lL47NWR4fcfKYzKYznqi2nvdfDWgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.478","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13305211},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3179c0c21c354c2b7c76c17fe457da72354c6886","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.478_1779229727660_0.2839773227634772","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.479":{"name":"relay-ide","version":"0.1.0-nightly.20260519.479","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.479","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c0e9b0dde71b2b7b5d873425ea7b0b32ffee6887","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.479.tgz","fileCount":461,"integrity":"sha512-H+owgmT6uFFzrmBq4QSBW1wM5PpY2Mvnn+NYa9tjVLUQxct17/1JHYl8RQ0JhyoK/YFasNNswKLbCHUhKaFrQg==","signatures":[{"sig":"MEYCIQD5WN1m8MmuydFKrXFBCdzmBNRgfR8x8TFtjg/iRMMAEQIhAL3nulwwbXxzLpNYoUgwsJLH+khCqR8aOuoh+JkJB3dS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.479","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13305608},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2ce73875f1a64f403c7fdf19d7ef594780777603","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.479_1779230223562_0.8229319874033372","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.480":{"name":"relay-ide","version":"0.1.0-nightly.20260519.480","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.480","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"466bfb073db8deedb7f25e8749aaa532ad117f43","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.480.tgz","fileCount":462,"integrity":"sha512-h9h1lxtcuXJnWhoocGEeKk6kMEO6uwWLA5bldNouxREynFPnRH3pEvRjpPTBcVV1cKd1mC5+YuNJJDYFXLlYvg==","signatures":[{"sig":"MEUCIQCZmMURFndLZcv/hs0nhrd6xUZ6oBPrjYC7aZQjpoVLrQIgGM+EK0w1J9JJlJc5MjLqptNQZfIJ6r3rdNQZpx1B+lI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.480","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13306752},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a9131934f4174a39d62afe6d5dd5b29c5aee737c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.480_1779234503645_0.6184113676653686","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260519.481":{"name":"relay-ide","version":"0.1.0-nightly.20260519.481","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260519.481","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"66fb71f5c7635ea2d2575c93256fd8e3561c8b4c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260519.481.tgz","fileCount":462,"integrity":"sha512-1wn+H/WNQJLt7GxaG+8uFR+YOnyDeYpbwSvbw76HO72mni89msW88Ir8AGNafPDOzCWC1q11JvgghXLbdF/8NA==","signatures":[{"sig":"MEUCIQDwEVja/SrpJIKGjF6VEh2bcRbp+D4yMtQLByKSjx9L6AIgL2ZkTFS6St4rGBnLM8bPtFzduZPzUyH9Nru2VHseFq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260519.481","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13330276},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ddbb6d5de0e98873932d47e11250742036c08d23","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260519.481_1779234907277_0.6188232731950374","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.482":{"name":"relay-ide","version":"0.1.0-nightly.20260520.482","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.482","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6470b5d519a8ff95ea17e8f9dbc477e6a58d68c4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.482.tgz","fileCount":462,"integrity":"sha512-ndGV2n1q2Y/IMP2H3vcw8Uy7YagymiogYoPB6tWIEK1IBFUZWHcsXWpdEcCeJPdDCLk7lZ6DpFjIZd7ISwp3Pw==","signatures":[{"sig":"MEUCIBE/5Ikp8EuTN+UrZ7UITGQ4sw3f++3sCP+NFlVf7Ti4AiEA3L3KokcOz4/IJTcMCVINwypPDqVqqQ2Tht/iE8zqjok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.482","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13333328},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3ab052e28b3596e4f7a07913c118dbe9b099a951","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.482_1779236327713_0.5035634284908828","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.483":{"name":"relay-ide","version":"0.1.0-nightly.20260520.483","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.483","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5ea9a4f6dc03e4da6bd3d008408bf2b62815d50a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.483.tgz","fileCount":462,"integrity":"sha512-Y5IHddEVIa5AK7x1siKERROcqoCvCBuTFnQruF11yWmi1W1RAWrQ24lEb5gN9Agv92lz8OnLPcjp0xoB+/vWIA==","signatures":[{"sig":"MEQCIDRNatw1/d4mcxg0dUBaGJWIvY85Hhle5tNVKOnmUADPAiAI/LBeOb4Js1/Sg4jEkrFLtIvQW6dwOm+VWavDMMSRAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.483","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13341320},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f70adf93d80744444d84d928c1fc9df56b4600ae","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.483_1779237112833_0.04603703727304054","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.484":{"name":"relay-ide","version":"0.1.0-nightly.20260520.484","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.484","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a6d7dc1753d9e82b3ff5e57b0f54f3db798a5e9b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.484.tgz","fileCount":463,"integrity":"sha512-zIjRNJlwe2ZghhGRNJpFtQMEYfSOfStsXtiCginFB4L65oUFmb+xoAz6YquRlPDS5Zx0LBAbY6A43oSXdxw1tw==","signatures":[{"sig":"MEQCIA7PVUpESONjz54sJ6e6gqN5PXZvbOQKLWEdXkuCQ9v9AiBpw2ounDEVeo66Q/t7WpWZCiysCsvMQqj+ORyMN0CDRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.484","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13346390},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"121bf2305574e6f8275bc546ffd1a52c55774dd3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.484_1779238409907_0.09126564548251026","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.485":{"name":"relay-ide","version":"0.1.0-nightly.20260520.485","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.485","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"17669c4d8273edda48620fc6867d0fa6c11a0c8a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.485.tgz","fileCount":465,"integrity":"sha512-qkDZx6I/3ik23gECfhsq7QIStH6Jkkuo35Eoli9e2oXhM+LKtmXFT0NmCy4f0iofzozXggzjMIw9SA7tQMAtxQ==","signatures":[{"sig":"MEQCIF1f3DzpgRfdr3ahAfJa56T1Pf/i2uTvxVQ5ylmZzN/XAiBSE6olzdgIssN86O317+WYEb3KeLSTAlJQXxQ1dWalxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.485","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13364117},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6519e02e4a9ced4d4abc0b1ae551aa8cd64ca296","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.485_1779238739186_0.5582973499939639","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.486":{"name":"relay-ide","version":"0.1.0-nightly.20260520.486","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.486","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3dc84b378a4ffae4053e162c5d9a93e55fe1169e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.486.tgz","fileCount":465,"integrity":"sha512-kfv4h8XwR75g/dTHszWd9O+Fg24eosdEbo/0JxKR7RjXX3s91Nf6NJjPL9ZJd+gNX85Gm3F3d0J/Go7LdVSy0Q==","signatures":[{"sig":"MEUCIQCqQTdpcj1N6yeUz/EJqDje9j2JRXhKIUvWviT4mJ8rCwIgDZM8UBbTJH7wd8v/4EzIUaANgRtAX/QgVdSuq6N21FM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.486","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13364117},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6b950968c8e387d89e4df4f95753ec04f87ac4ba","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.486_1779239084826_0.7067361879546903","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.487":{"name":"relay-ide","version":"0.1.0-nightly.20260520.487","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.487","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7fca5d417cef622e86af1e3bd0a163562ee4e3ab","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.487.tgz","fileCount":467,"integrity":"sha512-ZkrzjtRMyaGNJrw/sU7wMTbDH/1CgiHqPu9RkWj3dogzOWXqY6d78Jh10T8EcJxaJ43vOSuMJl5fOc+816FKVg==","signatures":[{"sig":"MEYCIQCFjgiwMD1jKFywDkWjeOupFVXV8wlsGN3FM7gRy4rgNQIhALYhyaK9XLWe62mcIFYZYo5JiMzCPDJAYG/V5I3tW89T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.487","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13392587},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f2937ec773448985c4b1220543ffa63c2b11c455","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.487_1779239939388_0.7845619204760219","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.488":{"name":"relay-ide","version":"0.1.0-nightly.20260520.488","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.488","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"eea4ede876d1534c8d823fcc59d66b9ed669bceb","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.488.tgz","fileCount":469,"integrity":"sha512-X9L3ebpwR26yXHCItrwqJ1LT+GmO2Ngj/gdtiDBf/YwwUHXjCjKYPLB9l1PhrwZh4WLmKCQAVeCymlsCqFvlSA==","signatures":[{"sig":"MEQCIANKEhbtiGDXFTus+He5ytAVJLwwjSPCJY4gD5xJY7ZcAiAf7+Vpd6fW03fvu8yacp4yoWsGE99xY16LDXY8vNF9nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.488","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13423400},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ed439aa9259262d04222e0447aa73a8c68ba346b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.488_1779240916960_0.7393062944349615","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.489":{"name":"relay-ide","version":"0.1.0-nightly.20260520.489","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.489","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d7acd2213a1904dabd9646058c65228363f0d09d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.489.tgz","fileCount":469,"integrity":"sha512-oqLRQB9o5/4LduCnQ1qFyg8zy9QCsFmm6E+ZhHRzFsvdWJLzIky7k7UF/VrcrjkpDAWEG9UiiydIa6rVX78rTw==","signatures":[{"sig":"MEUCIQCN4PNqx0PxtAyZXr7slwnXVTDSLY3DF0Migzi84hHYpgIgK3dVyKeTq4vBqFmc8gvNSyP/ekdWlaTabJZYK4fvtjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.489","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13438215},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"514d9690b7e8ec79ba6ad7976cadebf57e124b14","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.489_1779242753159_0.5072055999423737","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.490":{"name":"relay-ide","version":"0.1.0-nightly.20260520.490","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.490","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d3f93604b3b08f27e84b59685b5de835c13638dc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.490.tgz","fileCount":469,"integrity":"sha512-nb+8W8GgYHjKvhgyHR0QXa2S5nkfGsPA5LikPWlgYlI7vfEVkuRqDtkXF7ZQETpAom4Ow//qZIJBPmhmYTsm+A==","signatures":[{"sig":"MEUCIQC5Kkoitwlgi/S+IZRUH4k4c6zsHlqZFIpT70rOS8ucwAIgKZNOm5Uva036OVfA4ephPVmchE1jLfcb5eGr5//bCco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.490","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13446555},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"91d1f0f6ee70f10d60ba521272875fa15a577b8d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.490_1779243399735_0.6774763159481367","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.491":{"name":"relay-ide","version":"0.1.0-nightly.20260520.491","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.491","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"eeea2eb35e88442ab5bfcdd0b70df0fd5c38cdd5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.491.tgz","fileCount":470,"integrity":"sha512-pYJwGcjuOW1u/KbFBE4aMLBVwCDRHPdO9CQxPRNmM/htFMz6SmFER6bCQvpJXFRykeExXxWK0fLJb1bWWTOcLg==","signatures":[{"sig":"MEUCIGl8/fd6gvNO7O3rtm11kfxn1jfjBN4aVafNs2H4lwtDAiEAlPpZ8PMrq3PYMKuLgbW5pd6ZksBxKuMs2Z1mpTmqKlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.491","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13454390},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"099c7d5db6fdb7d28721607c09080c11691c0f97","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.491_1779243716480_0.1576401670444425","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.492":{"name":"relay-ide","version":"0.1.0-nightly.20260520.492","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.492","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e076fd3b9454035663d3d6b503aefb4bc11cecf4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.492.tgz","fileCount":470,"integrity":"sha512-PG0iUk3BM+e/2VSmWlxhrwuaJ4nBYz7OWQHhb7sHaGubqsTVqBepA6rpAUkHHyGxaAnYpn4WXg1MoHbVoHSNLw==","signatures":[{"sig":"MEUCIFcVYn6X/wnQjL2VzNe+EdmyC04qYrMeJbQb8ljmA0IBAiEAz0JN9wwQM7RYuH9mw69UirYyuivAMBCwf0rFfV+HQXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.492","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13456027},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"17d0b0c8924b0471c306af7d787e351c22398718","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.492_1779244632496_0.778857765975729","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.493":{"name":"relay-ide","version":"0.1.0-nightly.20260520.493","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.493","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"331ee4aea1f1c8fbb910092259bfd928607f43b9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.493.tgz","fileCount":470,"integrity":"sha512-T/MyGpgrshh3g1DL3jjt4vapTQ/aJHw3CXd2BnpKPtNcV8zKoUnMCMQUEY44VdoeNkOa/o6V5z1EQ63CO7PRIQ==","signatures":[{"sig":"MEUCIDBdobl4KCTDazY12JUHe7MQ7T14ojjb07jx2ajBv8EMAiEAps1p7zMdixsimVdLj7tVX9ThMRrS/c2kkANovn+4bBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.493","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13456027},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c83ea2d025d3246bbe3db6a7674dfc23087fdbc1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.493_1779244976780_0.7610110236042227","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.494":{"name":"relay-ide","version":"0.1.0-nightly.20260520.494","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.494","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7b166871c599c1b01eb0993acb6b8e13e218c942","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.494.tgz","fileCount":471,"integrity":"sha512-1GMcY4RaNaTclX0hnIBZk2wwkTGVOXy1WSNv+SPGVjieRfuIOardgPss+1+0Ytqi4JL0s6QL+GGxIsdm3owGxw==","signatures":[{"sig":"MEUCIGjZAbrc7ajAYpJrUwvGVpvS6gFSWw+2eb76YrcT09eFAiEA11poBmUMMEWH4eNzrCvR+RyBTfOBDxVtycgbEJZGWxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.494","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13471573},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"db2377365b84fd67fdd5cf6d89cc33e9d04efa14","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.494_1779248741877_0.16037425592711663","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.495":{"name":"relay-ide","version":"0.1.0-nightly.20260520.495","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.495","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"fc64a00e092d5e21528d96283e461fa967998f87","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.495.tgz","fileCount":471,"integrity":"sha512-xnHm8ynaSfEmSNdz4LGvgYvNveQQ5ujBd2zdSkZb6joxdTrlE4jgvAxiIuo9mFEpoHmFANTf3LaPPKPTH0ca9g==","signatures":[{"sig":"MEUCIQDphoeenUvULwCfbX48mLx4Neh3FO99Jl/mhOMOB7XZDAIgeNoU5xlRHtb1hIk/1dbfw+lhLdG8qEOpRbj2i27sJJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.495","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13472341},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"161e0b017bd2a2b061a5dbf8246a2329818cd15c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.495_1779249171548_0.25469149335649655","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.496":{"name":"relay-ide","version":"0.1.0-nightly.20260520.496","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.496","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0f81cc895d1d90c4e4052241d655ba0e6301bc1c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.496.tgz","fileCount":472,"integrity":"sha512-x/BeSUM1kGRxu+Bv+RP+hRL04OlWuzxd0nSxzT3WANZO+duVGPnycMVOUSijsylZOlOYHhfICtqXEUTMfppRhA==","signatures":[{"sig":"MEUCIFdq24Xxl+VsV9RZCblyyvD5bF/WeF8oIPV3BWNbEZz5AiEArZIjNrs/LLj3UbHqQnIMij6OyChkSyriAS9GZCPjcec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.496","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13475265},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e5dc0cb79215399f0f69941642e0766e8e1c87fa","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.496_1779249461256_0.7397697321990717","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.497":{"name":"relay-ide","version":"0.1.0-nightly.20260520.497","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.497","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9bd44e3f1ae79d867670272fceb5f201701bcdf3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.497.tgz","fileCount":472,"integrity":"sha512-UdHcItS+Dg4aSan+PqEAAVx9X7eqiOv1Q2MFOPM+9+jT7EOAD47TE40kACB8HlloaMsuZjTCqAQ7Ar4sj6HgoA==","signatures":[{"sig":"MEQCIAhWYPSYgzAttbKiOxhI8Mr7TiHOnWK8qbrM/ZS8a26QAiBK6Y/CIQ2zc0JTOubAS539+QRE6MoUCgcqnk4CmABxCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.497","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13475846},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"32ff83b71b7a910767768bedb10438e7990d9d6f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.497_1779250238040_0.645341965124437","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.498":{"name":"relay-ide","version":"0.1.0-nightly.20260520.498","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.498","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6c975e195da1e14c0483c7ffea0b1f9ce0793b83","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.498.tgz","fileCount":472,"integrity":"sha512-BQglRxJ74Rgo9iQ7qt7FuSn6nS2QEmY334XBEG4vtQkIoJPZ/Wi6gaOio5wlJ1pNFzVtWeplHWLuinLy/WvHog==","signatures":[{"sig":"MEYCIQDGIq5Xpy3yR65opUfc5PCitYhSSPfD/BHBesttqz84mAIhAIR8+/KAKa+V/Wa5t3eDwKS4DwMs60sxRvBOG0koMZCa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.498","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13478276},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0ea8a716a0e016cb83251b187277006b2802e518","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.498_1779251074632_0.2908008196700105","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.499":{"name":"relay-ide","version":"0.1.0-nightly.20260520.499","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.499","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a48a9373558279f488105a20922685138bfe243c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.499.tgz","fileCount":472,"integrity":"sha512-/kn6Wam5SxfM7W/AHDs6uJ68PGkBi//RUQtsfdDy/n8GO7zrkUnT3GgD7Ivlb8oY4DDqU8pkrshbURjlDggqyQ==","signatures":[{"sig":"MEYCIQDCa0LDLCcWT4GJU+hBZRkWzaoHMJhdZar1/tbnqgsS1gIhAM7nE/a04Js3lMN2hiNiQOxzEsdkh1ZjY9ORoiZfyAfB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.499","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13478276},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"dbd16629387595334bef94046dbd0e636bd8a816","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.499_1779251493031_0.4276233233982243","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.500":{"name":"relay-ide","version":"0.1.0-nightly.20260520.500","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.500","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0452a3a5327c95c2de5fd9d6eeab331e94f37a3b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.500.tgz","fileCount":473,"integrity":"sha512-7/VuCiDgEI8e6kmG51k+p0g1ZYoRLhy8On2tz++Ps9ZUggqyMv030yyZQJXh0tZG+NCBxjbggvWYSDYuiueA5Q==","signatures":[{"sig":"MEUCIGsinbAozRSCSpIk56feRO+nsZtE/mehQJAASUAlRdLYAiEA+sLNvqcDKS65OE4F09nPtRt3O0d6D9v2i/I1Y6FKfOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.500","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13484665},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cc426be4e90ea26502799a5a4cc4cbe6a0593494","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.500_1779290064689_0.3073865877856252","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.501":{"name":"relay-ide","version":"0.1.0-nightly.20260520.501","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.501","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"474f8ea24f8572a94d8324272741bdf1e4ee4a21","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.501.tgz","fileCount":473,"integrity":"sha512-M8sawWPRLU9H6m6wLS1si8O2QcAWjQhJ/n0fvmdA9y0mnb4CZd/lgLZ8Q8MPiO1p4CAVBeUQkv2HKHDrNhgrFg==","signatures":[{"sig":"MEUCIGJEyrF/+1xbSq3NT3GtY5IbXLqPDUiMPyxfd1rLgWbXAiEAt7VksYVaTgxyxuj4wboDSCjm69N9KcqDeABosxF70B0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.501","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13485158},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c6e2c9611784d2e1df4c05fc4dd0c725923d0d20","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.501_1779291355309_0.6175303567300265","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.502":{"name":"relay-ide","version":"0.1.0-nightly.20260520.502","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.502","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9f84bdbab10191c8d6ed993e1aa4d75ae134fb6a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.502.tgz","fileCount":473,"integrity":"sha512-A1BSwcLtYamh97gVaKlyBNgufyHo2R+dmqdhwymUXCYQQ1jB2dXjp2MQILDw4CnBGz/sVcFhOGSLKy4mOGetFQ==","signatures":[{"sig":"MEYCIQDjSehQNpfyFKGvB9mMffcRIQLFUCCjSK//hl5jwG6KuAIhAJBP26wx0RmjXcd0SbnTYmewUGZ/mOqvT0lf8ZsHLVkZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.502","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13495032},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"70509ccb96e12744488512fbe03edb259c32b0b7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.502_1779293432655_0.9825931817595404","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.503":{"name":"relay-ide","version":"0.1.0-nightly.20260520.503","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.503","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"52e1353570f6f99d678590dbe88056c853ac26d3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.503.tgz","fileCount":474,"integrity":"sha512-zz/ZU3JUMLXJL+e6vr1wrLVywcqgC5Bb6LDlIyJMMXp2SEEm9MM9hxFpS3+KlLhz4SBd+Ihlkkes2n7c3tKxbQ==","signatures":[{"sig":"MEYCIQDde0VRnVHFLAxY71rZVXl+ye2kf6y2jidRj+KR5Hpi9AIhAKzqWeyA6kOhoA/5ykllM7DW2A3v/wU1clTobRMXrLyM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.503","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13507379},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"de5941600d7988d4c4795351c0ded4059447dadc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.503_1779293835404_0.8821829528485441","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.504":{"name":"relay-ide","version":"0.1.0-nightly.20260520.504","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.504","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3cc22a071179ac79ed90acc1aea3e7433881e280","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.504.tgz","fileCount":475,"integrity":"sha512-VWobkP72aeoV9mQ0P0xSttbz4DKVrqKDGznQ8oHZN48XQnGSXCxUqHJixxxJRMzJI0F33r3nPTcqD156GBVpwA==","signatures":[{"sig":"MEQCIAae0HlnNQ/b+KKOmYbiGpcPMX78/+o5BfGzvEID1VweAiBbgcPjdRwgHJ+I1aWmmHJ96bugkrz0JhFVZKeaWZdWfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.504","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13525794},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bc6bb2aa6870b85485a15f968bfd05494c7a5e31","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.504_1779294420532_0.24031565281729494","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.505":{"name":"relay-ide","version":"0.1.0-nightly.20260520.505","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.505","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a05e039892be3c4d694139320a603a2b1e97b34b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.505.tgz","fileCount":475,"integrity":"sha512-IiwR/BOspzDzUWXiVYDJYAnG0uDLqigKYnQ+B+rJOMvEq1dojHuAOg2hIEjTUGzZJ2t4uEt8cRlILiJmtklDoQ==","signatures":[{"sig":"MEYCIQCG5YdALsxP56ns6I//E3OGOeV3xLQStkWxTzCwV4kaQAIhAIUQm6Ml5RsEbmODPaYxHZ9/hY7dnxz/n7MN40FThGyd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.505","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13531476},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3562f8faadcc991ad3450deaef9a553966a05402","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.505_1779295322986_0.24320632823436394","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260520.506":{"name":"relay-ide","version":"0.1.0-nightly.20260520.506","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260520.506","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"54469a965ed6e506831a739905251603cd2bbe16","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260520.506.tgz","fileCount":476,"integrity":"sha512-6LmNAtkwf9CLZHndxCqqWLHaw5qW+73KLzxbyXNK0CLWFg7ErxSIksce8pENf6ZyZox1ZvQfDxrsAO91xmsoRg==","signatures":[{"sig":"MEUCIBmZjTs1sjm8uX9oofdh4l+vbyNtO9IqiraAJCJwuLVYAiEAqm+ft5P8H1QtW+UQOkO4kVEw6fJiH7F9EeqY7VZQifE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260520.506","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13536913},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0d01954e6c8144ced7d15b3ca8754aa3836d34ca","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260520.506_1779310243956_0.7409378366145629","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260521.507":{"name":"relay-ide","version":"0.1.0-nightly.20260521.507","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260521.507","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"349f85f507db63ae43ff3a42e7d809f852a9a043","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260521.507.tgz","fileCount":476,"integrity":"sha512-eJ8yepGrklywjWp/1OonAR5tw6hBI2QRioJ0O5KR9pXzVnIDgmwCJBJAlmEw1080SKZB75vk+XdzGvC7AN5erQ==","signatures":[{"sig":"MEUCIGUBJKyQ9ghdiPUs8/2stN0KCfQ1LluSIOfmnSBK5WPLAiEAub/VAoGC1aXTNqXalDnYM4pQTyphdonSgVK034ubVQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260521.507","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13536913},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e6ca5ce169d1e8a63de684ca87d25f460fc19533","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260521.507_1779371341333_0.8044965180983576","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260521.508":{"name":"relay-ide","version":"0.1.0-nightly.20260521.508","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260521.508","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"85db9a0b718b234a6ce33fc1bf70847234f771af","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260521.508.tgz","fileCount":477,"integrity":"sha512-DwNjeSArVyPRDV/I2RNtgBxmJdSPGtQnwJdOs71jnjeD/y6B/PR01fJO/AqbzR6pm5goVwuvIMQM9VgPsUCQPg==","signatures":[{"sig":"MEYCIQDvj4V6IPWcJ7UwF/mRVrl+nipB5rwJ22XVrgT3fDcWhgIhANf9Hcn/0eSHQwl7ezOIYWAfd+Zzj7WIFc4Qmscpt0gX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260521.508","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13554266},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5791aa4db4c4c18a763b52886a61ba5ea6700f4c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260521.508_1779374776475_0.5315550797838764","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260521.509":{"name":"relay-ide","version":"0.1.0-nightly.20260521.509","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260521.509","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b5ca0e905620af1c65239b7966fab6e5db728e1e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260521.509.tgz","fileCount":477,"integrity":"sha512-91Rto4sC3W4KiJj0KHCuELwPWGbjbPHt5pce3E3YaG7ELnJDphHiPT283612RTf9xp0TGfcnoncV+hWEbA3+1Q==","signatures":[{"sig":"MEQCIGYdTpa3XysET0VShRG7Ki48bwPu070q8ihEmkqTYz3aAiBINIenLnDCQz41AF+tnv4/8ssfRQd0JAwnC8xeZiSHUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260521.509","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13554299},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3ed56a171567a96d7caf94cef71a2d429689f8dd","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260521.509_1779378561397_0.5326849231966382","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260522.510":{"name":"relay-ide","version":"0.1.0-nightly.20260522.510","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260522.510","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3e5f7acddd95aaac2f004c9564ce893ae792d6aa","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260522.510.tgz","fileCount":478,"integrity":"sha512-49XOUdA/K3mO/49ep9WTotxr2ll+casB8ZZNCOzEZkEOufUwLd6Kv/O5jSxarH3adDNBFFlk/ngecStxqALNYQ==","signatures":[{"sig":"MEUCIQDgUu9muV5flS1yEWeiy9zM81iB3MRSQHo7F3Z9ZP4yVgIgAleV2tbL/G958AGVul9FqsEy2cyrzJQZzA+BD/BuRl0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260522.510","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13571584},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0928ed4dcd71b883462cc8a7f4804bc06747aaa2","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260522.510_1779409485993_0.320975083103783","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260522.511":{"name":"relay-ide","version":"0.1.0-nightly.20260522.511","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260522.511","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1098234a93dfcd20aa3ac6848ff592ee6a4b1f66","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260522.511.tgz","fileCount":479,"integrity":"sha512-eQW7ZjjUAnFvS7WCUa3AKCN0sESboEMWISaiOdZPoj+SMGYHsLcbwygstqairksU+7ADM1cu207PC1DffGcmow==","signatures":[{"sig":"MEUCIQDYKw5vvnLbO4gl9Q8+hxt0YhdjXai9vEEcyGYthaqQFwIgNxirfJYlCV4VVajFoaMKsEa7AVg/QuW0qdPSXdDqTeQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260522.511","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13594223},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"29ea6904631cae48c5be5bd8b2c5d898b71010bf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260522.511_1779411166612_0.4884698991293275","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260522.512":{"name":"relay-ide","version":"0.1.0-nightly.20260522.512","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260522.512","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b96f6a0ffba7f60f28ef21aa099794cc02e51b67","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260522.512.tgz","fileCount":480,"integrity":"sha512-FJiElTBVPC3RDc8fZLmvR81oOJaGW8t/HlWmZS7FCu59Xhs+K/Rnn1qwa05YzW6sdpQ+XdwrtC5CkYYV2URNQg==","signatures":[{"sig":"MEUCIQCY5vhBy3hBsnJlqeoDvAGKfnE8b1kB/uQqZFMkgifikwIgSM5CcTOAyiiM1Np4eZ3UG8RoAwKKOIaiLWf/zDZ4rY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260522.512","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13608877},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ec036c53bc47708167c80751bb8ec9a29e08910a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260522.512_1779414289955_0.6426525448031886","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260522.513":{"name":"relay-ide","version":"0.1.0-nightly.20260522.513","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260522.513","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ac93b55affb34f13db6e35b4c1de1dc0405a342c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260522.513.tgz","fileCount":481,"integrity":"sha512-oqrN2kVtIocLNseLvGxnLWQWhZY7urLw+ctV6K5H5ZhN5Q0qxZrzbmWXtvyTqfFNYmX20OJj1rYPboumgOUHAQ==","signatures":[{"sig":"MEQCIEF0sEZAD9phKSB8mQ3LY3Uk4pC/9kJ02ghFqT9nDH70AiAel4Wtgq7rfrjIKe70rbV66dfHveN4Zx4fzcYZOBSNaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260522.513","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13631388},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"74e3138c9acc9237bf2a67385dab0f3dbb4ab3fb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260522.513_1779418726041_0.45389351946893997","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260522.514":{"name":"relay-ide","version":"0.1.0-nightly.20260522.514","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260522.514","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5b7a733d321a11a6851b29b8de40a3b1846d6dee","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260522.514.tgz","fileCount":481,"integrity":"sha512-IOWIADoN534p6PgqG7UpYzEekvBdmJO47iG9im1e33JhMzkTx+dy4BESPMaS4+103cH0pXiVflgU78eDoEUbjA==","signatures":[{"sig":"MEUCIQC6ZNY69G4QEvVAyzFvyNLT4u5V75s396WpG9OHoZV1cgIgNa6Y6gKohJnjNJTVCsTMYE4IKxGOa9Q8dnJ4iYPkA7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260522.514","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13649953},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f0202103e02892bca904af48d8048321eb3a9da8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260522.514_1779421857121_0.8883684043473554","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260522.515":{"name":"relay-ide","version":"0.1.0-nightly.20260522.515","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260522.515","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8a337b1b1e4f34fb696dedcfa8bd5ed162b5c2a4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260522.515.tgz","fileCount":482,"integrity":"sha512-cEB4M6tOODd8/UiRAuIGHLjHTcX2MxWhznOuBLzE4FycyFdQN+19uYcRBnBQck7lrvrN1m+I96WVueeLH41DyQ==","signatures":[{"sig":"MEUCIQDFLC2gNXDTReZaSqU4wVD1Fi1k4+BCGQNiIc9KsMfIPAIgKsNfmJHAegohYv4tElE3wP+j+0Zgj9Z9jwxd7bpUSho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260522.515","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13692900},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a9216015be9b7ee3fa3991250a426ad98e838d91","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260522.515_1779425630747_0.3002682435195161","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260522.516":{"name":"relay-ide","version":"0.1.0-nightly.20260522.516","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260522.516","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4141a44695ca221dd31044fd05fb18bc4760f12f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260522.516.tgz","fileCount":482,"integrity":"sha512-iLYbvU18L4PJS16dWulAWJ5A+nhKOfzaavctUFl4PVXzXaId/b7Ej7mNl6mBDpiIeH8TdrStq3L2AsJ40rLXRA==","signatures":[{"sig":"MEUCIQDjuRBOWFE5r2pMP6BZfgiV9HB3C3QC3GLoNVtd9TNmYgIgA5SBAPMPSzryVowUBRnzyj6pmbRB5HlcoOvCDfNCaP4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260522.516","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13710029},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8ee37110a8054e09ec133a4896882e2394e85ee1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260522.516_1779428226593_0.006245270121248536","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260522.517":{"name":"relay-ide","version":"0.1.0-nightly.20260522.517","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260522.517","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9ae8f11cec1d6ef8ca841f480e73263b01ec5153","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260522.517.tgz","fileCount":482,"integrity":"sha512-/oUI27CHOreV1C6VrQRt5HZ3/bS4LjPrhafooBkoobZ0WmbG7VtWy9YxNiHj9CaJSFeI8C+z05VOHy2NJUicMA==","signatures":[{"sig":"MEQCIG8dUDTiJ60dAMOBi0DlaimH78OrgRlR6E73pXPHCp0UAiBtPdM5bxVpbHbrVkds62bK19fypLxAF3dMqEOnH8uMNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260522.517","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13737691},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b900617844703dfaaf19d84d751e825da6977a5f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260522.517_1779430790091_0.2589422632434826","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260525.518":{"name":"relay-ide","version":"0.1.0-nightly.20260525.518","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260525.518","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3b137e332d5c8e9ab5feb1d2b11ebc8cf689d988","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260525.518.tgz","fileCount":486,"integrity":"sha512-Dum0dY5Jw2IVsRK/xE3kPulFoCGOvXQA017BA3v8IRpfrRqqonbE/JUsvj/yRWCtwCeEcpLZ4o7oW05DC2LTFw==","signatures":[{"sig":"MEQCIDVs6cakZYpMgsCBcVQlOTn7A9ce96EZ8KWipeGRrV8DAiBdJcDClCRZeVVIep0foAFlsTwpLMC+VZxc7hN+6SLMtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260525.518","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13764065},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d914247f56ee818760d27cc765920a081a29d6dd","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260525.518_1779744995066_0.5647653430505755","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260525.519":{"name":"relay-ide","version":"0.1.0-nightly.20260525.519","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260525.519","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1f2fa2d005594ec0fcefb4fe0861f8a593c44fa1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260525.519.tgz","fileCount":487,"integrity":"sha512-T3Undsx9haLtzn6XdyvYDOv9RfW0c+M43Bw7v8AArfejATfjOCmj0hIP5DafSrhdMc6NaeLWl4fL4se5L9fJqA==","signatures":[{"sig":"MEUCIQC4Tb6Gln+w/c9u63gTVG4UDBL3Yj1IbRtbUfX4CHRdAwIgJSoWlhaychgdrxmYVMt5YdFblrW6rZvAndsBkhOS4rQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260525.519","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13796440},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ee79cb9a1f3e38437306f044e2d891076d7041bc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260525.519_1779745272549_0.05036447951103895","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260525.520":{"name":"relay-ide","version":"0.1.0-nightly.20260525.520","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260525.520","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d8d003315de0c0c48bb032b8f913e08c17233d31","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260525.520.tgz","fileCount":488,"integrity":"sha512-vv9GceROfpOBmWrXWAaNcnjeRksavXOm2Id1o86zC3V412dCvy910mozyHwQytRCmREPYYuie40rTLNtgTX1Xw==","signatures":[{"sig":"MEYCIQDSXdbXaTJdd/re5fnfx4VJhM2WKD+Kqn+2UWjJpHBrMwIhAKNiKgk+TzE43TlmbY3UOD8bvNuT/RL0Mn4gGO6mWqYX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260525.520","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13817565},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7639232b901989af78c51cc1f42cc3c6b6f9a7c6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260525.520_1779745671390_0.7524382809694445","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260526.521":{"name":"relay-ide","version":"0.1.0-nightly.20260526.521","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260526.521","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c316454535cd8aa81b4b2800d599a6569a30093f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260526.521.tgz","fileCount":490,"integrity":"sha512-9N6Z3SW6hPG+lLGGw3uSbwIJfRVXpr8sSENCrWsvESul+/KI0l9Q2lWc0ZuYCb+IsHdA+RDdGTlb8EF5ermWtg==","signatures":[{"sig":"MEUCIHMZ7y1VXFpw3vtsRC7nRjaPsY3dScXqi7OIAiJSwndjAiEAlsfSkOs7NGI6xvK+YMQlRVnCHUeojFNO+oa2g2DoxCo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260526.521","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13827427},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d6e336c6a2acef515c68be5f7448835364324cf6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260526.521_1779833795985_0.37330753777094094","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.522":{"name":"relay-ide","version":"0.1.0-nightly.20260527.522","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.522","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ae25b6a5cba7db0b7be575ecc140b9564f9cc7f4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.522.tgz","fileCount":490,"integrity":"sha512-3Y9Z12G6ANjUak7+Acbl0c/x2znynqa4N8uA0hyH0sj/kGZcZrqkYlFXbi1AkTcxPTE4BZ9ZTUyWh5KJW5iWJQ==","signatures":[{"sig":"MEUCIGKgVwG3TGFmxMBwAUbWGDI8Y5Dx/henUaR1ok40Mk/DAiEAmolKlocVF/So/7z4ZRf3ApMioiUr0Dm9A+i6bu3zq5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.522","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13828128},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5e49fd8f0e6b8e6ab5d9756ade8d9b2ab9dc520a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.522_1779863351924_0.814350168794088","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.523":{"name":"relay-ide","version":"0.1.0-nightly.20260527.523","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.523","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9f26cfcbadefc2d33dd6a822f61fb059f88f3ca3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.523.tgz","fileCount":491,"integrity":"sha512-/koEQ7DTSZWBc7grU7gFYjsXX7GMu+fTJQDoecy7nb9wYPzjNyp2YZuV9TxJSH/R2AzcZhtI4No1Sx5gCpBHWw==","signatures":[{"sig":"MEUCIFZ9Zf8iMJ9nOcH2J2ciTYfjobIP1mmq2x0ms/KAKjreAiEA1kD2D/yHhgH2U2pftAhoMZXnrUFU9QeiFh8xQwlqe3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.523","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13841582},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"51b0a6ee3fc6065fc6f0c55a4e4314a006a4f370","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.523_1779872231477_0.07968935451684911","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.524":{"name":"relay-ide","version":"0.1.0-nightly.20260527.524","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.524","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2547a0a9885b706a807edb19d9cda4c2d5850611","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.524.tgz","fileCount":491,"integrity":"sha512-P+D9q/Coa/wnvmmYLQfPGrFXGX0PVr5TsITckK8LfoOficDY0GaDLTa5F+zDWdnnzk+ZT+4IAplFyeQRwTzPbA==","signatures":[{"sig":"MEUCIQC4bJrIhUlkEvIPNl8zye1rjA14zCjzNRdG55bj7lqcNgIgKkfjtT7zkxaLS0Rbk0NGDZz7zPsjbVgqq5U715w4x44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.524","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13855736},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3dc017a046f8d2851088f2f82f1c29cf617d226c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.524_1779873508664_0.8993727693487108","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.525":{"name":"relay-ide","version":"0.1.0-nightly.20260527.525","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.525","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"bfd321899c9dc6ec527d7b88bcbe20773d166bb4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.525.tgz","fileCount":491,"integrity":"sha512-ArBajLe76qSLLa575h8vvAij/zMu5AizUUNC9GRS1xTf3MW79UZOhLgHCLNOJIFqV/r3xHtx/JkndNVGuY6LDQ==","signatures":[{"sig":"MEUCIQCRU1izCDbb53BQ78MJol9RfmCVtw06zNZJza+a+4pp5wIgZl3fsn8CMt9NcmyucWA5vPJBb+wbFYz+UJBcRn/24CM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.525","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13870713},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"13b2ce9ac3d053486d5a1a6defccc59e569ce97f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.525_1779876645775_0.9642876793607413","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.526":{"name":"relay-ide","version":"0.1.0-nightly.20260527.526","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.526","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"548b8d5995e2411227afb176e72da571c5ff6d6e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.526.tgz","fileCount":492,"integrity":"sha512-p6SP6rK/1iQeF03BfssJDpD/jRIrO3vYb5jTqjh5DmforQ/iRCSxcc+fBqxEtlNWmkicNGBJf2+yOcB22xQnFA==","signatures":[{"sig":"MEYCIQDAqaR5Mcjv3OSIrjpMXtJyaC7BBW/JTCznuGQDR9HpqAIhAI3Gul0RE2uqHLiaYHUk9uGCQYyZ6TFD8Xop+dihVf0I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.526","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13883636},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"00402f3258034811cd92e5ac3a07eac511af036f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.526_1779877770439_0.647083700949679","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.527":{"name":"relay-ide","version":"0.1.0-nightly.20260527.527","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.527","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"abc7599c46a56ea9d00070ece7dd255f05607320","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.527.tgz","fileCount":495,"integrity":"sha512-oiSk54iAvNPdf7vGA+0oqSVjd6M6R7IMB7qrBBt8FrsBMGcWb+iJQ8hnaNONaQCeENY+zK7j5YNb9N0uEpRaCA==","signatures":[{"sig":"MEYCIQCdUEz5G3NRlLCHFT3YbeH5tRo0V8qO4wCl0haN6LM2mAIhAJKmPKUaFhaqy6RXjmetmRDzaudGfJTteNDsY498Hxft","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.527","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13913910},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ceb51d5cf0a94bc3c5d4921a0c5fedf479f4261c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.527_1779891329204_0.8934900935173433","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.528":{"name":"relay-ide","version":"0.1.0-nightly.20260527.528","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.528","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5c57b894e6cb5be38cd7cf59f3a047f812d9c048","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.528.tgz","fileCount":496,"integrity":"sha512-uoTY1kIycws+jHUrZMFCnGBtDAhZFwR83da4AxDVmvZ2412QRimOAFGZLDfLNoLDseZnhOspkxOzo/YRfW+QEw==","signatures":[{"sig":"MEYCIQCQa7LnMvDvUxsl3Hcekp4Dnv7D3hhPF45QxTK+QZWHmwIhAMrR77rrepgUkc6TrOV0NvGw8lP3pIy4diu+nSm8FCgL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.528","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13926153},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7b16495b8153f9d614034a795d33587422787bcd","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.528_1779892176610_0.9007449406063104","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.529":{"name":"relay-ide","version":"0.1.0-nightly.20260527.529","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.529","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"fafb71e616430f851fa9f0d42c0763da94980868","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.529.tgz","fileCount":497,"integrity":"sha512-lN6jsdSuDKrdujnep2lzDAqqsBD6pnV1RdM0Nvzr454b1au6m25u/077CIawL9MyliOLkJR05fAYF4A9Ill8bA==","signatures":[{"sig":"MEUCIH732cSSanyWc0+ow5TLRiA2tZX87gKmQxfbW+tHxZSIAiEA+EH5VaEgQZRbjXIatbq3UlJY/xn4q7HCewDUSFYsdkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.529","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13935004},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b7d22634ac2537d781f05fbc2b352fbd25285e44","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.529_1779892558614_0.21084623888025567","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.530":{"name":"relay-ide","version":"0.1.0-nightly.20260527.530","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.530","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"82e79c4c55abeef7800411b0f6298667fa37ad91","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.530.tgz","fileCount":498,"integrity":"sha512-PBpCy+6ocxFmLXVYERNMSfOXiXI384no93duviTkqPgRb/rvTCpEILo7f+/Ri51E1obY8r2avFbjs2ahvDybeQ==","signatures":[{"sig":"MEQCIDRtr41EUJvj4+bIwqyzHJkUK4hiGDlWbvLKA9aR+xeYAiBfnn9Ki+8a8Gv3uIQbfzae4+Xd8dksOa75XcXmRSSk8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.530","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13939870},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1b61317b1f90c974c8eb3fca2f06b9d681570982","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.530_1779895823365_0.7289434067627161","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.531":{"name":"relay-ide","version":"0.1.0-nightly.20260527.531","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.531","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"87773fef691352e8a9b0516c40d03ea7c9e5c8b3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.531.tgz","fileCount":498,"integrity":"sha512-lu+pWJNkdYf4V7IWAnKEtvo4o95rXHWAggMNsHTPekKIKYfsg54L3l+WKe1xeIqU1sWJF6+JsB6DlpcAoqIsOw==","signatures":[{"sig":"MEUCIQCZYxngeBHwVIkj5JYVcOCNVvjSH4mtG/zEp64c7X2xGAIgE8lnkkMYbEHAfKZywUjnD6DmCkh+iCdaReHBnhYhdUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.531","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13939870},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3d47d57deefab3cb0f82570aa0177da8cffa1f87","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.531_1779897045669_0.22680145637879257","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.532":{"name":"relay-ide","version":"0.1.0-nightly.20260527.532","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.532","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e1a2b26b9ced09b0accc939c507fe4a3d888abd3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.532.tgz","fileCount":498,"integrity":"sha512-CL4t0iFd07knFg04oLw1W1XHOFqtYNltFcBGLFn3J2Efo1wM3rAdcnhv06F/lDOZid5fiOIB0RjAzm4mG6KBkA==","signatures":[{"sig":"MEUCIF2FaGNp2QnMTeF54aBo0XAVMTET2y2XwPVGa8O3W1UBAiEAnB0mIbmAC+VwBcZTNO2VWjIMdfCan2WY+pH/gcY+NxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.532","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13952412},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a3b2ce3986764de5c9f1bb4b138d4686e2ffcd30","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.532_1779897552694_0.302727123603189","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.533":{"name":"relay-ide","version":"0.1.0-nightly.20260527.533","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.533","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"88de79434f29447bb805820bda0dee46abe42a95","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.533.tgz","fileCount":498,"integrity":"sha512-BlsYv66D1QdRjOb8uYA+FGuKoNjQRoriyc22eg3LEe9VUeQZS2Fz3FAiJhehAPJ4uB07sPuWU8+ACMjNW5UAug==","signatures":[{"sig":"MEUCIQCAfzm+v/Y0lojq9OzHKMsw9TmKwdNkAUDk0YLwe7ZmjgIgPTh+9CVQaJk22c96NtOuE7wnAlXs1OHaPlnY2J+tb/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.533","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13952412},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1d1e6bbd0c0957e05cc9b8120a7a18bac4b11097","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.533_1779898773859_0.18249903060404704","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.534":{"name":"relay-ide","version":"0.1.0-nightly.20260527.534","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.534","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0afc9542c6d6005ccb1a036659487126b393296d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.534.tgz","fileCount":498,"integrity":"sha512-ji+qK3eKMROImIMwPoeJAxs2xFH/7jpX6eWJGKSNumbX+jSOA+ibPstDkQeaA6vw3IT3g4fVKWaP7Dg4paSXMg==","signatures":[{"sig":"MEUCIFm/RV8JFxKUO/ika51y8apwPc0xrrAcxHKQO0xReQNPAiEA88y3HeL6xwmUByvbLvzr9sqCGA+pS1uebllZGkZzbEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.534","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13965594},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1a92a5d1971ce4cee62c5ff2dc4133e6ceaa66af","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.534_1779899046886_0.9628891542406621","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.535":{"name":"relay-ide","version":"0.1.0-nightly.20260527.535","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.535","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"de989e207a527487456749a67d74d4212d61ee25","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.535.tgz","fileCount":498,"integrity":"sha512-IA/bVPL4NgUnmza9lPzLSES6RRJp7/vvnFmact5b+0ejkLHU0BU8KJjE4X+rWJPSRGMzTJ/3pAdB8c6uGA7NHQ==","signatures":[{"sig":"MEUCIQCmAJot/fBRF7Me/PzPRe88sHW35DqK4/YGBUtoxsNm1gIgQ7owdK/QpY9K9aXXEMM6rSXwEeui79YDghZpvFQaJEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.535","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13965594},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"32b4a371a42e29e7d4e4bcd9fc508beafaaa4c53","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.535_1779905676877_0.9909454222013829","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.536":{"name":"relay-ide","version":"0.1.0-nightly.20260527.536","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.536","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f80f42d88880a18af3b8705332c82cc106519af4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.536.tgz","fileCount":499,"integrity":"sha512-iiPSLU2AM4kz7FtbBv43tEl8SijeHw8YQDAhhJSk6a0cjnfl4nwB4tsJVRlY4tmBHJjAb0TEOaYhR1p7EqP29Q==","signatures":[{"sig":"MEUCIQDCMU4Z/F6BuPg0iJa+Q0KmSMIJ2l3nozD9evMqT9UaAAIgeYXoaAI8dfUzYhNm+nJXkhAcRmePzwac58BHqUxGmG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.536","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14006362},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5bcf00b140bf88108c47fb63469d11fb352bbe9c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.536_1779906143246_0.19685330492807074","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.538":{"name":"relay-ide","version":"0.1.0-nightly.20260527.538","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.538","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"01d9f62039f6ce3ce04b6c68ba14ceb87b1c4faa","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.538.tgz","fileCount":500,"integrity":"sha512-+/Wwa9TymvReIhQqSo5XHWSmQBh4ZeL8hRrNLL13nAMuekB3pess2KQpi8Z4ptoMJknuinIJRdLAY7wM2komHg==","signatures":[{"sig":"MEYCIQCAlK5MYV/gbVUOHRg1HdlpAx+cQT4MiJkp1R8oRGD8bQIhAJWxc1tcNMWTy2S5MbQVTwGCWDfJRrSX5dnIxaODWWVP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.538","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14054973},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b39fb4d3956ffb3a566837d5cc4dec081db7a40e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.538_1779906410744_0.26569214573260913","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.539":{"name":"relay-ide","version":"0.1.0-nightly.20260527.539","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.539","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"89521c3e6b68c96b9f1fe7c3aff6433902bb1619","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.539.tgz","fileCount":501,"integrity":"sha512-35Bha9yMSwPNbK3sh182kSVZbH8y+AkCRfNyqwe62GoJKHmaywt5aXzvSOCdFwx0K0JvxRPZnO5cw1YBoJFyRg==","signatures":[{"sig":"MEUCIQC6wws2TJ770MQ2H3bWqCMofhMIB3hPTfgfGuZV6JLVcwIgFkpQqsGTRehIh+paBVXvuNV5OAEN7FellW7BjHKrwNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.539","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14063133},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b0267a55ff0ac3748efe483ca05705106b87dcaf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.539_1779906511178_0.6940323107851485","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.540":{"name":"relay-ide","version":"0.1.0-nightly.20260527.540","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.540","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8990765bfed007b596becf915e024e03d53ef9ab","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.540.tgz","fileCount":503,"integrity":"sha512-UmiaYtdctTP2r7b/bCBtrpgZbOnqkKqUxsWe9+K6Dy423IxBLfqUX3O6ez5t+v/FTKTFflGry4SZOz66yMikwg==","signatures":[{"sig":"MEYCIQDn0RSkSEoVc8uhBfv6/AkiGy6ncTrHVLwc3zvHuWBhCgIhANHkfWTPa8UUxcG8z3CIT1RoeYnPxVu/+vOaodfuIrcA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.540","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14084650},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"57929583e097672307412ecf94060e75be35c51e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.540_1779908865812_0.18441710019201585","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.541":{"name":"relay-ide","version":"0.1.0-nightly.20260527.541","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.541","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"debad75f821eb0035dd0ad8efff8e897afe2e69a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.541.tgz","fileCount":504,"integrity":"sha512-M3TxT2CXjYIoKjpum0SrQRE6k5P06FGx2icUYWKtqhzsOjdpu9FvdqHaD2YQzKMcVdas1AOB9r1oBdaMmVJEMA==","signatures":[{"sig":"MEQCIF7Tx3Jq3G0n2WRhQ2M/3a6LNd8uqPj56c3tj92Ta/qhAiAvVrd+lOQILUppLOGNH4BV6l2DlwkjCjoRcUwNU5zp9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.541","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14105028},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b5fdf283bbf904098aea9a0bf27ce69266e56a22","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.541_1779910733764_0.2356151446194239","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.542":{"name":"relay-ide","version":"0.1.0-nightly.20260527.542","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.542","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ed29e09b9e6773a85ba10b71a4f1981c4c2c5e91","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.542.tgz","fileCount":504,"integrity":"sha512-mrD/PKInYQxUn8kHr71iT9YQwJjXpfPtCopjsiyQu1YI4Tlljj19yGwuHP6OztTj6mVaWpmemaSBR4af5Kej9g==","signatures":[{"sig":"MEUCIDOSr6qwrN/GMFU4iLB+m9yZzObZpV1aR1AMsTRh9vkvAiEAr3vPfTq1lHb9eNPixMQvbXWa4ok7HEe6UDPXUy9kp88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.542","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14113323},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"73ec577df2e438470a513174fc8ca205fa3a1784","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.542_1779910760675_0.7944311763137288","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.543":{"name":"relay-ide","version":"0.1.0-nightly.20260527.543","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.543","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e093f5a14cf01fbe4c8f0e855061a8765771dbd5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.543.tgz","fileCount":505,"integrity":"sha512-tsWWoUrTr2zEDijAqIc80K0Qmzq4RrDtVG444Ix3cbq+6EOeG2lmww6D7JMAVpeMok8FgnVWq1aICUQ3gPz7dw==","signatures":[{"sig":"MEUCICVM0CtFSb8Zbe37ppkqkXCVVyqYCaxanNzzNG0s8NV1AiEA33AirRl+FodWdUT4rNC54SHaC/deXqzVAYJdxem02hs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.543","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14125251},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"852ca06bfd41aa10468c16bf819b6544bfbfb23f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.543_1779912628881_0.3929465207207623","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.545":{"name":"relay-ide","version":"0.1.0-nightly.20260527.545","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.545","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"84e4e60a6a58621507e293b4111626106b46bd53","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.545.tgz","fileCount":505,"integrity":"sha512-8SEd/klNkOQYSbniIEtSbmwA+GlN7qYqrGKEnvWrIG8ufBobWtS57SivhyZqs1ikCFqKvlex9qexwz2ySGbOiA==","signatures":[{"sig":"MEQCIBLjzIJUVyE1cRlIyJRZaKRPAWze0klKouZnns/n/DsvAiAjOh6Njpo9EJDGeMzeNnLLkukYrJFwAU3puKcL7K7zFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.545","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14130278},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d1e3c06919d602f6a2d0896e3e371b9e47bbce95","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.545_1779914045913_0.3691898555583939","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.544":{"name":"relay-ide","version":"0.1.0-nightly.20260527.544","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.544","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"35299ad522570e0154fbb1397a607dbc6ef70c1e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.544.tgz","fileCount":505,"integrity":"sha512-oiuYCNLamiUWFv2uzLWFA23aVLPcic98oBvegr+jnzU03vRr8IsdHbk+VbLXQ0JfgJKGubyoilu5gZ0ojhVgrg==","signatures":[{"sig":"MEUCIQDR6Svc832UYj29G1axojv5FyoIEJqi7vc715Jp0A5e/wIgN37ROl9m/RkXVCZ3r4qa78UJtwlUkrof8h7NJBA0Ltw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.544","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14126339},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3642f81528fe8861c00665da00609feaef5a2abf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.544_1779914060339_0.5360902303523265","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.546":{"name":"relay-ide","version":"0.1.0-nightly.20260527.546","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.546","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0b060b54428ddb83eedd67e721c0a24cc95c6bec","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.546.tgz","fileCount":505,"integrity":"sha512-uHWIzgBsa1AlDtRzA6vjw+umaWWr8X9SzcJrCKTkJjGl9AK1oAwUu6dIw6OQk1ycxDVrG1kTOgysDjSxkLecAQ==","signatures":[{"sig":"MEUCIDmeGsC/juzKSQKTqkai+N+8HI7Tbu6XqKN8kYd4WFYoAiEAy2KHvgMp+fiPyq1XuPdpOm6YL9m3AVO/uNSz/xAlGVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.546","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14134317},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6d8a1630423ad54b5c7f76c806c38b7c4d6cbf14","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.546_1779915665912_0.6340640653064282","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.547":{"name":"relay-ide","version":"0.1.0-nightly.20260527.547","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.547","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3290b4ff1c2e08e31f1a679057d8f13ae9038fb3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.547.tgz","fileCount":505,"integrity":"sha512-CxIUm1jR+jVJA8FWTrQE29hQjKByip5oBLHJwj8AkVyr5g173JOSjMYAZrraDlwiwNMaI6LyJkIVnMaaL5y/Gw==","signatures":[{"sig":"MEUCIEg4Cvuv55R3hTTgbX4SIDpQpMxroRT2H4x1usn/bjsJAiEA8DvBDm3O4yBGwTIXgytMFdyFsnH8juQxoiAojlOyxjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.547","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14141758},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e816add8a03fb4f488ce87c38ba4c16626f11c21","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.547_1779915921776_0.26768135826487627","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260527.548":{"name":"relay-ide","version":"0.1.0-nightly.20260527.548","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260527.548","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e1c4b60c499432fcfb3a001c1131424cfaf5a546","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260527.548.tgz","fileCount":505,"integrity":"sha512-3myvSnw7f9IulmofOI6ld4oUdk5LpaznyO1lriMU448mF78DfKXGkNjNAxABVGpDmgsO2DinRe6SRxTBzG4/UA==","signatures":[{"sig":"MEUCIQCTNaY5uPOxXG/d78bBpyqCGJgDOO49I2ucwoxhC41gIQIgO2MZm/LrbQJXSBG79BZwtbdmdArYgzejdL/abwRzS+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260527.548","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14141585},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"deb15b3ccd819f7053b8ec8492a2efb95aaaea4c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260527.548_1779923374381_0.04534187287579994","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260528.549":{"name":"relay-ide","version":"0.1.0-nightly.20260528.549","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260528.549","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"da4eb47ca7b9b5f3c6962af456abb54825b22a0b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260528.549.tgz","fileCount":505,"integrity":"sha512-cgF1w7uyIrvdLg5uzi+mSiQ8vQXMGyQkh8Pq3w01gE73CKEIDDTEvcppG7ZEKf/KOvDT0S8dU4Wndea+NBgm5A==","signatures":[{"sig":"MEQCIDn76H55oOVzWOCX83Ij6sKUaboiEslCgz+PZTVwJZI3AiAC7O+KdD/rS/CpZmHQeaoZ/sZxzNhCdxc+e8HdQ3GX4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260528.549","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14150511},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7455efddcbc599b46f186d92ba37ff705622fed7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.12.1","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260528.549_1779930406935_0.4293906895755768","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260528.550":{"name":"relay-ide","version":"0.1.0-nightly.20260528.550","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260528.550","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b8e898331a9681154ea90f2697cc3491325ef830","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260528.550.tgz","fileCount":505,"integrity":"sha512-Dlj1hKZSGX+B17yoFFPdH5xowgEqamKBOBKulULxl6GDJMa3DvvGLjJOTZ3casF86O4WKj5RXALzdDONhfbdCA==","signatures":[{"sig":"MEQCIAsjALYkyq5mLPmnritahF27Y2JwpOSBodGtmsxQkFBZAiBKn2ah1lqFp0kN8hZAA3x1Dv8d6hs3xqjNtZBZSCeW+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260528.550","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14167129},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cc7864027edac575c67673c3d035fec263917597","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260528.550_1779989903339_0.962738461932821","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260528.551":{"name":"relay-ide","version":"0.1.0-nightly.20260528.551","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260528.551","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ef8dbb4e87feb1e50084377d1f6ccd5e79631e8d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260528.551.tgz","fileCount":505,"integrity":"sha512-RxEsO7Iy1Pjv2vPONLA+GUTZYruyrbsTBPVsm8XUCXsQdA6bZH67GjINCaYYp5ypaoDeqSGVgtq9CiajmVHVwg==","signatures":[{"sig":"MEQCIFiVNCEpMZ+dIl9XUgtWxho1fO49gqdc5C5pImqQ5sI7AiB7tndLQm6dRoNeaGkIi4XiZAVmPaHP9r+I5BKsfpWCuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260528.551","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14189901},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3064197a35d53b7f82a5594a5ef5858763e21f3f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260528.551_1779996150708_0.7304965197393796","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.552":{"name":"relay-ide","version":"0.1.0-nightly.20260529.552","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.552","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0dd0be50fc2f214f7db6c536e8ee7c6a3f0cfd37","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.552.tgz","fileCount":505,"integrity":"sha512-P9dKgdVee9F7a0gKOr9qBlregyT67mXe2KNChC2N+7tby3t9I+lA7CmKx7QG1bLsLb0SXdU2voie7+C+xmFrTw==","signatures":[{"sig":"MEYCIQCXDwws10yGT9mQTSeQRErTrHy9E6hxmr0u1Y8Px4sebQIhAOBMSFeJWXqd1fE1aFIYRSMliRwa8QFWsaxYkA93Jkzy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.552","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14198711},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c4456e78bdedc9f962a2efbf75edf465f0ab6016","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.552_1780020403068_0.7778531457201259","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.553":{"name":"relay-ide","version":"0.1.0-nightly.20260529.553","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.553","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"788329c2b37fcd83933430fa7cb1cc2d3b68994d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.553.tgz","fileCount":505,"integrity":"sha512-7RxNKkJK56GseLUd3970hRgIaiUG4cmzYviDnXuv6gZsbbnOrKwXa4R7SvaViVbjB+5n/HraqNbp80xt3Bbmxg==","signatures":[{"sig":"MEUCIQDpc8gYWJAyAYUDcThVH0oujFZPIM7hI83Kjzm8lovWqwIgdlPyZI4xYsfvdxxiqz6eLOgfpjMo43MVUBSQ5SlCpxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.553","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14200381},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a1a7d2dc4af873623553ede6d817f52be8dce2cb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.553_1780020495662_0.2617625355150137","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.554":{"name":"relay-ide","version":"0.1.0-nightly.20260529.554","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.554","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"19ed67edc677793a278647cbc6f980f161e4003f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.554.tgz","fileCount":506,"integrity":"sha512-qmF0FuxhSSpdsF6tERSNUNLW/60DgwK4uMCEQsRGwz6Jy2mdR1khBP8DOqHtL+Fni2/Qw2gOborzc8NLLaNaiw==","signatures":[{"sig":"MEUCIGE0Yrm/omf5+U4fKR7Neln0oDG6czT8YQlqxhz/0tkWAiEAr8bxKluHQFofxlXONnUfC4JQF0QJnbn5pPK2TeXOl/Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.554","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14222944},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"456718ac0c83a6317e4cddfcb36c93d7874ea271","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.554_1780028558751_0.7736728730236266","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.555":{"name":"relay-ide","version":"0.1.0-nightly.20260529.555","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.555","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"401535f90ab601b972aef1042d75a8d4c254bcc6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.555.tgz","fileCount":506,"integrity":"sha512-xDQ2cfSzwsAXwsJ7s/t744JJaJrfVJzbeNLlb18TabXLLW7iW7DhzhpmlieqFTgWN/ssp9PwBsdLXNWT801ChA==","signatures":[{"sig":"MEUCIFgkreoqkzBu5II+Vr1WM+gn2ADqM9kV3ii/7x8kLXNoAiEA5Z/0JKbP58JjguZ1giNzZkyJwmcaIwH3FjMzG6YKnvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.555","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14230420},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bf60e8a6d544080bde2f3ec5a8593abbce7bf6bb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.555_1780031708047_0.38708273635232704","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.556":{"name":"relay-ide","version":"0.1.0-nightly.20260529.556","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.556","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"93bd7b80e34d72ed7b83e26798587d608ddfaedb","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.556.tgz","fileCount":507,"integrity":"sha512-SKrfScYUwq2Hc+vBYcuLpO0fTtOOR2IL3I1QztBJ59fg//UxElNrEYEz5YEp6rnxBzxGHoSj5mSxt05yvCjj2Q==","signatures":[{"sig":"MEYCIQDDGw/oTgTqaaIbrTWq5IFJDWj00IdfY+HpT6LnD0dZyQIhANOXoDoXNvZl1yDQINDvlbZ7oS6n95JJX4kLSGPU8bm3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.556","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14246509},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5c9b07ccf1ffe637682e375ab75d1eb9627abe6c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.556_1780055502596_0.8524513340488695","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.557":{"name":"relay-ide","version":"0.1.0-nightly.20260529.557","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.557","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ed7bb2d9c01eb38d1f37de08a071d559b833564d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.557.tgz","fileCount":508,"integrity":"sha512-Q5P29WO0bynNG6fDThXKrit3jknxe/vCMUmIkXIo0MQs58Xp5ST6WZG39a6c5HCeNyMyh4kDltET+KHxxPzypg==","signatures":[{"sig":"MEQCIHXfW0kGmByjbhfY+4OqkvlFKlWwPT5Nd4wrZWSDDPFUAiB4lSH2MzPSd8c5jXFN5/Db/4YjQqJxCo8ldJuH4NGJ5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.557","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14262216},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"085405750e410d3c74acef8d9068ea07aba69bd7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.557_1780060813670_0.09190284475849197","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.558":{"name":"relay-ide","version":"0.1.0-nightly.20260529.558","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.558","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"62a41a35bb6943833a143d28b9fe867e4bd93a2a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.558.tgz","fileCount":509,"integrity":"sha512-e9L8ZxNJk17Hy+LWLfiMT5qokAy8Tr5QHiwnCqlQlBtdtOIZYRrSFKUp58gN6+iuG6mbS55TIZ8nTXTK/15Mqw==","signatures":[{"sig":"MEUCIQCUmMBA3J2N/gM/lKMnHx1whpjsluiMUwOIhlvhWGtCCAIgbRrQPGl4RDOiXdYEA/WlK8y/2twBQdB5zIDx9UxkZEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.558","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14284756},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c4e83362e739e4c7e80462a56de4dcacf4c0004e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.558_1780075560646_0.21101265948529657","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.559":{"name":"relay-ide","version":"0.1.0-nightly.20260529.559","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.559","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"61001f401c92888861339f2cca422bf6afc128f5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.559.tgz","fileCount":510,"integrity":"sha512-qrd5Y8rSlPZk46Q/BnEe6oEXYFeclBaKEWC5JOezOsIjC1DKPKjKMiYv8vVEZYt/ZxZwpfHXGWQav+nlsAZqzA==","signatures":[{"sig":"MEYCIQC3AjyUxuoewIKCvNt1j6kkRnMLKZIP9weCWiYVHfuJzgIhALPl2WGq/pY6qyf3rxh+4Vye/5XWLGRJ1omD9V8JRtfR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.559","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14315653},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"acf40656b7ef2172c194d07536be5f97d7ea824f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.559_1780081159992_0.6070929425615947","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.560":{"name":"relay-ide","version":"0.1.0-nightly.20260529.560","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.560","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d7d5d2594374e8407cf84c3132b421a8e8e09d2c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.560.tgz","fileCount":510,"integrity":"sha512-Wn0wutzCqonDuiMj9hCgK1DEsa8vDpO/xtHp5L1Yn3xiOykYfTORRoS49hqCBpUpl0hl9zrEO3ZavR59Qyt+QQ==","signatures":[{"sig":"MEYCIQDb1SpUWQj6KsI7kLttnQ77d6U0gxxsIlXKFyFsntwpmwIhALbzgaSs0fnJceev6EioBsWCYy1CbR+cuiDAx0YJaJ7q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.560","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14351922},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"934ac520db1db4c91c5f64eaa2f3e2ca8a7001ca","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.560_1780096753763_0.9544994997897471","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260529.561":{"name":"relay-ide","version":"0.1.0-nightly.20260529.561","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260529.561","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6531dd58e5af045f822756baf3be879638001091","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260529.561.tgz","fileCount":510,"integrity":"sha512-4erov+njx6PFgYwk30CNZEmJSoN76jh4gpSrC+af2JgKfq3f2LY5bd4elSeOkE7Isu7m6DBHLeWzoVABBeqfcA==","signatures":[{"sig":"MEQCIGfXZEUAXOPzqiwogWTjmWbUJE1gF7pmV51kIRiCc+gEAiA9E/iSzH6DmOvXKGRe+yiB/T/ODhOwfdFNkgzEvX143Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260529.561","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14369623},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0e16e1821da25595044ee984b310eb27872cd546","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260529.561_1780097852875_0.7513214797761845","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260530.562":{"name":"relay-ide","version":"0.1.0-nightly.20260530.562","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260530.562","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"680431a95211edff526f5fb86cfdc5d6de50ac1b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260530.562.tgz","fileCount":510,"integrity":"sha512-0AN5G+f40vx+C8bcg/Tcn9kirGb5zvG7Zob30YrXDqpWEROP5NN8ZIeKX4ZNFVd32auoGe03p7GSwDM2w5Di+w==","signatures":[{"sig":"MEQCIEMUF8jvvFjMMJ6BcqlEfQQBMHsZD2CyoV6FwtrUJACeAiA1CdtHdQBbZIRFWqLlIiw8BrOCm+NwbLt5Xpn5T5LyuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260530.562","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14370462},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cb2c1af8e9d0669cb68231603bbf043de77073ec","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260530.562_1780108748875_0.5214658421762131","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260530.563":{"name":"relay-ide","version":"0.1.0-nightly.20260530.563","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260530.563","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ed5ed9bf4f594b1510dd2dceabbc4f7a82b707ef","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260530.563.tgz","fileCount":510,"integrity":"sha512-xnJ/hhQmrq510W04dONKToSpymbApwJSYBuVXXXuCQQHvqAeBppGhRAkDoU6cfntkg+pQRjlqIej3Z2YKjEWyQ==","signatures":[{"sig":"MEYCIQDB8tB8c0Q4xtKhCA1OCKlrOdzQ4LWA3Frlv5wCqPtmpwIhANku7eqceYS80PVQMz4zN3AZ5dDCAhBU8j1R3MxEJvl5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260530.563","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14370544},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2dcf6264305b454b56fb112e5f97f501abfc2ff2","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json NO_PIN=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260530.563_1780110726906_0.32751897324220614","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260531.564":{"name":"relay-ide","version":"0.1.0-nightly.20260531.564","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260531.564","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1134129e993287ef8f0bf62b435758305713d634","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260531.564.tgz","fileCount":510,"integrity":"sha512-TtphrK2hz/b5EL636UMPD0lSw6JL7l5TD0KfjB9xr9s+a5tG1+m/cQFS1NX2SO0Y5rA7VVlZYpPS1qlF4CdBTA==","signatures":[{"sig":"MEYCIQC+iEU8SqJIYmnxdkal1bdlm5VIwxnTIKrQ8enFzSncUAIhAOUBW1T2fj1ib21PAJedxhcQ2WWPYBkTaD4OsyqwhvzS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260531.564","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14369646},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"24de06d4fe7868483435445ed0faed4db2989883","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260531.564_1780259925833_0.6963767125364169","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260531.565":{"name":"relay-ide","version":"0.1.0-nightly.20260531.565","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260531.565","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"fce63d2f7cda0ad42d80174b4020f29bd887a7a6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260531.565.tgz","fileCount":510,"integrity":"sha512-Dj6HatRUSNy1vwkcR8pKFPXmfKJhQkR0XYp3P/hh651fiF49nA622PK2OrKyLtsUS0Va02604pMvoWW6V2k+Bw==","signatures":[{"sig":"MEQCIAx7Y6/ssv8RO0WoMTaaf1ofPwS0vNYsXuqoopTxZ8+UAiAzIPiANsaKtBxN3kKsVnLGLtMH43WukOaX0OfebQi56A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260531.565","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14374833},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6e8047c47f2b93a525b3f6edb34b25d7bf25b49f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260531.565_1780271360945_0.8348249351237145","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260601.566":{"name":"relay-ide","version":"0.1.0-nightly.20260601.566","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260601.566","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f66aa72a8a519056d902833babf89189d789e71a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260601.566.tgz","fileCount":510,"integrity":"sha512-gRiO9nJqOKmqGJpC0NwVSAiVenxOvLiONqkz76ROiJHX4cA3I1lBJx8wkZa7ytVIF98p1SByQVPRTsfrDthoMw==","signatures":[{"sig":"MEUCIEZ3MBkk7MQ7OnxGimZ9CE7+XAQn4VuJs5wCCSZiyAifAiEAntMvFmnxFAdm7vTeF/RTG0ilqhOcKcdYgM5nG6cHWLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260601.566","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14374833},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"967b9fd25e5dcf2aa869c13ece421079ac5b5a50","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260601.566_1780273299423_0.1956430696512932","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260601.567":{"name":"relay-ide","version":"0.1.0-nightly.20260601.567","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260601.567","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"647fd9f7d2bff21a38c0f688f7f7f58aa6e906c9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260601.567.tgz","fileCount":512,"integrity":"sha512-/qmmant0iJUklHUsrBryVxzdqcMxY30bxAQQkAa2GA3zt6KQ1X4mnaOpVaUD//+tS5GjZJx9JTNF4flxlxARaQ==","signatures":[{"sig":"MEYCIQDG6pgGx+lz69hnUqQsZPZOXH35sM3fA2PJSxruQwRygwIhAPDz7rEPCewya+Ak+ItNL1EmOZtbvI0n958jzyPoupQZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260601.567","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14385732},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7d45abed17318a9e833ded8c48bba09f6bf5a19c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260601.567_1780273410362_0.5579336612613517","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260601.568":{"name":"relay-ide","version":"0.1.0-nightly.20260601.568","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260601.568","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0ff2be324b398b0e1dc0f9d6e4ba2843d56fd232","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260601.568.tgz","fileCount":512,"integrity":"sha512-JxZYuM0Kshi0H9r48VsxNc8EFssIppM6rABJQbs3HeZp+lNgwCjn7nwxaPvMCzUewRI0FIpsnxhrzgtkVHeckA==","signatures":[{"sig":"MEUCIH7tbb3SWATB+DpKrvHsU+Wf9SZp0wla3L78Jlj9Y6iqAiEAg5r3wyQs/Qz+Pi7j8P7vUN6lVVPm/lBEo9LrfqvaATI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260601.568","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14398551},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"06aaf5f6c99fcbe37fc28e81b8bdb3904d077ebb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260601.568_1780278656572_0.1325508944521825","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260601.569":{"name":"relay-ide","version":"0.1.0-nightly.20260601.569","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260601.569","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1e3781126fdef34cef93e69be4a0ca519ca4a648","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260601.569.tgz","fileCount":512,"integrity":"sha512-ZsF060XvQRpq1l75wNoXNlIhJK959+EAGdJEeR9tgaidlINvYI20xwyZvw1rsLaevzrfbxBOavZTlZkMHzVjCg==","signatures":[{"sig":"MEUCIBXFSAlRXOa4p6k3/XeYnaXu/i2kODqmg1u8+dPohaX3AiEAtIf1waxtKUIDt7kxmFQ2I4oQ7U/rfmY4NPDm0SxJW2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260601.569","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14408642},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"08abcfc309e741a942b83b9593bd6988044d47dd","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260601.569_1780284105782_0.2747792594575087","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260601.570":{"name":"relay-ide","version":"0.1.0-nightly.20260601.570","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260601.570","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b65e1d6a6d538024ca85fd7706f70842cf6a24ba","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260601.570.tgz","fileCount":512,"integrity":"sha512-sJ2MDiAfqZ14j7PIyS6beLY1zVndwhe/MBaSNKCzVfNh1tb85C4nf0Mr9Eqi2gQ7hFEGjvA0OO+hOyXcW6T7tQ==","signatures":[{"sig":"MEYCIQCRjyTguhAauPTStM/mDrljPsWihImEW0Xuc6azJPan9QIhAKgiKiJs80Q8evRJlsnP1+9PQrj8B8JyT9FVaBPQsCER","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260601.570","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14417355},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"74bc3f68810280fe3e60d9877b55359a7d0199cc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260601.570_1780286174004_0.10325961749077583","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260601.571":{"name":"relay-ide","version":"0.1.0-nightly.20260601.571","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260601.571","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7d56027b030018d4645fb830f41ee8fc91ea6613","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260601.571.tgz","fileCount":512,"integrity":"sha512-AZT15RkIfC3u1Fgw9Dgc2msYi5hYI9pTJtH6a0LR1Jkwh7rOM+IjB47ZB+MYGKI8TcDKSp4NLt/zm4/5z3+6uQ==","signatures":[{"sig":"MEUCIHltXYfnt8RzJvKUYzfS1vc1tRf1qsV8BIKMhR+SPj/bAiEAquKwH+wzJQmmFo4OlQpeE/vhJaJFcO2WRzC7sEHbruM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260601.571","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14421580},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"de265485e12cb6477237285c2b62fad843169f93","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260601.571_1780325011087_0.15869706809748996","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260601.572":{"name":"relay-ide","version":"0.1.0-nightly.20260601.572","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260601.572","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3d748678d7172bf092b8ba49cfa757fd71453796","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260601.572.tgz","fileCount":513,"integrity":"sha512-9K5HAJVNvOy8rqHjKhbtu50KpSucxhduNytf58QSvNyiErYG+6Hp7V1tMjyqVFzNXCpX6orau4lCCGwj0/KkCw==","signatures":[{"sig":"MEUCIQCizxZTt9qjVeVe5Je4UHwr2/L6xOz+swwOO71rb0cr3QIgLJdtXF5j6Qtg0doPaE9XlGbr0gME026OwJIeGrjX0TU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260601.572","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14427574},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"09bd601474f1ff7d8458926422639c5a026a45ee","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260601.572_1780346039323_0.9196628510803944","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260602.573":{"name":"relay-ide","version":"0.1.0-nightly.20260602.573","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260602.573","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c1c62e614ebd2ae553e8447ce2bdcc67b9f5bc66","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260602.573.tgz","fileCount":514,"integrity":"sha512-Mt7O5Vg5IHKW45luJEteajxT92Xy5iys6WgcdBh/G/ukY1KeDySZG011aA6JgUqsC1mqzvBcxtvTUS9BsgxCqQ==","signatures":[{"sig":"MEQCIGiXAWhrCPXwTqZaj+zUZ3XCk5J8Q/eZsJnPOLc5GrkTAiBf89RqP+zSblwGbFkGtqk+eqyIn5i+rTYAStXQnmMzbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260602.573","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14445102},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"840eec7b0253d4a3a26b3841e9d8ea004d379050","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260602.573_1780406296746_0.8011326921911825","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260602.574":{"name":"relay-ide","version":"0.1.0-nightly.20260602.574","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260602.574","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3f6d3032f814108b8af67fa5066f5a5bfef82bd4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260602.574.tgz","fileCount":514,"integrity":"sha512-pg1h8QG3ktaVkV+upkGMttl+1d6VmXornMlAgudyZqZz+criINEZoHxBrSwUpEE7mQFd++4+RtRVMEiT9RC+bg==","signatures":[{"sig":"MEQCIFrYMsPRjFw7JCclpgO7WM4HqjL32swODXSSKt9PnI42AiBV6X5fKffiZjU9jleI+TmixbEZTQIah8R4asmXI7FGLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260602.574","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14445102},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e0cbe952a4bf625063e039f9f43eddaa7d8f7db0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260602.574_1780431356625_0.839948128008053","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260603.575":{"name":"relay-ide","version":"0.1.0-nightly.20260603.575","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260603.575","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"852e3d3213b0d95283b99f8c1b40aedcd987baaf","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260603.575.tgz","fileCount":515,"integrity":"sha512-8iZ+y2YeaJT/DuJGFFxMNRPGbRvNwCfRq6DYMTZpRcgWINapzK0awAFEvpEGLYFV7GzbgTniay668bxJJRmrRg==","signatures":[{"sig":"MEUCIQCutoF75qBiItk3+f0q5nhMb/gfkFHivSBSxJ7CI27lsgIgWAnSq5KUsMmvrcSXTS1XTgGIRjVcOI2VYQo22Toh0D0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260603.575","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14447620},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"535a853aefe348042d1d0683246698aa60c12b6a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260603.575_1780450994523_0.3934309065951005","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260603.576":{"name":"relay-ide","version":"0.1.0-nightly.20260603.576","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260603.576","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"88847e446e16275965dd1f3a90d7f1fa6cb21b63","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260603.576.tgz","fileCount":515,"integrity":"sha512-OdxemWHU0ROiX4lERlBBUvSZOcFKzy2ol1QgprNSFIUYToqAI9gOeL2p2nM5IuZZqalG8dgxHLxn9H1sRRIg0w==","signatures":[{"sig":"MEQCIFaBeGH4me/+m8UNNWrhldCzYvcs2QJf74awBhA1A/stAiAMmcAjmi2BEgmP2hnuDcPUpn3qIcGg5U0mLrE1bkyhnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260603.576","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14448793},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"916c998ce732efabdb87c132f031b600b29bd592","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260603.576_1780514971429_0.009503411574355969","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260606.577":{"name":"relay-ide","version":"0.1.0-nightly.20260606.577","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260606.577","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"42381f325ae79ae5fbb6084d95c53eaf595d6388","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260606.577.tgz","fileCount":515,"integrity":"sha512-SwtvB/CTXV1Jof3jflDd7r2twrAoMdXwQlDiftSnn1zrlTWI2b5mfFfWXrv3LszX5cR+q5vg3XERWIkuQLeOWQ==","signatures":[{"sig":"MEUCIGdn+j7p2BckMJUDHl99g0A0PA0OwFpVKVKxxtXt7kg8AiEA3hY2RY2IZwqac0eI1APGg8AeMw5li/S7xltpC3ViP24=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260606.577","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14453372},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9a75940888e81fea1649b6a0b150ab7730ec6208","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260606.577_1780769447388_0.2875495094509972","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260606.578":{"name":"relay-ide","version":"0.1.0-nightly.20260606.578","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260606.578","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"27afe0e99e3efc6c87f0797637e2a10750f3f22e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260606.578.tgz","fileCount":515,"integrity":"sha512-HiUuF7nEnCfi/TL01/NdGbj8oTGubdfZsYrqpfg0Ft7PMtQ7a3SDEXQK2pkx+5m9oLqK8JMGji7EukqWBlXyzA==","signatures":[{"sig":"MEUCIFt4ZOPC19snYLeDZskKC6RlFRUG+poo+JzaOlrLxVraAiEA4m2cY5S24Jn9y1gJm7CKqOTqqRgTgdB9P76yfkvhedI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260606.578","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14453372},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"449855fcd2484f787dbd7e3d7a0740ccaac0527d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260606.578_1780770862657_0.5097951493502071","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260606.579":{"name":"relay-ide","version":"0.1.0-nightly.20260606.579","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260606.579","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a310fa47df275ac13113942e6c15a33f195eddaf","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260606.579.tgz","fileCount":515,"integrity":"sha512-nBcKTqy8nEj28Ev6AUnvCwjmpYbTm1iObhVoAsCuY98gkwolGkNNAQxVfNAsRLrDNpWthQlEJg0igBJpz48WQw==","signatures":[{"sig":"MEYCIQDiNG9xXtVqedEGEXgFzl/P0k2LmD6yavZPalY+9SRj7QIhAI1n71caK6mdSvEL5qXpwY8xTNY7Nd+LyA9XOMiKS4Kx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260606.579","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14456273},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"66bfbf58d080ee78d03e23ede41cf14c633fea44","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260606.579_1780772837812_0.43297037018943163","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260606.580":{"name":"relay-ide","version":"0.1.0-nightly.20260606.580","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260606.580","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c6bc638689b0c86fc2085f8aba3d6b780a630ec2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260606.580.tgz","fileCount":516,"integrity":"sha512-rDQbiZi1aF1N35L7zMqqtmdy6eXxUhxEHQq0pg3BaheMNOaRopi2QaattFCam+q7piOfKGVx17mfCGHUxiVUpw==","signatures":[{"sig":"MEUCICF19suSx9ZEgIojjItl1tjsCHHqqIbpeb/yVkRJKmJbAiEAgTHZofHxF6cgM9PBm9T1CYprksF7YMpx1BrMK26mfjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260606.580","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14481668},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"eb92232171a11745d0c143dbdf6d5d3a5cfa7a67","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260606.580_1780774841271_0.9988173086514414","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260608.581":{"name":"relay-ide","version":"0.1.0-nightly.20260608.581","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260608.581","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f0d340a90928123989e6a2b43b0f1300a55cfcce","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260608.581.tgz","fileCount":516,"integrity":"sha512-FKIqq73PDG5zusJaREHXpZ7O+ufu5g7wxhpihFSJ19BOh+qqPTc/HNZOVufUgN+cyaNIzZAcZeOOC+5olaAX1w==","signatures":[{"sig":"MEUCIQCekp60NTEPUEVC819v5xcllYQUC9Jv9g4gWYsR3XuqrQIgZwS3VvDNEkhGlzpp+zZfxCeONFTSGOisZKiNNrJ1LII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260608.581","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14513729},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"021ba1168aefde252b2a13179bfc91af3bd61bd9","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260608.581_1780884983813_0.12890029358037292","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260608.582":{"name":"relay-ide","version":"0.1.0-nightly.20260608.582","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260608.582","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7a729c5c8a6da688a55a1ac9fcec9eaf19adc917","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260608.582.tgz","fileCount":517,"integrity":"sha512-vt6T9ACy1K+lZGz3Tlw/cBrbjQsc1jU/MPwMdGnHcB48925jhAktuRCBawMeSMDteheyYbg3d3wxewEzSSecBA==","signatures":[{"sig":"MEUCIGnTCDz50cAoRL2Rx5uClo1o1/6qHc2SPocXogmdxLUQAiEAxLfZml6euIHSCJrlYAWr4HcCHPUOm0Rgk9dPS2hRJV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260608.582","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14541537},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1f1d7e27386d4ab4c79caa382d41a3ef776e27ea","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260608.582_1780926685253_0.02905306102376759","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260608.583":{"name":"relay-ide","version":"0.1.0-nightly.20260608.583","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260608.583","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"37ab4b423b5a41cd0919b152d8daeff100f04a4f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260608.583.tgz","fileCount":517,"integrity":"sha512-AGb9L8Ur7FuizsHOxKGeND6B9KukVxX4Kv1SV20qogj7xC+VqeSLL7/IoGG8WNjDdNmXke+LtH4jW3TJD2vM8Q==","signatures":[{"sig":"MEUCIGihZVpAH2I5lrkxDgEdkhpj3UBVnh5+IqJ8j+FvdgFTAiEAp1ZtsJPVfPQD6JWUgEMuvSkvDfsH9zhH7E2PZgXeUAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260608.583","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14559603},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e38fb4bb825909c8030dafd87f87f6e260d49cba","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260608.583_1780926692368_0.03491344567793897","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260608.584":{"name":"relay-ide","version":"0.1.0-nightly.20260608.584","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260608.584","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"117d70c2b8c57f9dc5985a9bcaf983dfd43879ad","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260608.584.tgz","fileCount":518,"integrity":"sha512-hizunc9JsCvbkFpIvjBOkDy1Xj2ujDTOVhv6FUN56TDs7XDHIs0+tAAKdOA9Tp/4b3cQ/7o26lU/13MdcsFAUg==","signatures":[{"sig":"MEYCIQDwa6rZk4Iw02Glv2552r94OQIA5hBxmHcMBY735lOpFgIhAIfYE89e55yurJK1r8Z6L8sfKPCxyEkh9+WJEvubVvtk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260608.584","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14596556},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4ec31d9c4e76cc99e31c67e8c23a7937519b0d4b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260608.584_1780940223184_0.43957676542121926","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260608.585":{"name":"relay-ide","version":"0.1.0-nightly.20260608.585","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260608.585","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"db78bba0a6c65ab0291518abc3e59738798c54dd","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260608.585.tgz","fileCount":518,"integrity":"sha512-3cW7GDn42vAOAeyiTrL6UgeIOzGdpmoFwrkg2U0rdxO0T488FDZTPXpOy9vK2Zxrvwr7XtOxrqNtJb/x1P7XpQ==","signatures":[{"sig":"MEUCIQDGEg7LhaKFXQJykmTdUZhwdQ1/FIK5IYm8OPmYpzni6wIgU+FVhwZ5ofbyZL9/0h8HEYuwn7aqYFUDcgvofVuF4bI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260608.585","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14596556},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"458ccdf7aebeedb3f5ad75cb427958bd8ac53a20","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260608.585_1780940307645_0.47897933062657616","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260608.586":{"name":"relay-ide","version":"0.1.0-nightly.20260608.586","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260608.586","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"bdf266e079a6a47dad78f2735bd42d1b8429b27a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260608.586.tgz","fileCount":519,"integrity":"sha512-V2bWE1CiwRjPgOxSL1qUl9YYwMEHmvCaz/blkGQfiZ8QJtS6sMHFOS8hz5ViYhXrtEO4XkwXcR1759c3qFjFNQ==","signatures":[{"sig":"MEUCIBpAKeYQWfp4q05b3/IFwKK8DSC/iyP2R5q9YJ/d/LlpAiEAuoszk6BHKSWm6PQwvPHAwYWZlfUjStNbLlOVXTnY4uI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260608.586","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14621724},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"40d3dcea96de89dc3836a926483baafd3ac6960c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260608.586_1780943665288_0.8006388784241223","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260608.587":{"name":"relay-ide","version":"0.1.0-nightly.20260608.587","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260608.587","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7a5d8d5ba1959848bb97f6c961d94f659848525b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260608.587.tgz","fileCount":521,"integrity":"sha512-Y28syR1TPrmocUPTt8wSN46Xuk6yWU2IRm9j4X8do56QEQcR10Ou1dk+e534h99VOflFdhEvzjm+Z9JNrt+okQ==","signatures":[{"sig":"MEQCIEnErXQZV4i/7CBd4D8A2PmFKDjSRUohpg9QeTUq7L+3AiBMWpMJCRnjfyWUwRkUdtGTvRuWdPDYnR6Mwu7ouWjAlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260608.587","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14655425},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8d64d1551cb2d2a585a80a0b56b7522b105c50e4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260608.587_1780952608265_0.8916356112082082","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260608.588":{"name":"relay-ide","version":"0.1.0-nightly.20260608.588","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260608.588","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7985e70890ef575fad3eeb9b7dd87e744247499e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260608.588.tgz","fileCount":522,"integrity":"sha512-v/O/z9Y1X8TVx4a904yiog1yGTRZpxEckRAr8kdBzDp3ZZNjIkfI+n9xonqj207D1QskIQHX0VoHM3IXQIjDeQ==","signatures":[{"sig":"MEYCIQCs+wD1etQOFzbCPcAYM11eNzQ/8XJW4eXrMWdUKDYydQIhAPQJKv2gO54mXOO+NQTFNh+m/Il2jcEubPUsx+91ufaV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260608.588","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14710147},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"76404e882570a55e928ad8a2e7a4595f8f3300ab","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260608.588_1780952674522_0.7877407626910791","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260609.589":{"name":"relay-ide","version":"0.1.0-nightly.20260609.589","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260609.589","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2c22b9d1e6f4ca8627bb757613895e074352fce4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260609.589.tgz","fileCount":523,"integrity":"sha512-3fgxqJvuPCMAlJKzDCbIHXuSpNpzU2hPXMMeYQjNzUyw66FUWAe71X+veHOkjcTvU2wpAEjMspXKcINyho2glg==","signatures":[{"sig":"MEQCIGgDGI6PmpaYGZIPkG7X7R3CznH/d5UdqKEBQUKebNuVAiAUFJjtsQYrz2BLmVXMwHGuujBrLAbnWBLP2YxyxohakA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260609.589","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14725805},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6bf04bc1775b797c17ef737bc2f77a6d0f896799","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260609.589_1780983418093_0.18320625302089422","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260609.590":{"name":"relay-ide","version":"0.1.0-nightly.20260609.590","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260609.590","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c6ed851aceae3150b863d08fd30eeb26e4ae1788","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260609.590.tgz","fileCount":524,"integrity":"sha512-TfoIfq7/Ayx+rgtHgXCm2Kh968QvbE5oTL3z+ZeI7meFVx5YKx1W+fcvolSNP8o3A8seaHb7cXNdoAGkv5y/Kg==","signatures":[{"sig":"MEUCIFCDGhFkuR+AGRfOAaKhiML+iD17k3L6MT2oyAAkutBmAiEAgQhrfZOK36NyPi8yDF0/lfjqfiMNPcTxIA96RMbC03U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260609.590","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14763416},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3da6f739a40b373187779d1f2a7cdccb657d69b6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260609.590_1780987415394_0.244888707977875","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260609.591":{"name":"relay-ide","version":"0.1.0-nightly.20260609.591","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260609.591","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e125963b49bbee02707ed6fe2837379ec87f7d39","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260609.591.tgz","fileCount":524,"integrity":"sha512-1maWN1OjS+q2qaenTQixBSHD8IeH/0+W66NAU/CqGEY8EginvZ8nn7Pdrrqak1I/siSx1y45fl3Vk5xyMiSrDg==","signatures":[{"sig":"MEUCIQDJzMcCf/jpMiei69H6nNzu18Zj7aMKQ63FjzGhjAHFCAIgbP2SAbABFQ1UsiGHW2sXExXmV0zTVpbmoGF1nvVPMWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260609.591","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14763416},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6b561763244fa88b71eba854b6e15a37d93fc46c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260609.591_1781043422826_0.1436484293230751","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.592":{"name":"relay-ide","version":"0.1.0-nightly.20260610.592","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.592","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b6fab7ce3515d8b1ebd559271790f4ef3cf92349","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.592.tgz","fileCount":524,"integrity":"sha512-T45+hQ8PAYneY6Fv3eKTNZKvfrR/UGdfzHKf+0r5LB7B5bTGboGu75ERr/OAap3cSkQE37sTgRe8gEZyY7Xbog==","signatures":[{"sig":"MEUCIQC38BQq5mMgK+DaFkApf6ynIy/GTWR95zGOcImtBO6MZAIgA64PRtNvLnKntxhAbrgpqvE15cmt5V8t+N1QgBRc+QM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.592","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14763416},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"716fdafd174646857e94cb740623b2eec9bcea96","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.592_1781052104596_0.6805929495223242","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.593":{"name":"relay-ide","version":"0.1.0-nightly.20260610.593","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.593","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"292bb72fcadd9732df93c3307618b23b12116ced","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.593.tgz","fileCount":524,"integrity":"sha512-amvL17lLKpAccCDt7q6PA1j4zmLUYN2hX8ogrrzsf4+9LEhrgcLeF7IxbAvxVrHW8dAkwOUN2zt4aDhMmH4Ahg==","signatures":[{"sig":"MEYCIQD1gapZ/71YJRQKm0HTQU45K8yrqoF//4C9k4BnwNKMWwIhAI8xFxFwKt04hoo+O8n+TFkiv5VnSzTEykVx1QcCTYZI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.593","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14781699},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"691ac4dabaead9f56a011a6e6f274612f0a82ee3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.593_1781079055108_0.2210044796943047","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.594":{"name":"relay-ide","version":"0.1.0-nightly.20260610.594","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.594","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"14350a1dffbd5aff0f6696cf122341525c282733","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.594.tgz","fileCount":524,"integrity":"sha512-7yP6typJaYZ0+QvZSH+mqgrUfs3Vc5244ulAbFXdr9bgnC6VJiDc3vtBmbCbYgN0+EHYdsmXvq1/abXJCNZn/g==","signatures":[{"sig":"MEQCIBs0fsLESwJdqXlbiXVoRSJvP0y/qu8RTQR/i07pritJAiA8gogNkuhtBh/gBYcyrSbwS3XUycUY4L8lkN/Wza1zBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.594","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14783174},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"836548246b28fd0a71a263b24f540a42a0cfb84d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.594_1781080263255_0.4299421791257916","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.595":{"name":"relay-ide","version":"0.1.0-nightly.20260610.595","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.595","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3d065ee1724680782b451ca0e0b564a6b40e45c6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.595.tgz","fileCount":524,"integrity":"sha512-PBBAK/XLiYAaTUJC14nGocb8W9S941wxxxLmDV8EGXwF1vGHFJxVO1osveSCSMiJ4sYVpFiXsi0HcnXeOR8+lw==","signatures":[{"sig":"MEYCIQC4Q/kMBiBLtT+Vnaw99BOl7CdeEXIwiLS6ZD6lNdZyeQIhANqXrHMaaJfGb6RVVHSXypcNW7T1Jwy5bXEvBWFCVgck","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.595","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14786601},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"908114feee81e2d21ca051765ce5763e7861e3eb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.595_1781105841126_0.2799322221902638","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.596":{"name":"relay-ide","version":"0.1.0-nightly.20260610.596","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.596","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"eb3d75634e2699e60ca2fedc393e211bdd4781f2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.596.tgz","fileCount":524,"integrity":"sha512-pilOxP+7BYzr4pyRO4PHsNgo+oUpCUr+gqsMMn9aVDlhadDuY7llfySTWKSj1fZKjT3V8Y0kmpVk0HxQ7gvghg==","signatures":[{"sig":"MEUCIFxOqD1BkW+WD1tMioFNTP0m8oS5hPdKMkovhrnOXhsNAiEA7RQlZoHGVh3wf9janxhOWW9vA8r3t48w31qcgVOHrt0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.596","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14811401},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"18f6eb7d85f27b9005286539c64d07bc8dcda403","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.596_1781109133785_0.16673371291738048","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.597":{"name":"relay-ide","version":"0.1.0-nightly.20260610.597","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.597","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b6d70f7100cec575885b86d85dd11060cba923be","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.597.tgz","fileCount":524,"integrity":"sha512-u+eyCRQQFfndqKu41d4I4flX9QPGSiQFBCmLk1SuwpCtzAp+N3QvFD7jBqQaMmZjb4IjguJwkoTA/ne5VDguyw==","signatures":[{"sig":"MEQCIF0I8/RROfjE1gdKXguInNyyHWwOAuSq16P/TxeoTAw5AiACxvaJzx2meo8ke1lLGpUSLaxQZ2SRB9S37pAcHzVRTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.597","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14811401},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9ebd6a5e103a5315e57a803c62c114c40852c563","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.597_1781110348388_0.7729134014288499","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.598":{"name":"relay-ide","version":"0.1.0-nightly.20260610.598","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.598","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e03647a28f8680699a00eba90e30760293649667","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.598.tgz","fileCount":524,"integrity":"sha512-XrGmi3et1uMvz9XM4rE5fEBQCMmpg1YSEDbDEYCT9/IJMZ895H6uFIghxThiyOVAZ1XzPFBaQvAoVtAtbLi4Uw==","signatures":[{"sig":"MEQCIFjKyuXTuGRWiLsrJvJpGZBjRGpa9vw7qtqZTHFryF+qAiA0B/6nFPk3WLXtDIaaqXGM6VUBcB180zLVEL/QXKNaSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.598","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14811401},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"598deeb2a20a7e3d37f50b3b6e4a3cab67317306","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.598_1781110363313_0.005923048905642325","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.599":{"name":"relay-ide","version":"0.1.0-nightly.20260610.599","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.599","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5d2a49cc748582ee70473727a02f1a090b1b4fc2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.599.tgz","fileCount":524,"integrity":"sha512-uw0K+F9y/ZC+LQozfn+V1i7ELBOeegkPrL1EqLz26gn4shVSGBDYqU9bcKQ469lxmwIOVHS8w8v9J6Hi692BaQ==","signatures":[{"sig":"MEQCIBB1DYNIPhKiJ9X1ChR6C9VSH+xD9zZ95sUrJhGmBe2GAiApaxq4FPduY+HMhtmmI01SP9Wt+kJ+jy3MIQlwutZCyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.599","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14814952},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"87b01b12c80bec252a3e2fec7619d6de465d69a7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.599_1781113088839_0.5252293381337378","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.600":{"name":"relay-ide","version":"0.1.0-nightly.20260610.600","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.600","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c61930e3facde90ae07adab699b6d262f8218534","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.600.tgz","fileCount":524,"integrity":"sha512-Hp7Eo5RUhDVeHN+Fdee5tbsX2AzHJviNPH/TPQeA9fU22G9TKxAli4ri4risuPL4Y3ovXlKQ2csQ5t58InHY/Q==","signatures":[{"sig":"MEUCIBH4A3iGrtbhEqckxaE+nlTN3HLybFVIOku7gQ97z0o4AiEAhgoDfuJPVMDIe5+mYHos5hGKGz4cK3nv2l6Fz3EQdxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.600","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14819714},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"980a9c25c0b5b6760051fcaf086ea0b5192dcdd4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.600_1781118472410_0.46986884320319344","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.601":{"name":"relay-ide","version":"0.1.0-nightly.20260610.601","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.601","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e4cdaf6c913868a6bde9f3fc55c5edbe349a7a00","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.601.tgz","fileCount":524,"integrity":"sha512-NNucYKfh/I6ywETZ906n2L2FYcOdddb4f6OEPOu8kqHGZK8o2esCxhkLHRbZRm3GF8eOst7WnQ2k0bw2h4uPBw==","signatures":[{"sig":"MEYCIQD4Is4GnuJrhtXIdqAZnmbLHgdn2GXgRgxHlkDN0bayowIhALUGP5xgMUx71c6b+O+7KsRvKT5uWavfyrhKqTiTzxDx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.601","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14828566},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6640e38e3e43e192a33282aab250246e2c33e131","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.601_1781120408770_0.6832576204299441","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.602":{"name":"relay-ide","version":"0.1.0-nightly.20260610.602","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.602","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7a3de088646533942ebb7f51e097c3dccf4aae3e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.602.tgz","fileCount":524,"integrity":"sha512-h97FTVnTEZHFNVXkt1t70ZKoHq+bl+O63g1/oQ7/a0NcYtV7AkV9bDDD0tybHBIQSVgOFZ+/D+2dKZM0Hlm7sw==","signatures":[{"sig":"MEUCIDfyQ3FYLEfafifrtzUdxpqpXazbcmuwYxeABN6Te0m6AiEA0+x3JN1+4C9vtGJQtmifeWQySWzYiUZDG4cCBTGLkEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.602","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14833734},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"78aaadf8915feb93ced58bd3e4ac251a53f81b54","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.602_1781122345695_0.9919811734862556","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.603":{"name":"relay-ide","version":"0.1.0-nightly.20260610.603","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.603","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ae4ed457f8bd1237d92936b1150e295a50294297","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.603.tgz","fileCount":524,"integrity":"sha512-VExYIhWiOERjLy4r/VWggW6jLIbqtnFSiu8lRBb9WGwdfl9Ocpb1wjrQ5Ak9/U9YkGX/wqxaZzFrNNAVlFOzZA==","signatures":[{"sig":"MEYCIQCPpmK22vtEXFi1tIlFrBEhZdwETzMfKZEPB+URW9Am1AIhALkFfcDIZYyk8VzAu1IVMo8b5pVMMDXKg1/guDXJ0iBM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.603","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14834161},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"afa532e51b317c7a1f884b6399c7d6820c5fd55a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.603_1781124565968_0.9820572839305066","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260610.604":{"name":"relay-ide","version":"0.1.0-nightly.20260610.604","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260610.604","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"faff65052a51f7bcccb7f46841e211d811ecc850","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260610.604.tgz","fileCount":524,"integrity":"sha512-Cr4/0V5PpnrnPe8XoAJ20MH1g7Q5yDw0RKG7BW2maZTIrAei/BK8jtNemKc4to1XKe1TSHyPZ6iTlj9mWilSyw==","signatures":[{"sig":"MEUCIGiEu07gqHkC/7IislpdZ0RlB3LT0CPgpyK51AqpLS0KAiEAzVZ9BqL5CGLpEpWU4sBqke8gZoFTuwEmyFX3UbCbBSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260610.604","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14838035},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d4a492926e58bbaed855b47b42b3d2f3c8cac379","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260610.604_1781126279560_0.7306168276641531","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.605":{"name":"relay-ide","version":"0.1.0-nightly.20260612.605","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.605","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"18717600e8ad429ccf050e40bfbfdff3dcc31310","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.605.tgz","fileCount":525,"integrity":"sha512-x4XFRyGs8MclZyQIzF5kxtIThsV92poZ4998Pik8uXPjcUHfgVY9sr/zcn+yWwCcHJSpK4zv1HEqhl7fohtdEg==","signatures":[{"sig":"MEQCIH/A+MvPTRx1X63eWK+ED9VVBlg90Q2v4LUr1dcuONSVAiBax6uYGhVRp3SePTyN808ndUAA+zApPxp8InEH7haG7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.605","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14888940},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"da8806f6bd652b44ae850c09b680c66004880652","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.605_1781243925494_0.0787469414300015","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.606":{"name":"relay-ide","version":"0.1.0-nightly.20260612.606","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.606","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"bbc6c22abfe12eccceabc6ef9651a0c66f25a06c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.606.tgz","fileCount":525,"integrity":"sha512-pk6n1Fl87352gpPC0SOF36e1jhf57VDicBifDQYja5Zfaw2S2FEzf0ky0FvcArv9RMh8zM9gYkxMXJTssHqz+A==","signatures":[{"sig":"MEQCIAubvcLv1Dk7kWrsXfS2WIn3scHq0MGD+/8o0knZDq6iAiAkXy3TrnYZkR1XS6MgF0y7pOl9/UQ1dsAsxRel8GgS6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.606","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14892323},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"803be9fdf15b94a1bebe59ee46b318991037f770","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.606_1781260100741_0.743995128886487","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.607":{"name":"relay-ide","version":"0.1.0-nightly.20260612.607","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.607","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7db20b3d6421b6362de2979831f4d2d380d6bb82","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.607.tgz","fileCount":525,"integrity":"sha512-DEZTo0WZqXPh1+jMt+qqJL3Efx33q1Bztj52IUOQ3zUErOUZzXFHZ0wzLSZ5gWAI2SHke/HxBipw7/g2BCX5eQ==","signatures":[{"sig":"MEYCIQDDoK20PvqS9/CCePoMPtyVgvVD2n93CH0uK5w1qwclqQIhALS79USJZFaYZZTKY1b0G1K8OZOYbX1H29mfovAGGU3m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.607","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14903017},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bdcdc3154a0b08721c2347a60ad4f35c2b2e08af","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.607_1781275561945_0.7904146656219977","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.608":{"name":"relay-ide","version":"0.1.0-nightly.20260612.608","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.608","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"04822ebb77458939fe7ade4a4443812f9c2293de","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.608.tgz","fileCount":525,"integrity":"sha512-EjILjB5Wsc00kGq0LWfhRwE4J3GCTr6+0e7VtzEPtKGt24TMa9SI+Pt5QMN9kg5NekdPpnhr9X4FDzbrBR3JVg==","signatures":[{"sig":"MEQCIDP/zLsoIq3qJ1wD8wcFvVB4AqUSXydvcrRaivVAx80rAiAikQKVjvz8YT+UOkRBLDGP8JNat4kuYiaiupvokFlI0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.608","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14903735},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c6774c486e37c6f7d2da29184f219a228766e5b0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.608_1781276252943_0.5393940060195188","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.609":{"name":"relay-ide","version":"0.1.0-nightly.20260612.609","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.609","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"532f6a467c486dd18bde7297a13234714d51c1b8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.609.tgz","fileCount":525,"integrity":"sha512-s3w39EeI/rB1brdxOzKiOYX/D6nzae9mW4BAdZx18p7PdKfUm0ZddZ3kkRapvCd5z6gyJ0dJAIijbIF8lUHOLA==","signatures":[{"sig":"MEUCIEo0pGa1uElBgnKkNUOxa3LRSCxwTKuj5cd/FuIdLed3AiEA+PpxRFHFubrNGJIjv5m+eVxnt+gZSkKBhraSUqSL2yQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.609","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14903334},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6e064587411b874fd5f59e26bff1127de4fe2b92","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.609_1781278827451_0.7262556036923002","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.610":{"name":"relay-ide","version":"0.1.0-nightly.20260612.610","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.610","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6dd8500419d7ae5c1490ec8afa54ff3dca088bf0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.610.tgz","fileCount":525,"integrity":"sha512-ywBm8PQYI0u5co+/kk/Av9xKhPXLZOSS7pMOwlkqXV4QXKnxBSJOUP6LQG67BTSIzbawnB/KUi4QGstlmW+++A==","signatures":[{"sig":"MEUCIQDSGpQsSz4ZmAKke1vVb5bMw/nqAxKnccNRmyjqKudAtAIgX8uCnH8q9lLl2dyBv6k4epEPaIfbyzlTOcXGUxJUuq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.610","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14910192},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c5e85fe1084258318f358208e755cf47f5b7cbe9","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.610_1781279917478_0.8123246978818932","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.611":{"name":"relay-ide","version":"0.1.0-nightly.20260612.611","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.611","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"858f50d0ca46f764ed3ec2e5af4dcfdf69cb6a86","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.611.tgz","fileCount":525,"integrity":"sha512-UGPGv3NLkTa8gP2oSeRzxGCWeA0prygiEIJlORG/guVvUkQ8U8yrjDZKecbllAaCQXKU+HnmigFGvDHVdshzmg==","signatures":[{"sig":"MEUCIGmbNZMax5Xm8at6XK319l/SXBidUEhi0D+281GnLuYkAiEAp2hykpcj1QnBSJ85xrLHuKO6gmsH1+WWKjF5e/IWT4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.611","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14910276},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"582fe3113ce3c6293d23cda0d9b3f8331e597b0d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.611_1781280017635_0.8970259957017499","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.612":{"name":"relay-ide","version":"0.1.0-nightly.20260612.612","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.612","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e8a0d7cfd7bdab5ebd558d48d58b868d1ff688d5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.612.tgz","fileCount":525,"integrity":"sha512-nemIG/hso9UQsucFCYCaM4sXz8Z+7GzNWkfLNcriIlBxyWkjO+7ZAqEF+ZsoYDot05BBXnL1gmtl3Ov3xCiTNQ==","signatures":[{"sig":"MEUCIQC+eY8VlhmRzb/BG1283rP4eDX4Z4DTNrS97xbfuJJ/8wIgARG7gYcaLNcvepISNnSKRtLUbNGyhmrY4YAq4zqT+9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.612","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14910276},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"19afcf9d27b8cd2b099f0d1cf50990b04952d16a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.612_1781280634830_0.7218148084508953","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.613":{"name":"relay-ide","version":"0.1.0-nightly.20260612.613","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.613","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6ea3f17572092af39094759733d495b2213d5d3b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.613.tgz","fileCount":525,"integrity":"sha512-GGP8G+SjxAvBaK2FJgbfMH6iGNCIufZwwpLeFQMiX6deqOh9iWxnSJFHHitWhHyXQE6gVe18N9qaPPAJuPK89Q==","signatures":[{"sig":"MEUCIH2HdThT11Wcv9FGAlMrMfFciqI23uf6Cot1JQC2YgRqAiEA5Ms73yVQfOaVpK1tIteKNWR/9s4uAPuZSS5v964S0Jo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.613","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14929557},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ff9679d884532b97bcba3e76a8c6f366f3bdd3b8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.613_1781280985443_0.38183652013751335","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.614":{"name":"relay-ide","version":"0.1.0-nightly.20260612.614","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.614","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6128d9c7c45ff00107b1ca31604a63caa4f859e0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.614.tgz","fileCount":525,"integrity":"sha512-+w8vI7Eul2Jnb5UGG02RngLeluLtccw0OZ7cUE3UOl6NnBWXJL7KdoHSlSUfG6QLadC/3iUFSWCWcbs2E/m5PQ==","signatures":[{"sig":"MEUCIHDOkH2iLFuVflpveKaQ1QtbI8IOhXvQKN+26tYL7BQBAiEA52ZWkImSsZFnQkhGbS6quLIPLl8NeJiRDQAV5L6Eh7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.614","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14931178},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"78cb6de5b63d914a06a17199cd3e6e12b1db69cc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.614_1781295893989_0.6964051204806736","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.615":{"name":"relay-ide","version":"0.1.0-nightly.20260612.615","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.615","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"031c40c54c205c13be0a861aea78552a36e9545f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.615.tgz","fileCount":525,"integrity":"sha512-36GyB0egMZzPFv9edbVKslffSAH1/gH0hVdTmNtkGV/GJ0fEA5raXcyWEzjRQOABfsj75F3wi3Z5PVVVmtbHZw==","signatures":[{"sig":"MEYCIQDVPIWkivUIiNepHalv6mIZQxi74cH5xYt/GIW3+zAqVwIhAKAWRSLUS8fzV0Sih/S8AVJoKxBQdtrIc1IaAEoNMZw8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.615","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14931789},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"16c9213b6453d77b4502da45711aca926303244a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.615_1781296388426_0.4302956071206767","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.616":{"name":"relay-ide","version":"0.1.0-nightly.20260612.616","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.616","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f34bc487efa7e03c23133f1e1c85af7d72c916a8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.616.tgz","fileCount":526,"integrity":"sha512-Ps0Pjj6CHkOKKxgCAXfaWmxOjA6cF050Bup6jsXl40WUm4G/cdCi9ncctuveZpRAoJqhRbGpwAiNhkkXO9lDTw==","signatures":[{"sig":"MEYCIQDDmndiYdosPr5r9AqH9bNiOV049FEqB4tqa/f25XufaQIhAISyseQKHW8jZGiQ2lhkSwtaacnTMCj0Am/EkE5ftKfO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.616","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14947901},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1e1b680b163052d9981815dac72956986ed9c623","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.616_1781296616939_0.6950394038928349","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260612.617":{"name":"relay-ide","version":"0.1.0-nightly.20260612.617","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260612.617","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a855c3b2a485d26ce4aa32ef946afeba6a2bdd62","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260612.617.tgz","fileCount":526,"integrity":"sha512-OJBzkGbW1kAhap82+h48kVGEduh6pk6rNpozXd6Vdj8gf3f0MnjTTgu6Mq1FJsFkqXgvYVUdiQ9v+iU6T7EPGQ==","signatures":[{"sig":"MEUCIHEClqZvqAy1GsYoiFA/EHDNI1o67JlGTqU4gu6JCF0uAiEAqRrTosfLAHalmvzKvI0FDpLr3klzedTW487efMwwHIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260612.617","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14957675},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"21e251929c99183bae694f66233356d2a9df4941","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260612.617_1781308286185_0.812166650301509","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260613.618":{"name":"relay-ide","version":"0.1.0-nightly.20260613.618","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260613.618","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7702bf93f92d75961b4171a51c31a0688c4aaf4f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260613.618.tgz","fileCount":530,"integrity":"sha512-Du3TfX1VQ/SuVStRVuwx5SQ1bgaQAou5kD+SmrMOllNV6NdxwSuYG+Jm0XVDkkLLJthvmMAzGFE4OmdpRrrp1Q==","signatures":[{"sig":"MEYCIQDCY6S62qiLB/FrB1THtn5FIt1YA7xtnfQd3s8IvyLq9QIhAKguzC2ssOjMPaanHzSRMMc+NuRk4atBtyxEZekAacAP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260613.618","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15011942},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"95697ec9c929051e9a681fa200250194fe0e932a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260613.618_1781318577616_0.3401828335943542","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260613.619":{"name":"relay-ide","version":"0.1.0-nightly.20260613.619","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260613.619","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"434f4573f780e4405bdcd1618613d3a8c3c0c176","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260613.619.tgz","fileCount":533,"integrity":"sha512-ub1np29pGNCiBmDhDWcFKngrsrGoetPg8pGKktj00V5OcvQ3Dqn+wQ0azbFTZ1Bgw+4ZL7pd9tRs5hEHoZWcZg==","signatures":[{"sig":"MEQCIE14sI5QdLuj8qGFZPqcVRiGDqMjvOkNAAHGZE89Ecd+AiAFLUP7lu5pogXpK79iHzH+WHy+hFXo5RI9nUJJrAHA0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260613.619","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15072710},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"651168b30ffc8c83e61e03faf50e280a1453f1e1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260613.619_1781332856197_0.7016886285191859","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260613.620":{"name":"relay-ide","version":"0.1.0-nightly.20260613.620","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260613.620","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8f0b3ce1be1e9e31e8ad83a02ffa0b55aac1e8a4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260613.620.tgz","fileCount":535,"integrity":"sha512-VqzTmxl4Ti0y3cVt9EiVZ04NDtpnXyyt1SocliPQ416mkRZU4t9ogSfQTnAIZm0nBBYxV7Kf4ICMDWFGXlluOQ==","signatures":[{"sig":"MEQCIH/sLOpLNRebgljCMzxwSlJ5DArlC4MeajtIn8fmRwmOAiACRZR+aF7qLPHyRJmWRO6uoTvVW2lP/o+7REH/REQCNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260613.620","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15097962},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"535bf76497ad980ea93276cc12d53847ae0075d3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260613.620_1781394245796_0.7625409365779989","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260614.621":{"name":"relay-ide","version":"0.1.0-nightly.20260614.621","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260614.621","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e23684f7f383b905e3853614697f1ac734c6f7f8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260614.621.tgz","fileCount":535,"integrity":"sha512-4ZJikgOw26lPQEoHr8XspnN6n/CHl2Fk4AldIlQ3CGvp3uqdPs7wgOd7O3yOyHRn2IQToa33nsi0abG7qxlcxQ==","signatures":[{"sig":"MEUCIQDoues3+nFv0TYsC0oIYwKHPbQfl0vX7bnczB6N1pL4owIgd7XUCl/O/75ObaFnD5dCS63xUO6X6+0sUVePIIYQn5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260614.621","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15101124},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6a4e5dd42d2c9b163b00bafef57c68a6b1db3579","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260614.621_1781425351266_0.18318859026439682","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260614.622":{"name":"relay-ide","version":"0.1.0-nightly.20260614.622","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260614.622","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"415f90a38f11b9e94552837f67119ce34c714801","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260614.622.tgz","fileCount":535,"integrity":"sha512-9ZiNZ3pBR1dUeTJjPijRBDKZMj2ZJ/F6a0u0juUxHnAiTl11r/Ukb1bT/FzpwQNe+5vqFajc2nQ302Z10pkYEQ==","signatures":[{"sig":"MEYCIQCap+J1RLvRZl26wOf5yJVWXN79t9MvmMFiio7Agj7g2wIhAJQRwppdJOWQPioWROTi9tuVJlp3QxLOAKnMbh6rJly7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260614.622","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15114862},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d84983e4e1d43b7b9c11ccd36de80043ec998414","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260614.622_1781476720973_0.12453723152535279","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260615.623":{"name":"relay-ide","version":"0.1.0-nightly.20260615.623","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260615.623","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"cb88e604ab284f3e8d152f83892fa94e988267b8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260615.623.tgz","fileCount":535,"integrity":"sha512-OFMmuTWjTU7/cjM4bFaoBO7wd7QNV5zVUa9lYihpiHQDBnjJx5lymbXSNT+D7l8UOnA5hEqU6snu49InvNLidA==","signatures":[{"sig":"MEUCIQC7CPIQOk1nTeCTdoiyiAYELa3V8L3jsp5qp5ZmAMSXNwIgK7YwBzuBBxOOmJDCJRSlEl6iFxvEji6q8EmTWsPzmg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260615.623","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15122244},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"da00de8c349b98a6e85b7683f58bcc9a396572bf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260615.623_1781486356639_0.14551851413350048","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260615.624":{"name":"relay-ide","version":"0.1.0-nightly.20260615.624","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260615.624","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"83c000de481293c8b53637061db68f45e00476fe","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260615.624.tgz","fileCount":537,"integrity":"sha512-wKNgU+Trq+WSszYsK0uC6ahDylKiiSjQ4QQHfvx3ePvIh/vw5jSThxeFS5KkCwDb/bZzO5bVEzKVpJmytd9MBA==","signatures":[{"sig":"MEUCIQD+RLyX0p7plmNC78hUW4QRqpuBHtMKZEYcUP8+jC42UQIgK9RDjDjzAGzXEZSySnx9sq3l+sc0KyGH/nzekXiD6Jo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260615.624","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15167679},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"22b15bf33e201a7d7eb6d9f7518b7cc3d6a7165f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260615.624_1781490506940_0.43073987159749283","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260615.625":{"name":"relay-ide","version":"0.1.0-nightly.20260615.625","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260615.625","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"780e3e9bf05a8e0cc2631474d9c5eac0372a43ca","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260615.625.tgz","fileCount":540,"integrity":"sha512-erpCEb5HVSD7SXwasTklhHDkNZOEEO80ioLc+iSV54++AhuF5p7wbCU3qne8GCEWvvqgUxPLlAoRW/YVVYStgQ==","signatures":[{"sig":"MEQCIEyiDuQ0uZTpUxv+gyOQzbErd3FgeAtarqqusG+KJayjAiBQu8l+F7Pzx0URek0plGDm7t9gNHSssJTpjbCYDJcOcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260615.625","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15229311},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"03c25f4a38028556ea70a88586e29b073509754f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260615.625_1781496495230_0.5756752116439385","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260615.626":{"name":"relay-ide","version":"0.1.0-nightly.20260615.626","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260615.626","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"fcddfeea11c63e6402af79ef385773bb7d37fec1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260615.626.tgz","fileCount":540,"integrity":"sha512-+ePTOXOGW62r6lyuysgMP77EMXCCWUGzvFNlwhtsl8cgI+0fNDLmJokbBWWqxmcpUfGdyW8zgVjUXpyN1MOpJg==","signatures":[{"sig":"MEQCIHHm/hdxy2dLx33IVveq8fo0Ah5DP0toXB8d6+8CrO2PAiA6UMppLa1vTSDa+S1hJbtiNO2ASE+Pmlab0+L9Qbk3Hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260615.626","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15229342},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5c696d417d97a013b7e208ea221cda6107133cbd","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260615.626_1781497663095_0.5872838207242146","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260615.627":{"name":"relay-ide","version":"0.1.0-nightly.20260615.627","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260615.627","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e832bb306e538cdfc7674df0c5068159d07e583a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260615.627.tgz","fileCount":540,"integrity":"sha512-rSqmP6TWJ3zQ0HfRqSDJbpa8VE9l5jpbRdikOicjAu3cUPKRC1VB2GeLOGiFmeHPbYe8+MSZz2lP9n+DZBUvRA==","signatures":[{"sig":"MEQCIAio4xmAOyx45HdQd/mkvsm+BSaSG1SdKZhqIdwv11/9AiAHtyuHEpIRNW8h9BYyeE9ZxHgwtpHQkxTBnUpT8b3rRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260615.627","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15229492},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1a7c6fccd146a8b3ad48207e9c7adddadb933683","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260615.627_1781498557834_0.4057571471186525","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260615.628":{"name":"relay-ide","version":"0.1.0-nightly.20260615.628","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260615.628","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1e828c03b6915be44f8972a30d4fc137ee7272c1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260615.628.tgz","fileCount":540,"integrity":"sha512-xdQjwPQr1iinP5J0A92QQFbfejWFO0XXX3Gzp8aWlNdmgnT/ugnUTES/k2WZEjDnMY9rKNt/ySOlGHjBrY+VbA==","signatures":[{"sig":"MEYCIQCS08DFqXueRWQFzL68XMdbRmc4GkzeKOuTL0vNAG+XpgIhAKR+wLWBKeGa7CyxR67kS9NbcdhI2L/vfvZbrXvnlmYN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260615.628","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15229535},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"086313b766b0ca7bf23fb2caf7c8d0b7dfc55d2f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=./config.dev.json RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260615.628_1781499950973_0.13010614062275505","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260615.629":{"name":"relay-ide","version":"0.1.0-nightly.20260615.629","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260615.629","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d7ed3df6f338b309b3c42f5c15e294a3e60776e3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260615.629.tgz","fileCount":543,"integrity":"sha512-0K0q5+VSE3OTP4jxDKitEHBYQLEpqj04efmNEz0sAGOIR6ado9K2oLz/bcP6YfNk1VCY0Oz3MlKaGvYfYi4jKA==","signatures":[{"sig":"MEYCIQCWGBw0j/aB6zB06ZujgjNVvL3Jcxj69RSMwYox3SEPvwIhAO34+7ZxbocWmBxj3zHDetyzpBQVYdgirgjYiM9DkWf3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260615.629","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15237853},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"dcea7e24bfc8dbab029fb08ebc252777398c2356","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260615.629_1781508885819_0.5604826984246545","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260615.630":{"name":"relay-ide","version":"0.1.0-nightly.20260615.630","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260615.630","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"928d1df705e5a0dbdef02ed07880aea2166f5bc8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260615.630.tgz","fileCount":547,"integrity":"sha512-ZJjK6WBPPbov7/8e/LstdpEfTk0xf4M/PlZGBNLPxAfMkvpmVpfyYVQZQzJqpQrTuhHI0M0U52yx1IZUlVbwNQ==","signatures":[{"sig":"MEUCIH6bXD6VNKgOo+PSCYzcEgP4BnrGrecZfZYkB7UllWioAiEAq2xF8cYQYtOuEcriMBmlZrbejtxD8cGMfhkLvTqoIeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260615.630","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15333076},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a2a78892b9bd4bd7ea3c20d92613f98d74330dca","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260615.630_1781518966214_0.03126329369566072","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260616.631":{"name":"relay-ide","version":"0.1.0-nightly.20260616.631","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260616.631","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2f5f35304eec1e4c2ec6628eba73dff26df0003f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260616.631.tgz","fileCount":547,"integrity":"sha512-qBn0ITAEK0AaHE0TzgelQj1yFMvPrS0U+TnSgM3A0AHV96qexEZyHqSidIO3kw1Y/1WMpc3PqXW+a2mU+F/05Q==","signatures":[{"sig":"MEQCIBV2eNOCt/3tAQ7Um4+XK4Uiidn4ImGokf4U4iChFxfqAiBZF1GFXM5TkjlOPMKyOZE8gONQ6wyI8iIokMY+aec69A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260616.631","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15312456},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f891b691d9d978c36366931128e3a8e7c75bce4f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260616.631_1781589163827_0.7488671516335819","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260616.632":{"name":"relay-ide","version":"0.1.0-nightly.20260616.632","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260616.632","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"fc2f693652a161825569f99af760d35fbd6f93ba","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260616.632.tgz","fileCount":548,"integrity":"sha512-S4EV7CJXd4wNSI3REpfI5BmA0nmDK7Uh/SSSpY7FUixLl9VYGFAhTMqB/hVYC3LtpFCSfO3w8hMsdNEe+w+x+A==","signatures":[{"sig":"MEUCIG0smPbymNoP4QUcuqDV8PHRJuVFKL/WwMbNY0mNjgTQAiEA0h/oVCJ5/U6ohb42Madn3FCUL2KmZClfUVc1bzD3aPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260616.632","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15330055},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"90b71a2a346888e8be532aacee0df50e2e35e786","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260616.632_1781599322787_0.09407806541012298","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260616.633":{"name":"relay-ide","version":"0.1.0-nightly.20260616.633","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260616.633","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3d9c7a8523b58e308625b93231d4201bb2d2ece4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260616.633.tgz","fileCount":548,"integrity":"sha512-pSpP3Zr1J6ETIOllDPkgpX7yqpnfKdamddV59/ufKOxZqgSIWP9y87xeYbegwcROxeTWR97Gy6BwLf7IuQJ0HQ==","signatures":[{"sig":"MEYCIQCwdjKt4EWtSbXBHfrAYVA5yUmAG/7yH1bGrQArA6uKngIhAOyjUwR4zC3CUmSVw7ztjHHy791I8SYAp4WYcrFhlnsM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260616.633","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15346149},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d22cfc51a2a610d30849643dfc163055441f9e40","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260616.633_1781645476601_0.4127522481290724","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260617.634":{"name":"relay-ide","version":"0.1.0-nightly.20260617.634","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260617.634","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c6c162c95ef9d608f8285d3337d202d6e761a151","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260617.634.tgz","fileCount":548,"integrity":"sha512-arUSKAM9S8mXsp0Vkl73F81OZlWzoldTcsiDJUkkzOM2RWmOVOmBg4M7GkWeWNRZEfQIkAjNamdrzZjwAo2Wvw==","signatures":[{"sig":"MEUCIQDSIVowhYAVwUIw+FfDYNRKTrvh11XZWIBnyJs3BmECVwIgFEuymBopKcU0gELufpkrfYxNNl/HYIAlVd9KE/aUljc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260617.634","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15346149},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3e4c9eb86de7da476901ef51beae62c1704cd1ed","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260617.634_1781676188545_0.5581522069215956","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260618.635":{"name":"relay-ide","version":"0.1.0-nightly.20260618.635","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260618.635","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"67344ad52e8029ded1b8e1e57120d8ad7ce8ecce","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260618.635.tgz","fileCount":549,"integrity":"sha512-mzBOyXesxsEtqqlyVojt8EJCNSl4PbCfNZ1N2g7uPkM02XbL+H7UhmkbOcss4cgFpdLaV50WFquLQnKLKkDq5w==","signatures":[{"sig":"MEQCIHTSJczw8pQXxAS/DeWVeEzvpZgUQ8dMOGCGDQlQ16aTAiACm5d+Q3VSjtfEjqRffglMmZO8JsLaMpsl2Bc1WbarGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260618.635","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15382838},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2a27435e14040c0a799e37939d75794f1dfc9be6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260618.635_1781750287744_0.8311163946875744","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260618.636":{"name":"relay-ide","version":"0.1.0-nightly.20260618.636","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260618.636","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"728cf6dac6a778235495acfce25a7b5249f84cf3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260618.636.tgz","fileCount":549,"integrity":"sha512-eyuMVpeHvSdm6bi8nYT4T6QHjXyiM0Uhy0j4ygwd2/CrA/KaRxB8Ri5R5rxy64R9FeaFRGBt5NZTUtzpQjvYpw==","signatures":[{"sig":"MEYCIQDw4lXskrcAJX9HMskpF8dQnIHkiTK+xG7yQNv37yKYSAIhAL3yvDGq+xRFP0JsOBidPul76lsf2FiU76A6CsMn5zWe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260618.636","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15382838},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"375ebe97ccaf3486cc12c070709648a90f88e147","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260618.636_1781804110816_0.2206552227166252","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260618.637":{"name":"relay-ide","version":"0.1.0-nightly.20260618.637","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260618.637","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"03644ff75df04ce64dd4a963dbc780facec5d835","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260618.637.tgz","fileCount":550,"integrity":"sha512-BtG/+wuJ3eyiLCqi8rSx0ShEL3joOGltVgmiTnW2torRC1+CyfnGQQ4FIKk+xMIhDfvm6FfQTMb8XJQMs1S6oA==","signatures":[{"sig":"MEUCIQDutcsw/KaX4gAh+9QURaux45LB89kHLIaGI3rH6MPMYQIgeTjg5EYeqr6hs79dlf4WqrTF/d94hLQ9tRQKBr0e7Cc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260618.637","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15412998},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a41ed86a44a4aa4a1dea24318349a8a6e6ac667b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260618.637_1781806305942_0.28047822373399023","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260618.638":{"name":"relay-ide","version":"0.1.0-nightly.20260618.638","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260618.638","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d592285eacc074eff1102f5e601b30e40b090d13","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260618.638.tgz","fileCount":551,"integrity":"sha512-xyi4cHM4tsMQu6Xciy0D4dz0GfmbY/IjmVCTQ+7SF1N1+onxiLGkCjY2H2PiGIIzVuRjuqDc+o+HNS776i0rEQ==","signatures":[{"sig":"MEUCIQDMsJMI44EZnTxfzDwu8BzI3xV2SlUmCIOnqo48McY7dgIgNPtujzM2FoNG0vHjw8DojARRmdR3PXS5EJYUPaDZ3nE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260618.638","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15464795},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3c47ea2a753160bb65fc11d9e2927d05e8702ad4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260618.638_1781822501383_0.10347766825124682","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260619.639":{"name":"relay-ide","version":"0.1.0-nightly.20260619.639","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260619.639","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7d795bcc363d83d3d3c26e7f6e00b85dcf9513b2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260619.639.tgz","fileCount":551,"integrity":"sha512-tH07+sWivzlYQK2h3J3/wyjzqf5D43lhorrCXZWkcfC/bA8uMqzcCrRIj8WQTlt+yvdmdG6nS+u4N4qsHAnDjQ==","signatures":[{"sig":"MEYCIQCWG8w3ujrLrVv6HGHEpWvYtO0KUGbf/lRFuB3G2vetBgIhAPxsX/Q1LTHbPsu0gHEiNldK2CBRnt6JFnGWZ2yJjJif","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260619.639","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15480888},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"92ab65ad41d3bc6e5b5a89124e0877de2be4843c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260619.639_1781901238510_0.9684714068122255","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260619.640":{"name":"relay-ide","version":"0.1.0-nightly.20260619.640","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260619.640","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a82336bd62cb8ced26be6ed6ab045f001354b7ea","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260619.640.tgz","fileCount":551,"integrity":"sha512-m6s7H8rQFsrqzEvgcyC/YKdEMSB8asSCCP+2475W4NdCE5nndu4jbE7kuPBf9c/h53LhAhu9zG31AzgxRLacKQ==","signatures":[{"sig":"MEQCIAEmMnfdEc7IGQOTdg/Qb8MSbB22/cg5NPKSGNtkccv4AiAKM9rx/gW3+VYCIxsZBRe92PdwGvA9KASFAg8KA6hB7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260619.640","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15509739},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1b3d8326fde35923f08b29c60146ab688970a88b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260619.640_1781909682543_0.14616274874660196","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260620.641":{"name":"relay-ide","version":"0.1.0-nightly.20260620.641","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260620.641","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"fbe539cc32efd07accb30fc6b7207644db8b63bd","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260620.641.tgz","fileCount":551,"integrity":"sha512-/VODFqnbZ3qV4t4NwK6Sdjve5KEHaTWZ+Bx6zdx3BsJqnlbO4I9sfuQEi0zrXIypd/uC0accO7HgKiu9l0lsUQ==","signatures":[{"sig":"MEUCIQCUkvppzX30CERGaVdplI4H8zzO4VwpPSe+maSpsH5z6QIgH6ovdktL2i7AxBbdRUmgHchqQdj2LM7+ZmmFeS4KMcU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260620.641","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15536533},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cefacb6ada8a201babbfb68b2c8587d89f62cbcf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260620.641_1781917955182_0.7292588242452407","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260620.642":{"name":"relay-ide","version":"0.1.0-nightly.20260620.642","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260620.642","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"dc1e3c3e7d7424541ec9e2ffa20960dad1d9d1b0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260620.642.tgz","fileCount":551,"integrity":"sha512-OPpn8pDmLRPXwb6yLrb/fs1YFS4ryFwKjNPVeBABtjvYbKxa/ed48o95Wg7kh9RR6nTaK5ctRL7ScQkhibRZRQ==","signatures":[{"sig":"MEQCIGZwfXk9h+eHTagZRSGeNWMZt9nMhPQMS+mPA87ALWa1AiB753f+Mo3nbDDWPQDjhkSe4cCucHadWDbsGpj2VLD1+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260620.642","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15536535},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0700aa66c453e63550441dac74bd279e33fdedbe","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260620.642_1781999402937_0.3666681901351725","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260621.643":{"name":"relay-ide","version":"0.1.0-nightly.20260621.643","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260621.643","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9618ff9e76de8d0361108d8f3eb851602ccc342a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260621.643.tgz","fileCount":551,"integrity":"sha512-gbDCo5fDIDO9Cgy6ejVrXJdk85E+CBfMD0kRpeYrBJLowW/36utDGzuOU0RdkSOPpk/nMtNrk7869Q53nShB4w==","signatures":[{"sig":"MEYCIQDraEByKlO8u8LDMiHhOV6Zjs9uKkKCpgaW86uWpnhGTQIhAMEcGHTlgIYqACfjdmPJ2/F4yCRyi2Q2Fdzz51Yhwq+E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260621.643","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15537449},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0767f356d83c17a824331326246da8989e4b94c7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@xterm/addon-fit":"^0.11.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@tanstack/react-virtual":"^3.13.24","@coder/libghostty-vt-node":"^0.1.0-beta.1","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260621.643_1782001619706_0.25420591391947056","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260621.644":{"name":"relay-ide","version":"0.1.0-nightly.20260621.644","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260621.644","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6e08fb344cdd18d4acdd6d5b433eeb72db946e66","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260621.644.tgz","fileCount":566,"integrity":"sha512-LqqD9GWL7QZc37qlRy+2zpnrag00N3ajM5enySQok7V5jtMA9q0JpZbMSy9rzNC1BuqY707/gWNVz2RnTCSGaA==","signatures":[{"sig":"MEQCIEHJXs8t/OHJpEPlfzS8Pc/xjfPkR8SMBTdDGvbh7DjUAiAfyop0qp2qKYkZFQ5AaevP0KUijPzxdTFqVR/aDUMGDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260621.644","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16273913},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8b09358cad983dc6cb09a5771b462c026013ce23","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260621.644_1782022117196_0.2753783071390705","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260621.645":{"name":"relay-ide","version":"0.1.0-nightly.20260621.645","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260621.645","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"542456f0d009f9df758b32b73c59d55c5d04a893","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260621.645.tgz","fileCount":566,"integrity":"sha512-6uJUHKg3QMnwVty34Oie5THS2tJBSg40F9FyvJGoSxHM9Vp3zYZiiKanWsr+yJCbYVhFqDzwnE45yYxMZV6O8w==","signatures":[{"sig":"MEYCIQD/oPil0AVBQs/xzvI3UYGlScLoi3i7X5PAJbZOFqI/lQIhAI9IZMyfklp5wuIH2H23K2OgspuYvchhcuvpa0rerIJh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260621.645","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16279634},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e0f8474384bb3216463151659df1f972b33e961a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260621.645_1782022454496_0.35957908111760095","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260621.646":{"name":"relay-ide","version":"0.1.0-nightly.20260621.646","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260621.646","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"96ab6fec6199535ee623924fb9a7848a88e64157","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260621.646.tgz","fileCount":566,"integrity":"sha512-joqXBbHStM4QhDzV4xGUYO0ozA0awnHHYv5uTwEgBxABlcgDfqRHysQevFR4vKMn8H8YMGwYVbid2OVFTQS0Ng==","signatures":[{"sig":"MEYCIQDoODYPTX/NAGe9bERmJCeO1c5RPMN/ZrtbANBtN8YSsQIhAINqQnSQptxGhNP1jMqNdyBnCNNMoRk50Z0KOc8JM26i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260621.646","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16279851},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f0cdf81f2f0a577d6cbc80bc08332caa2a85ffec","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260621.646_1782023449922_0.39856640646546193","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260622.647":{"name":"relay-ide","version":"0.1.0-nightly.20260622.647","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260622.647","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"74248289b53b453a7d7c93325ad142cd516c3f85","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260622.647.tgz","fileCount":568,"integrity":"sha512-q5d6hgTivD247fetfSLCZ1N6pCARFmI9pKbaryXex1JY+Rp+mOGQ4zRt5tPUoIkjtKNLA6eGaGi0FOiagLZSUA==","signatures":[{"sig":"MEUCIQCLgvCT7qrOClIgtVHAzE1Ja44PZVTTc0HsOTgbnymP+gIgeAbaLbgMgwhgVjfY8EgA7/6STupaDFdNa2JCvMIalh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260622.647","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16304942},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e47b8c263965e483ffd511d115c7f439d643a3ab","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260622.647_1782108448395_0.7333955286795664","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260622.648":{"name":"relay-ide","version":"0.1.0-nightly.20260622.648","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260622.648","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"807d055c36d1b4a9894ff5d067aec311f9056788","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260622.648.tgz","fileCount":568,"integrity":"sha512-iGegB5hjX0XDQkJYfg4YGzZk5Zbrq/KfYHf6jq0XDNS2HTtRh5uVeLKPdYvPxEW3gKerBW2scxXkl4T7OBGbpA==","signatures":[{"sig":"MEQCIEC1URfNNdlYhzP1S2WeHVuMYBH82965nRdjJfQrajjdAiBAqmsd3ZBn/Nwoio3JwO4XgUV+7WSzyrYvh5kopU1UxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260622.648","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16311198},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9f0f28867823018c5599bf772f20494d14ce309c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260622.648_1782111788389_0.37407758341763775","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260622.649":{"name":"relay-ide","version":"0.1.0-nightly.20260622.649","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260622.649","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6c40726d2ef1633fc5e52b97c44cfbb03d4691bc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260622.649.tgz","fileCount":569,"integrity":"sha512-U69YBuAsSlfpFTMO0Hw1IZMWPhuiluY/2nuhWBB+Nbfq+3EIBLvd1R+2QwYDJRuYcENi0Mc1acHF5k68ntYSmw==","signatures":[{"sig":"MEUCIQCjZY/H0BWEn9P0chpnYAdzn3cqxPe2WuQwQHCqvswmMwIgIrcfja5FysbcqdbJ1lW2NGN+BE+AgE+Lndn9Xx9UsWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260622.649","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16320713},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"02b4f9387f55a6f72ea7a5df42a498f7612ca891","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260622.649_1782116260296_0.1905205108343211","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260622.650":{"name":"relay-ide","version":"0.1.0-nightly.20260622.650","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260622.650","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e2f0528230f2ecc299d8cfc0a739df71ecda7dd3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260622.650.tgz","fileCount":569,"integrity":"sha512-udWdVT41NZvqDs9+eI08arVDdW4MfEyB8JzZLJNtqPd4jVK+KHynbr8UtDSV3XSaU3FjzMc64csqkNv+gTo2oA==","signatures":[{"sig":"MEQCIFi4x2+3jSKl6M+qROJgw7kIB7lwO9HaJv1Q3lWqNdJzAiAX8k5nxGu+fCsytEyZScbmZVuEkN+B0gpUzRxsDUXw8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260622.650","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16330267},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cea8d3d099cb3b2bf766a43567ea0f041fb6c0b4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260622.650_1782136349738_0.3776806143286515","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260622.651":{"name":"relay-ide","version":"0.1.0-nightly.20260622.651","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260622.651","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5655430eada273f13cdfe197120045992f512f46","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260622.651.tgz","fileCount":571,"integrity":"sha512-66lHFjK91g/ZdD4FL3gGAzsGZtJPaYX2JEwwUnB0q7SXgIyVEzNpCCjZUn7+g5VLXPqFs1byvJ6b9/ngzR04fg==","signatures":[{"sig":"MEUCIARPMihtnefnNNX/waS6Y+PFgyybswE6M3KAGLj2+DrRAiEAlRP1zVLH/XkZjwNB0jfAo6zdFZeIi75So6+ZdnkUBhA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260622.651","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16349577},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cbd80d48732c62d1d43f1a1be923430398d668eb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260622.651_1782140870018_0.8332901906981098","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260623.652":{"name":"relay-ide","version":"0.1.0-nightly.20260623.652","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260623.652","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d3566b40c4ecadf535567336ee2f2bfaadfaa9e1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260623.652.tgz","fileCount":572,"integrity":"sha512-IOQq05R2n2PAfE2TlX/gc0XtUQORVrv6I9Sq2s8xgvGmvYDD/TXsGd0dywCkAwpxWXKgcxLY3YyQ9zHACgG7Tg==","signatures":[{"sig":"MEUCIQCW8jJHX5diRT+3my0hKSpS02/oTJ3S9+DEoAdEN8DuzQIgBMx9EuPV1/jrI9tnlIHaPzSorRDYEA/c40McgPCETq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260623.652","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16355938},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"95ae087d2b41826f1a885b3d7bf4ce0bc7ba46c8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260623.652_1782248393728_0.09548442243771849","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260626.653":{"name":"relay-ide","version":"0.1.0-nightly.20260626.653","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260626.653","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"814f1488df7692279487fb8e8b578e0dd13a02c4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260626.653.tgz","fileCount":572,"integrity":"sha512-jUk3uqMI72CPtrqGWW8ru/9kd7+UTIyGotHaPP7WsU3Fr5GU0ayybtyCXPKGUHoUPmpKaKV7s6Bakdw/gvPGaA==","signatures":[{"sig":"MEUCIEtR4k/kE0SB2buF+E7hQ7Ac9/IrkTrrOwiOo2Auj5mOAiEA6QV0Q7uQiXZ9smJuiZPlS/cbyAkl9V739XtBLcvLLPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260626.653","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16372525},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d2b4bae826705fda58ab44346f978070040b2f19","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260626.653_1782455012185_0.29318643577543013","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260626.654":{"name":"relay-ide","version":"0.1.0-nightly.20260626.654","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260626.654","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5f6807edba1b5b36255275fa7729514e0faa4fe4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260626.654.tgz","fileCount":574,"integrity":"sha512-x3I8p9mHq6X7igT51T6tu/8B7AzqpZAhTZ4i1Dl8zHd+SynF/MQHBAO0dZZ6kJj5pUw5pjmstC/ErCLUs/4rlw==","signatures":[{"sig":"MEYCIQCTBeZ6IUFRWDYTS+E4DNN5DMesek6sC8kQau/qp4iIyQIhAKQVL79rQ1wzWitPgSFyYqkLkm0MVSvhPFeThV5d1KIM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260626.654","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16417250},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ce0a9e79187d2f417fdcb9dc605b2e74c49f459c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260626.654_1782455908434_0.3276769839875566","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260626.655":{"name":"relay-ide","version":"0.1.0-nightly.20260626.655","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260626.655","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"eaf4d1b2e8b3c7061b52bd126f7ed5693c4ea4f3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260626.655.tgz","fileCount":576,"integrity":"sha512-vWYQzsWhmidEGLdrkZBO/kX42hOw6T4cKvOYvMUyiFAv0go546IWVkJjcN8ac1x/ocd6Q6EYQbsVtBvRFLvvgw==","signatures":[{"sig":"MEUCIQD/5dhDv2co+iCsTrllHThFLv8VQv8MFjhhScBNLn//9QIgJJgbJYW1ocHEjOqQfcnuw9In6lkSEsVH/t9pMmB89hw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260626.655","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16485361},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6ab0aacc37e90bcc13c0575e270c1063427fa0ec","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260626.655_1782497716115_0.8989762500571292","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.656":{"name":"relay-ide","version":"0.1.0-nightly.20260627.656","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.656","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"93e095ba58bd6bc384d51b742ebff9c0e3879d80","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.656.tgz","fileCount":576,"integrity":"sha512-bpsojPJL0tS236GNkyY1OVfdDDdSqMOel0+4GFaA3ySJADbDYBgllfio/I1R4qWzlU8QF2TfCsploXdE8zPyjA==","signatures":[{"sig":"MEUCIQCFMd+eeD994sw72GGbAWuCKZNjUZK9gBJsjX6Un102sAIgNg49gsoq2T4aB8vTNgS6DVlAr6yGFQFcttfk/4gPQuQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.656","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16508071},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1d7c5a55d2b0887acfe2634e9a51e33ecd35eefc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.656_1782535749186_0.2890804770552178","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.657":{"name":"relay-ide","version":"0.1.0-nightly.20260627.657","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.657","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"fe9ff6c8bc0202f505f379c69d842f85acb0b92e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.657.tgz","fileCount":576,"integrity":"sha512-zttbOVHhXJGHclW70v1gt2kcMFmKqIHvDgaFLRv9KMia2tTlnD3xrUzNy6Xem5yyOpbvOtff24KPk2xahzNO9g==","signatures":[{"sig":"MEUCIQDGlE2tGM8piu45RDFi96EBlYNUp75r9OM8MN2Lgi4kjAIgSHg1Fw67Fcsf5Hj4SLLzZBSreyFnZ6Yg2eST+hCQagI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.657","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16516140},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"11c95e9ebdcbfae1326332721d823da5e6816eb9","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.657_1782536067967_0.6014390218467185","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.658":{"name":"relay-ide","version":"0.1.0-nightly.20260627.658","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.658","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5362f68a25eb0aef38788bb28cf5de03dc31d54e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.658.tgz","fileCount":576,"integrity":"sha512-CRhl9Z9I5hIRDbZqD+teqQtP24ry0etu6tTB6MOEEkt+TVjysZggSqMwj1sjDfUFVDyuUo3vYMthx56TtqDtOw==","signatures":[{"sig":"MEYCIQDTnQQW2Qx9a0xUoF807vOxdMxQfonU5IeEaxWmA+nllgIhAJiHjVQDSDWupqgQDXz13UtGUXRusTDkvVs18MGkrUmJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.658","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16545831},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"033ef29b024ae8c9af6c58f2cd733102e14c362d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.658_1782542219720_0.8523194451822411","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.659":{"name":"relay-ide","version":"0.1.0-nightly.20260627.659","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.659","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"19884568c38d95342aa526dad6beec2ede9d0538","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.659.tgz","fileCount":576,"integrity":"sha512-tsMoYdqtWcCfjqeA058aQ0RLjw/fjxHcFm4hbhKOCmlzYRCA1gRvJlaiCczKQe27/HoUoJ9w2WPmjbYVOixjxw==","signatures":[{"sig":"MEUCIFffFEvkzWe3Kn4APhuDXr+j87PvDHYp80Imjd9M2/42AiEArQHwN/j5zyVew7TPztUNa/Ad6K1rHJp1CtSAnAiCriQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.659","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16545781},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"347b2d848fc231940d9c26dbfffd9a3363b99c79","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.659_1782573971148_0.3394970402575195","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.660":{"name":"relay-ide","version":"0.1.0-nightly.20260627.660","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.660","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"863521a979638abc7ac9f75dd1dcc235c9a1aa9d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.660.tgz","fileCount":576,"integrity":"sha512-DZp652VrkDqT+Htce12VxWNre1SC7hP7MiKMfqoEIiccjDbB00FBd3md8X1W1pQxKpE7gPQLi4dI3DTi/CEGqA==","signatures":[{"sig":"MEUCIEwI4k6+hzAQStOrSiVLcm0njvyRLxYquHYXZLEVFED4AiEA/PQE+ffStDP+K/b8YvkYW8QvmnZ8iKEK0lwq/daTiIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.660","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16545591},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bac1a638e936e91d36fbb9ab0721ce4a512aa68d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.660_1782574765607_0.22331928132365575","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.661":{"name":"relay-ide","version":"0.1.0-nightly.20260627.661","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.661","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c579da9a096c09316fcde0e0d7646d6c53ffde87","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.661.tgz","fileCount":576,"integrity":"sha512-5JmaAWkWwWrlbZm3pb4Djkl5CGnXPyzk1XsCQMViix5SYWUSZ773YiFng/ubylTnRQ19q1Re3Qm7D0RTkPUnQw==","signatures":[{"sig":"MEYCIQDKGRK43e8w6w4pmnfQADQxE5BBwSYYCkRniAQCRAhGdAIhAMAq/Na7dGnag06yJ4GpVMd5MP/jvxWp0WH1uLHRo9ZI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.661","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16545591},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a4f90606c6904e52c7a05f598c020f2db2575174","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.661_1782575604408_0.9128843210686819","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.662":{"name":"relay-ide","version":"0.1.0-nightly.20260627.662","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.662","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e60892f75828bda08734097b625666bc648260c4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.662.tgz","fileCount":576,"integrity":"sha512-isc5jglllO3xKLkH+V2aUclngoS7mVxCb3kcTNUKCO3ifQ+/ZNA6KqEMifZBP78ICsZIMfs7RRaG9Bv2uuZUyQ==","signatures":[{"sig":"MEYCIQCjy71cpBwpjBMPTiw3mA9rXEMfahfGoRNkqWYN58b7iwIhAI3zGtJMd4GSNKpoeZqjGrF9ZxHnYpUUfSKKrWxfravN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.662","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16557369},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"06430c993ea299168479d8def83e7bef5080fc8e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.662_1782575870638_0.45617551626705444","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.663":{"name":"relay-ide","version":"0.1.0-nightly.20260627.663","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.663","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d1c5425e42a2598c2084e7b32836b80680ac0f6c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.663.tgz","fileCount":576,"integrity":"sha512-LDQdsRMLuhjj763v6DBc9bQVMiinylG9+MXljh8Up1Ni/+ifBaIZ+2noudheqFoR2TVVAhV+tRxXyrPRM3ar/A==","signatures":[{"sig":"MEQCIGM6v955vyJOS0XJTieqbyljFhBZvQW7n3WfKYWg9NoUAiAfnsWq71IfkYRkgD1X6a9r48eqas+X/U34FP7OEXWDOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.663","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16557369},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"48211efec2383511e86de585750776a1a9c057c4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.663_1782577557116_0.23543677444510713","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.664":{"name":"relay-ide","version":"0.1.0-nightly.20260627.664","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.664","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"82c19e24538e058993deb0e571d0bd3e0a98e29b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.664.tgz","fileCount":576,"integrity":"sha512-fcCvcQpUt/BAlk04v/LpbTVlQxJMheE0Td58xZeAAPHyD9aAWtUJRqeO0JJ9oyvPh7QQG7VESBIBryFGUJxfxQ==","signatures":[{"sig":"MEMCIF4sXZDuUjDv0ldvs/mNTAJntyIBQ+/iI5GDyzLPTITNAh8JZ8Vdv4xn0hZa+vtrYuNR21dLMwoIbYWi9SOzLrV4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.664","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16557369},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"59c381b971cd69442fc7a2c70fb060878e0c7fc1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.664_1782578080417_0.8588901305556589","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.665":{"name":"relay-ide","version":"0.1.0-nightly.20260627.665","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.665","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"262a87bf33d82a64525c58fc65ad24c3d9bf90fd","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.665.tgz","fileCount":576,"integrity":"sha512-bfWHhIWcW70nmZuQlJDRfB3DK94vm/I3K55Cx5ouofBVS6/oKLBxBRc0NQ/PoF3NabpmgS89UfRsV0dMiK1t9w==","signatures":[{"sig":"MEUCIEs2CCf7Md8FukIlk0Ry2/d0YgUYGOcVJZqMtZIwRgaVAiEAzL5eLNTAH/WdDM0MUmI++hzLmzbw/HOZX63UhiVsewE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.665","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16557369},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9ee4bc7cc228372b477daf9291537c5f1d137e4a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.665_1782579114655_0.9495310668400627","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260627.666":{"name":"relay-ide","version":"0.1.0-nightly.20260627.666","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260627.666","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b12af1f327be6935a1414893be0f64e90a274295","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260627.666.tgz","fileCount":576,"integrity":"sha512-SmdR+W3zjvwXkpm5dADgIq/RVGaDFjg57lfcXnR+isUUt/V48qoUehHeVzPdaTFdWyy6VbVEhOWZ6vl/oOOY5g==","signatures":[{"sig":"MEQCIErnlVggxmSYLx60/zBTDu0bkBbz7xlwLMkTZVMbhb9gAiA/LErEt4AmNUZu2Nkf17Hd7wU+rhwIjcLdkECYnArzqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260627.666","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16557396},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8751feb25ec8e14c52f3169ba20277ef24d902cb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260627.666_1782596103341_0.911075776690532","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260628.667":{"name":"relay-ide","version":"0.1.0-nightly.20260628.667","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260628.667","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"75adbae61f3352ea259956eebc17325c03070951","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260628.667.tgz","fileCount":576,"integrity":"sha512-MDt4QdqMEhYQRmjE3IYRUKX89o7SoWMSa+xuFAFBLFshRMm4ceGsGJgeImex/NblS3MQYHLLmp5jm66t7SADGQ==","signatures":[{"sig":"MEYCIQCkVzvC7ItreH1QHmtozarjG8VqxXIV+l5qAI7GYKtUlAIhAJDSKH6wGKsyadY2SgOoqBVfn3KNPZkC8iJg+s2vwRIh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260628.667","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16558416},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"54d8c1a1c176ee7469a9694c05d8ffad9130ce19","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260628.667_1782609972040_0.5513582424941663","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260628.668":{"name":"relay-ide","version":"0.1.0-nightly.20260628.668","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260628.668","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"27e17e488e786777ddd4d7e84579bff4b7882f5b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260628.668.tgz","fileCount":576,"integrity":"sha512-v1DMQNtZWFFQSSx29dOgYCHADeJ4VIVy49eEYjzlZoyGu0dUraoUf4QxEr4T468LvULatJWPDvbmnkycKF/eeA==","signatures":[{"sig":"MEQCIB4nQ1butLICQZXUlI6DxuNhtj6l2lAygnSETSWfl/xIAiAczN+4ivcuAmEViLvEUNpg2Q5orGF65DLqOVPg8yATYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260628.668","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16558493},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e7afcfe8e86d3a0c15062f7584d6a9a6332b1051","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260628.668_1782633480854_0.9866925949560224","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260628.669":{"name":"relay-ide","version":"0.1.0-nightly.20260628.669","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260628.669","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d3a4716c187230d3bc338014443e340bf1b4fe59","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260628.669.tgz","fileCount":576,"integrity":"sha512-9uFsVEx+VhQOKSIMCpD9r69ZLc+JSr9p+KpVomlvNtwGtecGW1hfPfq13Rqzywq0qSqwVMSZC7qOz+ItKrBYUg==","signatures":[{"sig":"MEYCIQC/v2BQSZ77ED1tFguPscwnRpJ4Axsx4PwnSKzDeR3qcgIhAJOtCQ2AkhuYr4hQDit/mlGaSl9kndoWD6QNFjgquMHe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260628.669","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16568916},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6a33d3bf6dd3d2849122b1f62312fe5aa280c2bf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260628.669_1782664767983_0.08350292031711848","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260628.670":{"name":"relay-ide","version":"0.1.0-nightly.20260628.670","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260628.670","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"22e44b001f6ddac8eb2daae118920bdec7d791c1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260628.670.tgz","fileCount":576,"integrity":"sha512-DlGVSTK4jejqdbjJcyUqPeX40SHdle+NtTsbs3FzVZu2IH1sLgw0xFbD5nrHu2PqzX6VwCKRFto154ewPvRRgQ==","signatures":[{"sig":"MEQCICgAjkptLD46bS5GeRrxTOtiUqAyeII3bf6l+RhuXgUMAiAdVdHsj3BYTzuEpy+of2JtcIFa/78Bb8131tRtV4axMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260628.670","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16579434},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f9a8532d1fe520f6a5dbea4d0adbfe08681ae625","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260628.670_1782665385193_0.6603225880274224","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260628.671":{"name":"relay-ide","version":"0.1.0-nightly.20260628.671","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260628.671","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"597f61f2a7d48c12c178ccb8f14a2f801e945aa6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260628.671.tgz","fileCount":576,"integrity":"sha512-mIeg4rYe7IiLfQVe2vWbeQ4ca9euHaeJeAbFg40nEsVUo6xAYbYzALzUH5b9fkZK4jqcDWjDs3+XeNseewIJbg==","signatures":[{"sig":"MEQCIETeT1obUIpy/wwx8RdAFVpjQnW7wAT7+9KNitfa7WBmAiALut+nJy/CCpMsQ7gPPhNbg2ZAVy7ZhciUoHD3W6SoDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260628.671","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16579451},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d11e81f1733cfbef8d7794d3a46dcdfb35624fd1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260628.671_1782666547838_0.7508816593455465","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260628.672":{"name":"relay-ide","version":"0.1.0-nightly.20260628.672","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260628.672","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"df666a094a5278b9d61abe6bae7281f687a92a67","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260628.672.tgz","fileCount":576,"integrity":"sha512-ZgwfjnU9UunzrzKwEKgaiOZCaXTIMyvtZnii8sBFLOh20UALZJ7TPM0zpIgXzJfE0E/IGMsHbE470pxi7/hsAw==","signatures":[{"sig":"MEUCICeOTYkCp8jvlC4A36ucdFSx9j4nlNERVs7GgfH8GS/hAiEA82Q82IsJA8Pv8aDXHJcbRVDv4vQCrI6q3T4ymsuVr3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260628.672","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16598944},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f3743495eee4da9fb75829d95667946dc2702749","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260628.672_1782667261977_0.6212102141334996","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260628.673":{"name":"relay-ide","version":"0.1.0-nightly.20260628.673","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260628.673","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"64161d8ca179628fd87eab73845eb1ebd51c70ed","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260628.673.tgz","fileCount":576,"integrity":"sha512-pLHm+1DcpmQtwy9PmPavpM2PZrE4xOlX1tOuAk4phWL4ukHn2N54q3tW6wmUG94ALIBekiLz4nav5EI94mnawA==","signatures":[{"sig":"MEUCIHzuqZvba1/E6HbF7Ydd4nVJc2PaqB1lLZ4Ua043EdAQAiEAmBDM03a/MTxPg1llPsLg1BDFrSK9+bf+yjLLrIZ5SF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260628.673","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16606553},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"88aef2be969adb24f044d02d83ed3e2fe13e9d63","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260628.673_1782667972782_0.5741804536681714","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260628.674":{"name":"relay-ide","version":"0.1.0-nightly.20260628.674","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260628.674","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"09d2133c5611eeaab19fa5c45e74b48edb91f23c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260628.674.tgz","fileCount":576,"integrity":"sha512-+7LydbbZzOQYq1IZSKs2egRcbCEpwxHjpNcjHxEDdezWrkEf/BZxk2Xo+vRy4CA9LBnUcRPzWQGwxrI3vhUrwQ==","signatures":[{"sig":"MEYCIQDrxdK3gPAYfF3fWU+gu4UpfQD2XES+CMpKVq+DDxXBDgIhANdc90bV3dAyilhBw8ly/lbHbCtL4Rmvz2rXhxT/kH73","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260628.674","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16559885},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"30eab09ed82accb7d0dc2de8f50df8ceb956b3e0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260628.674_1782683921151_0.5095266040525748","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.675":{"name":"relay-ide","version":"0.1.0-nightly.20260701.675","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.675","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"313d9058932b181094a94798bfb0e5cfed8870ac","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.675.tgz","fileCount":576,"integrity":"sha512-EBLIXreJZQP/d1c3AZdn6AVE+NBHZ7+2f3sAiqbPgq0gC2Tnabmx2JBd4dsXB7ZqsiCrSRPtdgI/Ydl9ywKRpg==","signatures":[{"sig":"MEUCIQD0pqbGdQhO71mmd0ntQWNg0b6fWeR0t7ejGAX3EWvpiAIgdG/DmHFFhEWka3UlZqAxCNY4ybdz+YoipCyRv+0AGBs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.675","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16562443},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5991986361b3d5d91ec825fa7c8ca7a22018537b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.675_1782889903807_0.6785037681709345","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.676":{"name":"relay-ide","version":"0.1.0-nightly.20260701.676","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.676","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ad9b79c44eff31c505276b5cfda5553a059c8bcb","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.676.tgz","fileCount":576,"integrity":"sha512-J5aQqMm7cPZoAQj66k0jvC0oei3aljHU4SgBxRIglPPw89wF2yb0jUSQQpZeQeH0cpbTbZOExVHwE5L9Z4R85Q==","signatures":[{"sig":"MEUCIBRtS4GjejChGXtfLPXAsKEaDHD1cLgACH40LfeJTATMAiEAh47YRNqf73PtrZsFdPRYIH5JyHT8KPF1ASp0c0l4Hug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.676","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16562443},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7c6382c903a345e71d2c9ed09a61d806b1722457","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.676_1782889917393_0.09722092866430976","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.677":{"name":"relay-ide","version":"0.1.0-nightly.20260701.677","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.677","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f22ceb2b5312fc44bcaca3be13033ea91dd474a7","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.677.tgz","fileCount":576,"integrity":"sha512-atv8JBjovcvR+szLoJHoPs5lmZl5n78kfw+4lswh+HUGaKhldCZSJBWnZ3lH5jFMxAMrslbt4hLI7PtBYmaYkw==","signatures":[{"sig":"MEUCIA/r+pizzh/2UgWLgh/FEs57I5M6DTiM/7oKaiLqciwjAiEAoaTTCAKywmu1hLgKdkxGE+lWvjDPq5K6TGDAJJ1Sg1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.677","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16563452},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"647ebcc5023d29630c2a29c77cef2debbe0d126d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.677_1782891005289_0.016850829033730808","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.678":{"name":"relay-ide","version":"0.1.0-nightly.20260701.678","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.678","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9aa5ba314c8e1f82ed2a482a76c141c2f503f969","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.678.tgz","fileCount":576,"integrity":"sha512-RIN4AtSKton80+eEKfCzvgn3oewiGromwWiupqD+DlAmYviP3TpIeSlNMUYMauoH5A+C1tu9SDl/QUWXYcQ6rg==","signatures":[{"sig":"MEUCIQC9FbHA1rdoy9LQ7oT3eb/rxbhAHQ+LEbeNISL93VbSpgIgNHFhH+AdYlMBtTBTTbtznWhFjS9my86LTaJ3vOFEvdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.678","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16564498},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e8228e171d01361e23b6badae91c3a017e8af650","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.678_1782892095629_0.5535534651391174","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.679":{"name":"relay-ide","version":"0.1.0-nightly.20260701.679","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.679","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6131f9f3411cf45b41b1a34baa391d35b233e29e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.679.tgz","fileCount":576,"integrity":"sha512-UANTfdaYnXOirpJb38Rxj4LrEcXX2vOxveVODRQKbFiW3HrpZWkJE0R5UE5VlQS+iyKkbITLjmC78RqQjRuiZA==","signatures":[{"sig":"MEUCIQCC+KCt/JX4ES3VLm23zxRY538seWXB8jIwAKUBzRJ+mwIgCHQLGGy6vAvBmHCmpfWjhxBg7pCPXv7UzAXKq0eBbq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.679","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16564482},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"503300c47f9f21e75013120b34b3c7be615e1930","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.679_1782892947608_0.18419210427698562","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.680":{"name":"relay-ide","version":"0.1.0-nightly.20260701.680","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.680","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"dd129f5bc9e34a361a72d47c8636512c9772a173","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.680.tgz","fileCount":576,"integrity":"sha512-iaTE/BIYIUpVA/VraO9IAsqXT2mw5fIInnR4yOLtXe/Rf1WQJmWqWmZHwS0oGUU9Mqk9pcJhc7yEn46Olrmpig==","signatures":[{"sig":"MEUCIBBHLhWRF6HUOJoR/x/BRi8K8ag4eChsIwQsJ+18McnEAiEAq+450LjSKHYiYd83p9+dMU5An5scBJ+oMJrOR3u4JTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.680","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16566027},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"860dcc0c8b7edabd02274f1e9d841f83fe0ac4ef","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.680_1782896771074_0.297571418952705","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.681":{"name":"relay-ide","version":"0.1.0-nightly.20260701.681","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.681","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2453dad13c4af513730ecacfb3e8e62f7327366a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.681.tgz","fileCount":576,"integrity":"sha512-oQif+BJAlA38kpNmAyVX0Ow80g64beUdBJHD+h50SIIX35s7ojM4EC8jIe4/jGx1Hapro6UJBKh/u+I32Q+t4Q==","signatures":[{"sig":"MEUCIQDkZlK1/cE/CNs9gWxvGUGzYdps48nIo4XE+k8o19pKGwIgJ+H8DJLQsn+Swckue43P+Z8L87/VTjufvLpgAhM/Gxc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.681","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16568866},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4e87769b96bf1018fdad5e230a40511aa7f3ac6b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.681_1782898103923_0.9279710172424314","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.682":{"name":"relay-ide","version":"0.1.0-nightly.20260701.682","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.682","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"81f344a978c2c929293c3e66ac506d401e649396","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.682.tgz","fileCount":576,"integrity":"sha512-6bb/pDstjyVy/rRGYXDa22POI4hKhF2CZtPzXo1ty9c2YC/zc0tssJs/m52F0u2IOYqzw6xIRuvwc0nzwamB1w==","signatures":[{"sig":"MEUCIQDUK3D1en2EnuMJ+rnDzNGqwugM84eSTE4YnGbLFH+UCAIgIaEhkkBqiwhWjgwcWkVYgqqaQX4OWhWFpC2eB4kNh4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.682","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16570502},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"68655f8fc3473345564ae362720d53e14e0e161d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.682_1782899195572_0.06974144064911014","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.683":{"name":"relay-ide","version":"0.1.0-nightly.20260701.683","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.683","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6429bf3753ffda5a97b804194ae031957c431d83","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.683.tgz","fileCount":576,"integrity":"sha512-eO8gFXV5riKN0o+7LvpCX/4L4Zvzut93tmZbA4NDTVjgKY5FZXkfpsx9UIe2OybIzBQB+jrGfneddvc1YbLHfA==","signatures":[{"sig":"MEYCIQDMSwmLRPzCGi3dI2XPM+4PtrAWVyGiNZCPzd6P4YBFQAIhAKRJsmqieioMqoJhVXMrMoRZFy8eLdKfVntfArXvebI4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.683","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16573590},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"073badb2989564041694bf18831f6a7bfef746ea","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.683_1782899834423_0.43744451004944374","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.684":{"name":"relay-ide","version":"0.1.0-nightly.20260701.684","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.684","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"29618b568f6e3903f0d6b06774a1c8117f94afaa","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.684.tgz","fileCount":576,"integrity":"sha512-y+4b4+Czm+QT4HwbfBwR7iR7ZRKJ70ngnCWVSUF4XUr30sC38tV0U8Ca8opaCTjiBIIz8i2rgJqYdJhVS2Wmag==","signatures":[{"sig":"MEQCIDOd92fDNFZJJeXIjxhxDAk87OZQtulOmqjPu9HzfSL1AiAq4Uk77rl3sYHst7gecVsGARnJXd4CVrg6LNlRQlejGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.684","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16575087},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d1a620da249f069de91acda47e440a75904f470f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.684_1782923647250_0.9822715041036143","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.686":{"name":"relay-ide","version":"0.1.0-nightly.20260701.686","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.686","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b11e8cf076cbf4ad7aceee79a7a61c7d0108aca6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.686.tgz","fileCount":576,"integrity":"sha512-5MRxVTGlmx/h9ieAZPEJ0X/fuY/VAji+OkVE+c6FMl4W0fHlRGcRyvB73WiX9hvsf9DBJWTQ0g7W73rAxA9qKw==","signatures":[{"sig":"MEQCICNb5UaIp/tLmJPcCaJhO8w2iQtGX+vvGBIb5M3vHUMjAiAgahTsw9B/6buKNoLT2hnsDJCMAfGAMfDCLy5GwNdG7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.686","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16577895},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f47d04f50ee069a651c0b3cef06c1aacfb7119d1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.686_1782924708831_0.00848429607261636","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.687":{"name":"relay-ide","version":"0.1.0-nightly.20260701.687","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.687","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c6a459d96725867dc4860aecba85b120e6434925","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.687.tgz","fileCount":576,"integrity":"sha512-JsUsTx6H1u6qyQwu/hYAB8FMOe0pbBSkuJlUg8RSvf3SjoZrFaKtZnBl9TwXZz8wHoRJi98THmaAm+duhukbcQ==","signatures":[{"sig":"MEQCIEOJjqsuXRuM1o725o7AByptltLeRy4FSCugj8qjsmddAiB1hRH0a77GJwx7KJ/mJ7b0kLbFgY1rAODb94f5vptjtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.687","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16579867},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4351dd488a45ae8daba057d81af06b0980e323bc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.687_1782926349618_0.30666406042288386","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.688":{"name":"relay-ide","version":"0.1.0-nightly.20260701.688","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.688","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5e2ada7767eea3fcc5983bd0a88481d5d899947c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.688.tgz","fileCount":576,"integrity":"sha512-Z5A7KbwHAvXVaAeyagd31uf5okCE4FH9rPMplwn59pVZl9iqoex0bZkRCpfym/LBHR97FxBeGhiarE2cUtzSlA==","signatures":[{"sig":"MEUCIQC3Rj1iPx6A4fvT1XND5hLdz9WsiuJ+sPCXQMXdbiTNlgIgUnvHuKJ/++uxIMu1qk/f9yYIF4lcjJK51iP7MbliPD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.688","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16580952},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f379441cfa254a64574426a903246becea1f980b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.688_1782926379063_0.8419874185278589","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.689":{"name":"relay-ide","version":"0.1.0-nightly.20260701.689","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.689","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"99e7af242f2b2cc7d86fb5a2e05364109467a415","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.689.tgz","fileCount":576,"integrity":"sha512-U1Q05/AP1+1g1iAFEDCXewrFDRh+g8v1khEIhT8bbMq3syk/eZj23JNpCgI9RplkZ+lHeO8k4Ige0x30jheBSQ==","signatures":[{"sig":"MEUCIQDK5p15NQ+jSweU+h04u26gA3XjHDK9v2fE4otTtyEbXwIgT3K4JE785pvRQcBqdJwKod2qFFmsRdnl1jE1HI8ysTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.689","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16582254},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"237922459c8b7cd3cd1969cc22801aa68f418717","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.689_1782927081359_0.05082076164891802","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.690":{"name":"relay-ide","version":"0.1.0-nightly.20260701.690","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.690","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ad0bfb98b0f9a69cd81941620a666383f4c8ef1c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.690.tgz","fileCount":576,"integrity":"sha512-trCYqy2qt+lHYtnXjAGvn6LfIYuYDRowq1wn3tYKPmaBorTtMSzxJ0ysaoDE5u7gzxd/khgSaCzzzSeJUoYccQ==","signatures":[{"sig":"MEUCIQDmvDWgiKc2QYtnvHoVVp6pj2TeigU6S7R53ORQFo9pHAIgAsLiFqemErt6GY36H9PQ8sYu4As7BTGHLJq7N9iDLEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.690","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16583092},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"16253f7c69c73913fd089fd71d8ef4d632c9abf6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.690_1782927802539_0.9013256019118538","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.691":{"name":"relay-ide","version":"0.1.0-nightly.20260701.691","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.691","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b40d3efbeea326e53e1e154e2d088120fc9090dd","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.691.tgz","fileCount":576,"integrity":"sha512-scPjkDpZ4uLjfg8xgf/hmxP2B3oC9R2SAw5X/K5NfleW5xFyrDkIrbhYMBHHKC/c56y00x6nf8PS5ye+TXO4sA==","signatures":[{"sig":"MEUCIBakUiVUI02uwXliCnFcU3ofmKJeyqYnU7PfVqxaVlnAAiEA3Q7G28sXlBAMjCfgerKBeExu9V6dm6n6RhQV5x3DYYY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.691","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16583199},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0c61ee0cb36b9227ee21e19fbaf7abf7dc606d1d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.691_1782928397994_0.8087678734215633","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.692":{"name":"relay-ide","version":"0.1.0-nightly.20260701.692","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.692","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6ff97df67781b88c876edac68f3b6c7822931c92","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.692.tgz","fileCount":576,"integrity":"sha512-chwKZuUo8edyhEQ13PjSC6j28Yf3GBON7yyxuEWk6zyPTqAWcOxIYmXIIcFvqOc0F6njqAQSFAJzI/I4Fc7spQ==","signatures":[{"sig":"MEUCIDhxpfR1iGlTBQxtS0PJ0mcVJiE2GAFsohlDdRw4vcFSAiEApswwqS7wl6sjLTnvk6mRJznYKvkz3/FirGlItwZt67I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.692","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16585176},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"473d54c900ce0150f0e37b9c0269b083075ee66b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.692_1782931233028_0.4927411638112542","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.693":{"name":"relay-ide","version":"0.1.0-nightly.20260701.693","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.693","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"61a7bae086533363121c016d7b164a5c540acc8e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.693.tgz","fileCount":576,"integrity":"sha512-nyRoAAQhR1lJ/NVuql6fGmbylMkiSe7z5OR41tSL6n0ETIOaXuSIpQStxy9KnTk1I2OoZedhQ8naE9ybxUcXVQ==","signatures":[{"sig":"MEYCIQDAzDPcPMuS0odrnJS6D1Zr1dOozyA6LY4nwzZrYRpkMAIhAL7EsrOfzAfktHIpXRlYRcCCRjzlxIdPP60CWVoBmGG9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.693","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16587145},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4f74629453ce6ac661997e5e97b42f4ded9dbd68","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.693_1782933305780_0.6111015166128875","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.694":{"name":"relay-ide","version":"0.1.0-nightly.20260701.694","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.694","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"83257b036fb29361a630be94361ff84d76ce84a2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.694.tgz","fileCount":576,"integrity":"sha512-msb50pQSe+pjLbAiCzXlg6PCCKxlWQaTvEgjN5smhXBje8fb6mLQxd7eJgYYABZvbR8wsD6NY6m7HFpZ2+wMYg==","signatures":[{"sig":"MEUCIQDYG4HonlIM7vyHQLWUOfmO9aKh9U4m80JEzPicUTmBMgIgHZQFzFjyHFJNFvnKgWs1livsXv/WUnf6ua/enDm33ZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.694","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16588784},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4e1b67a7857edf8072050ce2125f396c31c73cc1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.694_1782934912763_0.542621109856483","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.695":{"name":"relay-ide","version":"0.1.0-nightly.20260701.695","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.695","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7bcf4d765bf6dbc3130e1adb2e4bc96699c44343","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.695.tgz","fileCount":576,"integrity":"sha512-XB7Cc5FUBK+OtZ2GGriJOuR32107tBw3IlYs+jSap3oUcuLB1w27EIUPPluBmbI/xWfApjUEejDZrIOf3Og9kw==","signatures":[{"sig":"MEQCIBMWSYCBy/ZARheCjReBd8l2hfJB3EMt+tj5HJTXeSCMAiAnwLOP3F1EcC92zqZ14nm5fPYS0YKSQ+F09nbL5wnETQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.695","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16590798},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4bf53dbc73c9eaced15d1bb065a54876d2a06f76","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.695_1782935884198_0.03565158107520161","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.696":{"name":"relay-ide","version":"0.1.0-nightly.20260701.696","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.696","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"77843eba29fd5addc9e77fe3ba5c9da0f19f9a96","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.696.tgz","fileCount":576,"integrity":"sha512-hrwsig4HwGD3KgeN7pfPCt9YVfTqzsMv4ZKdc3bYBDYI6TiBy/ZWH2D5Ap2cfgAJTraqDi+ptdam/hp3qmBKkg==","signatures":[{"sig":"MEUCICQsfw2U99s0yw2DB9uSp+Cb+2V4KgSHHLY3tdcTrmoiAiEA+rx6iCVf50Me6xKMmQnK6F3LmjF/1F2D9BGRmrUJ+cE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.696","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16590532},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"df1a0099a3da7a987ae3b467c96eee3c48711874","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.696_1782942387307_0.4553419447014273","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.697":{"name":"relay-ide","version":"0.1.0-nightly.20260701.697","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.697","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8daa47fae45da4f4faed4c3d5360e29b654d3c41","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.697.tgz","fileCount":576,"integrity":"sha512-N1l+M/PXdqPBCfyhn94QdDeI5mUj9FH3GqHkT+fY2kbKI0MNZlThunjKmBDYo2chQTBvOkG8d/VOdxqXN7fUpg==","signatures":[{"sig":"MEUCIQD8FWjgQT+orV6Uc5tr7FCBnZYjdP8esuf9lvOSQ3fvIgIgeXXcTgsm3IG1ZQCQ85iVNwXJj/ZPwIUxY2FhYOXPens=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.697","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16592115},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bb625561daac94605cd118d2599b1e19df0157f9","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.697_1782947951680_0.13829362979118565","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.700":{"name":"relay-ide","version":"0.1.0-nightly.20260701.700","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.700","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f2d2ed609ae98f0ea556dbac26180c077cba52f6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.700.tgz","fileCount":576,"integrity":"sha512-5TN0+60/BCC/gtbKScsXD4gt3si8Dz4LU+xZt3NB0ExVNNJsTixuwC7/MPUEkfLBKILEKR17jrdcE8QPbhG1jQ==","signatures":[{"sig":"MEUCIQDnJo7Zawuo7JLci9nz7LorkdOMt0xiHv7o68AhTx001QIgBIq173g+Zg26QMfyATqNXcy8a4swItqoDCp1HYgpGEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.700","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16738976},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e8d43e02002de0af81e165176767387e88b42972","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.700_1782947961567_0.6660576019427382","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.699":{"name":"relay-ide","version":"0.1.0-nightly.20260701.699","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.699","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b71fc7b50a4601b50baf31bd4458fc9fe3c0bdb0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.699.tgz","fileCount":576,"integrity":"sha512-DONZKTaGzPMFW+q231nVVu8MCf5odCMktli1vy9dwgaxW/OhxVohPQoMh9RYZyuZfyu91HSL/lfHHP8vqLrQWA==","signatures":[{"sig":"MEUCIQDo83oTcaqcy8qFMlpm/EAjW8+1aq4XMoPQD9MtdOYdJwIgZuV4oTUR7+maA7+gla6gWcwswY1sbQ25tQ0yiLuoyAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.699","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16735539},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9a363d3d214cb3e5130b25efb651409b86b3bb82","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.699_1782947962538_0.8826648303877529","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260701.698":{"name":"relay-ide","version":"0.1.0-nightly.20260701.698","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260701.698","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a8432de16c6be51c5460f05042585dfd2e3025f0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260701.698.tgz","fileCount":576,"integrity":"sha512-0cfpvfUVLLVFQQyHSmZhF8821gkXsghwBMNCFQM9BeTuYRTYtADw67r7RVJ1SeW82eEYX0Y03D4bVTJ7B48uJw==","signatures":[{"sig":"MEUCIQDzdZSs+0lBOEN1g48j+r6ibKqxDbsg+kxUlMkh+KV02AIgNEc127UrtD/4aMV/cXFfhwOfuFNj+cj4ddF2xl9eGMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260701.698","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16734834},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d97da777aa4d28eb17d1e2a92e529033c3ef0a7e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260701.698_1782947986988_0.34397759565862995","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260702.704":{"name":"relay-ide","version":"0.1.0-nightly.20260702.704","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260702.704","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a7658e1945a3689f08aff3d0eface7a098eb79fa","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260702.704.tgz","fileCount":576,"integrity":"sha512-md/SKQvaipk0ET/xm0rD0R5CEJ05Y8KMkhhst3YUOdeDH2zeBfdVoghzdr1eeBsvtk+meAYfTRP+EyrpjVaVVw==","signatures":[{"sig":"MEYCIQCYowkknrvXf9LO/LBFjXUYzfpu6suOGbmhU3WrNw4KCAIhANCq2hFdIdgwFBI/S0FSjLrVcdavvnfGk0FxmG+G1ogr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260702.704","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16755719},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"af154fcdfa43d94b370fd32d4c3e029bef1f728a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260702.704_1782951054167_0.9448656561074333","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260702.701":{"name":"relay-ide","version":"0.1.0-nightly.20260702.701","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260702.701","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"06c83f825253489062f98ed8535e1e3de73005c6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260702.701.tgz","fileCount":576,"integrity":"sha512-EjZGGnoVasAuEkr6ekCXZovGI0XJ/YBODHy2fu6Duit8akZIF3aseaecvfTKP7QGqggkacrjyf9jwdN/wX56BA==","signatures":[{"sig":"MEYCIQD67cEh4dY8s3m3LnM/hoai3ojqhH8ZXsE3+SRxFEmAwwIhANxz2UFEBHdHzKS1FZA42vXet/9tHwdhLOYdgJTCvLHu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260702.701","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16746269},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"79cbdb9c011dd4f47dc97d5188bf94ace749aa20","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260702.701_1782951057307_0.6935365839711896","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260702.703":{"name":"relay-ide","version":"0.1.0-nightly.20260702.703","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260702.703","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"063cb1ebce92d4e5fb6e543c1ab56754a9711452","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260702.703.tgz","fileCount":576,"integrity":"sha512-lei7J28OFEx3Lw8PvGo4Ukn2tI3Wl8AehCdkGXkSoTGxRYbPPtm+MadQincXgq3sB/3Snfvy+6z/6cLEGp+ZIQ==","signatures":[{"sig":"MEQCIBi0yHHy1Q96BIUan4hkfChKiJpLO6Bp2BdlOIZryOR0AiBPt0v4ix1VNQ9oa5O+Bx9ZRjvxxuEIzdhfVKY7zGDMhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260702.703","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16755719},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f8e1e7a943d064e1559e60270935c35322239308","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260702.703_1782951063710_0.0027345632315922686","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260702.705":{"name":"relay-ide","version":"0.1.0-nightly.20260702.705","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260702.705","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"77d95a08fd629d96d9fe7462d0520112dd7cff2d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260702.705.tgz","fileCount":576,"integrity":"sha512-85Ivdq3bN/R+40A0De3y+NvOS8ubImpV4S+kSY1xv9i0UeojL8KKW4axy14lckwCSLZwRf2J96yZMMXI1xd4UQ==","signatures":[{"sig":"MEUCIBZzn22UWfYETYGz2taGGyCg1DDGfgOfA3B/guR/45euAiEA4hyooSigLeHzFyXoAVM6wbC9KrsftH478ssfc8tYafo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260702.705","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16766408},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d649ba50c326d7df2ada796557386fb6872358d7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260702.705_1782951321981_0.7271608965728342","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260702.706":{"name":"relay-ide","version":"0.1.0-nightly.20260702.706","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260702.706","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"55f88a9fc08f9899b89f14b3e3c650c4723ad4b0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260702.706.tgz","fileCount":576,"integrity":"sha512-hqYS40zShfZ86pmPPWkiyXwrdA8oyREsAEOoRT04gKbBFfgG/vqBWWuAPWncdMvEPplq1t27XoGzqCo/biz+Ig==","signatures":[{"sig":"MEYCIQC1l+hCzvzX5iGl2xuPnszMLDwe8RV+gcEbNq2WfDB0TwIhAKD/IVZ9ryzETT5pokx5dSZNWvt7yn3Co8IGb+4dLmjh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260702.706","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16769497},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b588c44612bd956f8e781f0e6ce1dd67958dd587","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260702.706_1782972426830_0.45775369198068816","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260702.707":{"name":"relay-ide","version":"0.1.0-nightly.20260702.707","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260702.707","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"46db150284a36040855a417495de163f8525bcf5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260702.707.tgz","fileCount":577,"integrity":"sha512-ceU3OCsEhfEBGnvGosjSJH/dPjsu7oNzPvcbaLm9maIUz6PmS5BxwbnhsmM3wVPdnf+bmIYBAzH0my7fr4/AJQ==","signatures":[{"sig":"MEQCIAGB3ULSrRYrkrqHCkPd1WeZ5aZn2tk/GaaHM8zjR09EAiBF2TQn2cudqWkfny0/tcG02qLQIRZ42KuULJzUCt0cCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260702.707","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16770771},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1bf184266f5178595fb7bdfae1973cdda56daa69","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.13.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260702.707_1783001427374_0.6618080342573354","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260702.708":{"name":"relay-ide","version":"0.1.0-nightly.20260702.708","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260702.708","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"36ee3c61a1b3cd5e9126862707b5903d20b2316d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260702.708.tgz","fileCount":577,"integrity":"sha512-T+e0QgC5dIJmkejjMyqCrAbydC709U1UbX9iDnl/jgUbJflMfnAGeeiBCnNV0kmuL8yDOFw8sQLMV+pL0vyBfw==","signatures":[{"sig":"MEQCIELUSAp242lx3qWhnSOzRI1uN5Ty2g9kGkFhj6J5v5qDAiBWZ9yYXn10bVXTnWiO1AK98whYb7qEWzQ3N0tBSXQdLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260702.708","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16771477},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4837f80d69c9cb8e0b6b38d713ff90f767172d36","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260702.708_1783007252003_0.8619988757385642","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260702.709":{"name":"relay-ide","version":"0.1.0-nightly.20260702.709","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260702.709","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ced43346c2cdee00e41db2bbd97ef8e9b1e62633","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260702.709.tgz","fileCount":578,"integrity":"sha512-rJs07et6i62B5TTf1bp9EybN6fkGP6+t1MudCtGFK6gJZmEVDTjjwApxyG1WpVcJFdbBm7azOhgPep69dLx5Aw==","signatures":[{"sig":"MEYCIQC6LCQeLB3J/rx8PDnYxzebu2G/HDSbv2IRadMI15B6GwIhAMsLAZbXqXLjri8JnaZLzgpWwyVANxuU5BzyMCibOdZN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260702.709","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16782490},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"94c89fded94a40da15d3be0454b98d602ba62269","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260702.709_1783014216920_0.47686482752807446","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260703.710":{"name":"relay-ide","version":"0.1.0-nightly.20260703.710","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260703.710","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c3fd6977918d35ea2e85bcaf71fa8316436759cf","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260703.710.tgz","fileCount":578,"integrity":"sha512-BKxcGz/PVZqKh/OH51oePCPNnG01RwHDPU8wsiQ5qw6LLbMLPUCmuWYDufpeLttaTyvaGuR7vdER1KRQv1GE8A==","signatures":[{"sig":"MEQCIDfsO05cg4LnjzDdUcb94S4zUv3Z8wc40a45IeISu90mAiBr+iulGvPE9uPXd7035YzSMtSrJ4rGk+vQ/mgTRHjmow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260703.710","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16786198},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a726528974099f4d25ba4d36c79a2112a7d5179e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260703.710_1783037973476_0.9749455250651875","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260703.711":{"name":"relay-ide","version":"0.1.0-nightly.20260703.711","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260703.711","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"de39e927971f5cef1f187941073cda2042697844","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260703.711.tgz","fileCount":578,"integrity":"sha512-+mTreIpZZlxbdxTivK1KUqmy9zYqLJ55h5Wkjf3gEgW0QGONKDkJHLIhfSBO8ZKGpzRE0EwrP5KBYSVq8B8Rkw==","signatures":[{"sig":"MEYCIQDh/tg1HLaYV7Sd8FCNiCa2ni1ey2+x1jMFAewoEZsKqwIhANrxSK5WklJxQJVYeI7t+lxkMow3bLEjHoaWqiwh8IDo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260703.711","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16786381},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9d02b02549abc67faf32d535ad60c7c7bc126180","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260703.711_1783043364918_0.943883767589148","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260703.712":{"name":"relay-ide","version":"0.1.0-nightly.20260703.712","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260703.712","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7a25316d0528980492165d773e2a0bfdadd6f8bf","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260703.712.tgz","fileCount":578,"integrity":"sha512-bjLUNHHazhEFCgW90R2wjAZZ4pcAyYF38L2W6aWdcMpqgza5LVlD3+Cbln3OYrt3NiOKXuZLdmjY24CSBQfliA==","signatures":[{"sig":"MEYCIQC3ymz2a/ljLDFgNm1MMQjP/M6+SqaVpKKIX/uIflSdxgIhAKRMVmPv75zW4dHtsbBikx/C+05nq4skn5UmijKT+W+5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260703.712","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16786905},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d60cd34d35f7371c6f415bfbfbb2bba2ec5c6fc1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260703.712_1783088195367_0.09349690825337587","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260704.713":{"name":"relay-ide","version":"0.1.0-nightly.20260704.713","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260704.713","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5602b36f5a565ab9b0d0c9ff2500f638b45f3cff","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260704.713.tgz","fileCount":578,"integrity":"sha512-CpZqlKzrb5UwHCrkjurOSlsf0MK+RRjyd4yv1GVI9G+7hVnC2C2xxLO8ocuMwXCh9FboBiM96Ia0/Hz+snoRBQ==","signatures":[{"sig":"MEUCIGc9t8r5IIkvC2gDHlPGo4fd29alRYVAz6DPWbYtORnlAiEAo+Vxh6PWke78QE0FFiPBd7u1D1t4o0Ty0hvocEg1mzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260704.713","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16788659},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a03b68c132d6434ee409b2e2435222119d49241c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260704.713_1783150716643_0.7900910515183936","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260704.714":{"name":"relay-ide","version":"0.1.0-nightly.20260704.714","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260704.714","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9035a3f17a3a2462ddae071bbc9aa472d501fc4b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260704.714.tgz","fileCount":578,"integrity":"sha512-jHSdZs7uTSXcPYr9alfO6NBxNAQx3Ud3g0i2YKUyC2saf/SZ3bA5F37k/VhcKVvBNi8TEfXXBvS0Bp+QlWC8cA==","signatures":[{"sig":"MEUCIQDHfpiHCik/YJmgZrWHLRc6qWnS3rAH9WL8mfvW/0lDSwIgVugL2KDNjP/6hWB3zgrzg3OG2WMKmYLFcovDlw0jeNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260704.714","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16787397},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0b9c297c9bd4d7c4e7ee3b38f4796408e3842bec","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260704.714_1783205814573_0.3474931717615233","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260705.715":{"name":"relay-ide","version":"0.1.0-nightly.20260705.715","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260705.715","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"245a41fff3b6e4f56835e6194f4c8beaedfa9870","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260705.715.tgz","fileCount":578,"integrity":"sha512-4BmkK94LtrPQXt2/gYceZM1zkuPvdiZ313ngbFtEeprIUmEccjw60ZKrMazu+InqX8/51eSwJUKI/DohgwajMw==","signatures":[{"sig":"MEQCIFJn623sOz8Sl7JZ4BFEbIH6Fh6civjWnqJVxlPl+zZbAiBQbAUqGEnly0slEdgkdi4YcYgnhqpO9klvuJsWk71nQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260705.715","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16788679},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6931e40c9e89dfacfda01807004952c2ebe247cb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260705.715_1783233904189_0.6012144766010665","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260705.716":{"name":"relay-ide","version":"0.1.0-nightly.20260705.716","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260705.716","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"21dee742d4142fcb1bebd76ad5aeb56b58eaa3c2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260705.716.tgz","fileCount":578,"integrity":"sha512-v0B4389cAC22x3pfoDFMEXOGWGusMA1MRZJlPxvAOF1yAlB8CVuvi/7MYHA1+uL2Ot4d10tY6Gr7pOlS+tRDeA==","signatures":[{"sig":"MEQCIBAQ7+iSN5A29R5iBblEIU0R24rLcNPXF/RXWz0+6dFsAiAJuLrXQHlMzx0Hq3YLBVZ8uDYO8kfUU70DWK095wWqxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260705.716","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16788603},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d3f5205b408f7d0f9ff77e7201109e1096bf9815","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260705.716_1783235533126_0.29443778857804537","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260705.717":{"name":"relay-ide","version":"0.1.0-nightly.20260705.717","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260705.717","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5aa354ea830a007dca40bcaf173ac56445cf2a17","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260705.717.tgz","fileCount":578,"integrity":"sha512-RHM8T9VJuTPOZ/9LYXerRe3vHG5rtGhS8SRdzx8Tzw4c05JwCfM9CtzJe4LQDEBrEFWVRserAcS++EkLlZX2LA==","signatures":[{"sig":"MEYCIQDfLVyJLzZlkL2PXFE1P5orJjAAMSmKOBX7hBqlbv+9WQIhALvWkUsp2LtNax9aa3iaO9cLo5bVXJRQIAdQv8T8mZZK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260705.717","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16788607},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c3ff2994dd9d5cd7a4c2b80ca375b5dd6c7b4391","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260705.717_1783237157611_0.04754798796247295","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260707.718":{"name":"relay-ide","version":"0.1.0-nightly.20260707.718","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260707.718","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7ba94c3c38ef925d744bf91d95847866185801a4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260707.718.tgz","fileCount":578,"integrity":"sha512-yGBsj/TzJc7BUVJif25qJqLUA/tADsz5+my4kxgw12IyKLTdlM5FhPCYB11V7acuAbVLElAgrOeKNRYuCLQgHw==","signatures":[{"sig":"MEUCIQCEus25/d3bHoGm8LoQYOzdX6MPsWQs98qrmK4GM+EHmAIgNCugY1/5VQHNJb96qSXsOOxjXY9EulnnfXa1vVV/JqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260707.718","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16799846},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e29350c640ecb55e84b4f269e22338effd0c803c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260707.718_1783457551997_0.9370509560308604","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260707.719":{"name":"relay-ide","version":"0.1.0-nightly.20260707.719","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260707.719","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7c212b9e2e8f5e6404969b9b719a32c27564345e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260707.719.tgz","fileCount":579,"integrity":"sha512-k1BJZKmp2t7IbwkyakTk322Os5skN6/wixprbMI5NvXarQsjdt8OxdxAPu+3x0Eq+Pdw+kzKRdqbrwluybDUUQ==","signatures":[{"sig":"MEYCIQC+WHCV8ED2OAt+JN4/iU3JWvLphi6KnNLBB1L3qVhR+wIhANAAi+XVjOxfRyr4VbvnmayLQmxXj+VBQwgYncNGRvqc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260707.719","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16825281},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3e0e733afc33329cc0dd89ae1827c9e13e6d3729","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260707.719_1783459604228_0.8504081950285369","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260707.720":{"name":"relay-ide","version":"0.1.0-nightly.20260707.720","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260707.720","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9392a35e7ab812aed37e288422bd7631954ca996","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260707.720.tgz","fileCount":579,"integrity":"sha512-S2l+hg/23D516LCm832H2lIPqMzLDsy48K0Gw0J0tM8CDPHi3NVPhAgquRl2pFrvN66SZOM+o3vuJMpygsdI2g==","signatures":[{"sig":"MEUCIDKBaNF9M0YgkVBHgWo9TJ/92u/ZOCjLHxMT7MLzHhTmAiEAltRjoPqZaRSJe6Xb2Q/+m2sOc7XrPqG/+vtZ5zNYclU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260707.720","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16833349},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f89eb3adf3875f5bee9a644805455c6cfde159e1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260707.720_1783461315039_0.8445917490731378","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260709.721":{"name":"relay-ide","version":"0.1.0-nightly.20260709.721","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260709.721","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1548ef0a3b934af452824e2ea346beb1086983a2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260709.721.tgz","fileCount":579,"integrity":"sha512-CLH82uvaMN5itg6eF1xACzKVS1KD1YxhyuA6+OyRQWLKHjRTecp+UFljPHq08jj61Rj7QVK8UyDS19wqFd2n4g==","signatures":[{"sig":"MEQCIECHXSDX0GZ46qxPl0c0q9KzsbSVEQ1IXYhTUwy97qGDAiAf+aTDHqOgziuMj/SvxTnhEyq2a9OxnyxVMvQtb3b5iw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260709.721","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16836016},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4a97a208e5ecf74e95cc5db66adc32578550bab3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260709.721_1783620722686_0.4792676868673016","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260710.722":{"name":"relay-ide","version":"0.1.0-nightly.20260710.722","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260710.722","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"989963e5c3eaf5d7dc573f3c40fc067a2e1b59ee","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260710.722.tgz","fileCount":579,"integrity":"sha512-Ld7eErOEQ1s+lOhwIRJ1a9UKnK+ZDr/OFXzCnEDdSO6tpuyN8AKjRk0GJfU/RamPJ7qOjyOpM4DjyNz8Y3QheA==","signatures":[{"sig":"MEQCIHOflS73Tkp7PD1Pzg2MDVhpLVXFN4sOIvIAJzGXaXigAiAmsUxNlnpeX3hVo6rPHkniIjCYneCcKf2QIvwpbLXU5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260710.722","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16858881},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"90fb912c6955df6a98b316e524578b0bca807306","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260710.722_1783713261681_0.05659079332944761","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260717.723":{"name":"relay-ide","version":"0.1.0-nightly.20260717.723","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260717.723","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"079f1759a2dbe17bdbcd8692b2713bbe31af0292","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260717.723.tgz","fileCount":579,"integrity":"sha512-n0QXQ7jYmE6JJXcAfTXFgJqnyo4Sa6/X0gBOUW5PCh95l6uHKDPNlo4P6cMoJhvCg6aAjtUQYUcZXZ/m9KOPvg==","signatures":[{"sig":"MEYCIQDwMvLT9vEazZc4frgyWE9Ahp3vVwJuzkNxGXeg0yyYlwIhAOBy+LG5rBpxiWE5DZM/PPAJvM9beWKx1euxneZMUt/k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260717.723","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16858881},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"38e80fbd5f96afab616aa72d26a115b19d3c4c81","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260717.723_1784329641356_0.12253297661330143","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.724":{"name":"relay-ide","version":"0.1.0-nightly.20260718.724","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.724","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6da990697ddb84adcea1253612bb071dcdbfd056","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.724.tgz","fileCount":579,"integrity":"sha512-glt1fAZwxOEcsj0Kl+AFG3CQaJbtyIkbE4sYTAhcfC1/NiT4ZqleEynASZXvgVYbTGssyNUjVbjlpsO5BzgfgQ==","signatures":[{"sig":"MEQCIE9QtoQxB4gymnizo2pzSwryees2Xh1Oc0akXL6OvCV9AiAVnn/c3rAJoNH6+RzlAiUeQ3Fqrhhty2JOcyZgNixbuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.724","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16802923},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a3a947fd9b5f4654f47d79c6495df6f0db4781f8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.724_1784333345640_0.16737234228599407","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.725":{"name":"relay-ide","version":"0.1.0-nightly.20260718.725","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.725","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"cd01752cfcb6a2fad77c597510d7c91739753f1f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.725.tgz","fileCount":584,"integrity":"sha512-HuTEZ3u3k1HxZBIyRAEnnkBTIP+f7Zuebq1oBexYSXed11bXjsDQTab3YwH1N5dyyKAsatn4G9iKG1S+Uae2WA==","signatures":[{"sig":"MEQCIA1YBhyZwpmKy407Hs6DkNXLmtPX+MDKYixGnXizMFxGAiAcvEZgg3b+Nnwrxl4IJaW0iW5N+P1TJo04pj9SNgLFVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.725","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16887545},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"136f6626971a3103f02afd2b463dba19b9bccd5a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@anthropic-ai/claude-agent-sdk":"^0.2.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.725_1784339240809_0.6488896621764788","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.726":{"name":"relay-ide","version":"0.1.0-nightly.20260718.726","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.726","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f97a005aa57dede2f8fac8a54d4022cc8ae56169","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.726.tgz","fileCount":585,"integrity":"sha512-pBXSVa7lBmrWJ9rokNOu3ZyZCwDyZM7Stp8z9bcNBnrhMGeLzFlyx5RpEmKR03+VPGreFgCdq8oEXsolc6g38Q==","signatures":[{"sig":"MEUCIQDZqy2xB5c+8Y/OG4KcjLS4Iw76Fav+IwHvaIeVrmKrMQIgI2fuz5kzzDm8mArtnPojO/a+e7DwGuytW7UT0DpH8RI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.726","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16932693},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"cc4a38c6928c772f2006630d08bd275ca9d12f03","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.726_1784344030494_0.5324014647897541","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.727":{"name":"relay-ide","version":"0.1.0-nightly.20260718.727","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.727","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"13556dd3f84eedf686c7e5377dfebddc9d566695","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.727.tgz","fileCount":587,"integrity":"sha512-tXuF/ZD9eClqaik9q4YN5vc2Lulo8V52s+lQ68IE/zClSDOR/UBG/PWxQRjcqTRWO2+GXDtoxxQUyfscRsxXhw==","signatures":[{"sig":"MEYCIQDGIu9J6hZ8JP7AMk3tSHfTxDt37ViF7VZvqo/vtThFpwIhAJ3CYhkVmu1v1X7UOyDg0xVWtbYtDYMXlhq56/awsVq2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.727","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16977788},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7ed8023e6b4f81a69c4064756f3ad9013b7834de","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.727_1784348214945_0.35823297139967525","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.728":{"name":"relay-ide","version":"0.1.0-nightly.20260718.728","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.728","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"bca4bbbc8987dac50c0c56861a41adc6217c726c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.728.tgz","fileCount":589,"integrity":"sha512-AjcGKDD25GiwFZ1Ri5mBjIEcDJrHQ2kCQowbd/hCbPKjQWRabhdJKvpYwLYheYjm0qnm9fVuzOy1SAyIufTvMg==","signatures":[{"sig":"MEYCIQD+7xgUV0LpdsA0kpdSPhkj8aftSN5QwdrnQ/kuDK3iMQIhALj3mcSTf/3UHJefpsJE9FizHjCb84Hsqb2PDQAPHCYd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.728","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17036556},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5f8a667b23a26c8adeb0ded5a9a0f21e566ed740","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.728_1784355030622_0.15890115957110962","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.729":{"name":"relay-ide","version":"0.1.0-nightly.20260718.729","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.729","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2fd7ede2ed49b76311d5d3fec70ce46d8ec9cc88","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.729.tgz","fileCount":589,"integrity":"sha512-gj9pN2pKaZoeqpbTs5oPUksK1pg7iSw150sHm0KrLDPWM7xwUHkYMkjlBH3k2VbvGSUgGaSk74fhxISv0ttgYg==","signatures":[{"sig":"MEYCIQChJOYVC0MKxGjViECimfSTey0iX8bpNabDdKCWrYTbLAIhAPffsdXk2T8huCRwdMT2slVB+PGVMywlx5RhS0yj1JL0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.729","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17036695},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"fc4c8a22baeda5a29f95bc4c7188dcd5185afe3a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.729_1784357602140_0.47953699295163865","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.730":{"name":"relay-ide","version":"0.1.0-nightly.20260718.730","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.730","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f631ac69ffec89a51961cac932cf11cac3347c93","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.730.tgz","fileCount":589,"integrity":"sha512-iY5YekLtvBEeBC+Yjv6xOucKl4nu8KngLjNwTLOiAhRQZfjcbYs9aJh1O5tb2AQaL1SBXnwBr6u1NjbRiPl6Kg==","signatures":[{"sig":"MEUCIQCvFMjAiVTEpKfgF/hWe6PL8/6nhJ5+CALp62P+uXnmnAIgeruvSKUzq3/D+6dsQKi6GrEZGVKvswBJoX7TRYSCUTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.730","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17045774},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"72f756f9896eea2c880f112ac7fbd983a32452de","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.730_1784361334428_0.787794165613626","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.731":{"name":"relay-ide","version":"0.1.0-nightly.20260718.731","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.731","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"337b6c92ecb70e71133b3cd0667fbeea2b7dff10","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.731.tgz","fileCount":589,"integrity":"sha512-6s2xfReu9tRpJxmzp3Ah4SKtlZVeFO1NRUt8PIi+e9+RBhNoPI++9FIlJfsgn9corQzTQGIfERo16IXtCWC1NQ==","signatures":[{"sig":"MEUCIQDS5kzRbp3XS0DLP3B38lqnMFqnT2cuhOvlSm1QzEQsJQIgGAG7nx+S+o0HbFc2UNzEeriDIzx7e+9u+wzaBBzPuZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.731","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17061235},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"32d17ac8d029b028caaae285e4774355bab055c9","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.731_1784403245362_0.046096643175491225","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.732":{"name":"relay-ide","version":"0.1.0-nightly.20260718.732","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.732","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e851b49feda240338579e165c78cc18675f85820","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.732.tgz","fileCount":589,"integrity":"sha512-zJwX+BAXXDm8es+Gbz3TWIMyPw3OmC+WA7wrPpR855vVtFXHwCHrjd2bV/uzSQrsdiKAqSokXeyb8qlLY8M65A==","signatures":[{"sig":"MEUCIQCHTt/ZtIY/mI4Yep/+8cHmtuPXWNwsLaQGUwij/K4HEQIgKvtYL79ranjHS4FVySbEkmpzxNjaKf4T2tSRmOpVrpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.732","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17063755},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4051f4a5dc2a5da6728dff3f1347f3bd7274e3a6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.732_1784405773237_0.7007001887370896","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260718.733":{"name":"relay-ide","version":"0.1.0-nightly.20260718.733","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260718.733","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c03a22a9301ff8fadfe8708a4a0661010ca1b5f9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260718.733.tgz","fileCount":589,"integrity":"sha512-wglkED5iuR+UCQOuT+Y2DaLtB7YleKOQVbTOf4pGWiRYuNx+jRzUQqAdsQ8s6/EQazyoPxb6sW03ODPyOOI2nQ==","signatures":[{"sig":"MEYCIQD/4RjgIIFxD3sdBdg1F1vqN260ORBhjs+MV+JzvGUbcgIhAOTj/aS34NE2Mt9kjk+utYLI7A/HCtvjMuzBXogS5jtr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260718.733","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17066544},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"af7ae86b9dd5967d56b75ce364202cbebe19925c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260718.733_1784415221541_0.6359610782656382","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260719.734":{"name":"relay-ide","version":"0.1.0-nightly.20260719.734","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260719.734","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"50f1b0428c61e67aafa91d2c262a2b300e26c3e5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260719.734.tgz","fileCount":589,"integrity":"sha512-o0oO7iH8nzB49v7e7P0MIx9TDVnB2wQFwiLg4vI1vJ3xUwhR1PFXA8Ek7BIo1DTvOh91kXGtt0+o3PJgH1rI2g==","signatures":[{"sig":"MEUCIQCWl0uiHnP7S88hsAXh5UqPhHSUP9MKpJ3yqLt9N7lN3wIgJ+dLg5qRzpcOlqFn7d+Rz4phuw5xoQHG/di2iYzI9sM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260719.734","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17082804},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"fcf16dbb63914bdeb9166a971038d2424fc02c97","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260719.734_1784423477417_0.7535829695539982","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260719.735":{"name":"relay-ide","version":"0.1.0-nightly.20260719.735","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260719.735","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1664605cafcd0623bd13f5b316fcd9e263ff2050","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260719.735.tgz","fileCount":593,"integrity":"sha512-i7aFOiKW8hQ7/yX+73A2cpuQagjrm0aRyydf1XH8caqT4qIjWnzb27X2G1xHHiYMtMECRi21YI2QNXw1rRb9Rg==","signatures":[{"sig":"MEQCIASbQgwqID8E22MmPjDw/8ZpJTar8Lcn1Jrd9nlHxSjqAiB5z0JyeWCqbfaL46HSTGRF0iwrgjKoEZfvvgMnPBHZPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260719.735","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17114611},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8e78be8e6662a9f133c1befd106bdc3702611f3a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260719.735_1784428773581_0.36534242702047215","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260719.736":{"name":"relay-ide","version":"0.1.0-nightly.20260719.736","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260719.736","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"74519b3c066e99cfa8a620304901b3018bd2c3b6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260719.736.tgz","fileCount":594,"integrity":"sha512-L2Y4ZNOurhI/21oc1W49348ixbmN50zNJNgxYAHJGyCrDR2lfuTZVK3cR/KUszBRiyU2tM7z/BfQniZ73g5Xaw==","signatures":[{"sig":"MEQCIAc7gDIFAPiEfYMOXFcNC8ETuAJW+xmtZIpjtYQ4WEdYAiAiQA1TQrpBGPjWx7TjzN5yMekQUv98+EsOPrj9+pDAlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260719.736","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17144015},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f739ff0c76ed737612133b5bf59c88d568369e98","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260719.736_1784436233566_0.791737589815148","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260719.737":{"name":"relay-ide","version":"0.1.0-nightly.20260719.737","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260719.737","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"edb0a8eb1443b271bd13f232eaa7ad4250a03193","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260719.737.tgz","fileCount":594,"integrity":"sha512-97h/ZOeNTryqtV2jLl9Q+IlJya0WdcrmbU+k259hM74bs7wUHttYyeqC1KyyQU9+Ubv78UdN/gCXQJfPaDonPw==","signatures":[{"sig":"MEUCIQC5XvFA1NnyAXub/LtktA0tCHFr4AQIyxt/O7wmuVhaVAIgP6vdlmEpiNAPl1hVzDqxQDHi7R8wH0Lhloczx170cd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260719.737","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17146237},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"38e6b980b131dd832e906a625c18d4b5bc6cd5d5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260719.737_1784440409612_0.37058395899871654","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260719.738":{"name":"relay-ide","version":"0.1.0-nightly.20260719.738","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260719.738","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1e5ee33651ad720c6182d8a6513425232c27856e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260719.738.tgz","fileCount":594,"integrity":"sha512-8lgs8W2cNcVDEH/SCcRPMN48DL54SaFxTgmRDX2fVsIaNCDd8q8CB3lu7iE1uGLbBsYIDlNhiBye53C8DUaCXQ==","signatures":[{"sig":"MEUCIQDWn07aatH3k15CwIVGq5ThDHGHE+rkGPpmkvwd5E2moQIgZL9ty7juzbeBKWTNyjVoprSIvxYI2oB6nWGATI6KUPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260719.738","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17169471},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"40f36b5d327c3f94ad084131ce7f28a633c66221","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260719.738_1784446904041_0.43843188751674633","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260719.740":{"name":"relay-ide","version":"0.1.0-nightly.20260719.740","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260719.740","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"bb68c85887e3d0977f35d2d096933a6d7550da12","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260719.740.tgz","fileCount":594,"integrity":"sha512-o/sxcEwKGOuQKcUGy80vGaAcDITL1QZkjm2LuyPoRfOg3lGvVJHXJEzhEAgcWt2HQLhD2O5dsjO9kSpk8JenYQ==","signatures":[{"sig":"MEUCIQCvuK0jDioWw1LZSgtb8avm/1hJqqf0OFUzt/xvivs0YQIgQin9VzcFlFTV5UtVIoq1wLyzy8amoweRWN96bGf6qUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260719.740","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17175137},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8ceab440586de4857a7eadb2e0dc67cefb677ff4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","shiki":"^4.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260719.740_1784475987135_0.9329903606206493","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260719.741":{"name":"relay-ide","version":"0.1.0-nightly.20260719.741","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260719.741","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0fa8dd820a23bd13ece70106b807de51304bb01e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260719.741.tgz","fileCount":595,"integrity":"sha512-rBBt7X1CY77m8c+2yXZ2RLgai1un01xOjm7BTvPUkLJl+oubCpqAjo8WvmSyc7CdCxWoQDloO2nvlq1MPlz01Q==","signatures":[{"sig":"MEQCIDJ0ctUEkalp1ZbXdFrPj09LJj7OS/E1QJLedrSHDk2tAiB7DJiEqCp66R1OWIEKRAwoG6L3Fd+WKy7Tti/9oOJalQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260719.741","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17240611},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2aabde6121754bc1a6d89f8b49f0b41a5ec6c2bb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260719.741_1784492198474_0.5352314761409176","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260719.742":{"name":"relay-ide","version":"0.1.0-nightly.20260719.742","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260719.742","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3934d716a75c8912122d0be656b7f49a5941c508","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260719.742.tgz","fileCount":595,"integrity":"sha512-jCTrnRPe9fLsq0jYv6deQyjvp+I5+fpg/Fp2CM7bnitJxPlcEkO5HHhkRV/9zhsRJziE2/AbIw3v+xLuF8MUUQ==","signatures":[{"sig":"MEUCIGHsemt/yu2ZDQjIP+43roHodd8w5c63nPgfz+FnjGmkAiEAg9zs+POljF/TkzWxJCZbeMx52h8PRjLgsya4ZSJ1PZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260719.742","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17240611},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"70a385c79d51b65f4312c0809e053a6047595cb9","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260719.742_1784493175745_0.9839706864624713","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260722.743":{"name":"relay-ide","version":"0.1.0-nightly.20260722.743","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260722.743","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9ded632e41adf6c234399696ddd46e51255aea46","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260722.743.tgz","fileCount":595,"integrity":"sha512-yt76v3918Ok2/jG+xaby+BkeNE1qk/of5y982YNDTKYV1fRlFI+88a1w3jUhrzCGq3EnHa52ioS3EEz5ptN6ng==","signatures":[{"sig":"MEUCIH4Dt9ELQKQRq+alSfQCRqMosxlx8wIO3YTDY/7yiCPzAiEA9ajO3dXI0WUHWe3MUC6bGvNj0XDIiwLzPCfHjJAxzeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260722.743","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17270305},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"eb09adb20f3e8e96d6b69b665d6c7829e9dc3e2e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260722.743_1784723250426_0.18979120044895215","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260722.744":{"name":"relay-ide","version":"0.1.0-nightly.20260722.744","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260722.744","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b89ff25f95cca72045bbc5a3bf53dc14de3235e7","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260722.744.tgz","fileCount":595,"integrity":"sha512-sCCPTtv9Pqknvs+eMW3RUh84eXRdSFkq8aJyWtCR9MJxk4b2vPDtyQvinCbzUM3MClJfLjtoK/BW/Rjs0fIDSQ==","signatures":[{"sig":"MEQCIHfn5/k4x66ihtHGTLwUNlcongKM97aYkReXXd/CTVkvAiAmiOsY3JudVfTmXzrgMurQYjW/R5ro9zaGoqpPVWXQxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260722.744","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17271367},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a51a1df9908e469058bbc7eabab9f1cafca83fde","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260722.744_1784733958010_0.8999943804875534","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260722.745":{"name":"relay-ide","version":"0.1.0-nightly.20260722.745","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260722.745","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1c961a5121cf79c31f7ce19c3021468e8274ff84","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260722.745.tgz","fileCount":595,"integrity":"sha512-uqmpPMWfrvvu2BWFGNUmYz6suAojV7UMvTvy7m97i+n2GxJki4g9mN754vcuCawAMySiHhJNkN1Ir9rylvInFg==","signatures":[{"sig":"MEQCIBMM/2EF0jRnjVOqXzYBjldjehuqseE936kED/Yvx42mAiAoNagrNvCivg3uwIcTKs0oePhoPKuaMxeV0GtgQfar2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260722.745","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17200910},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e5772887505916c2003a465774e151a3539422c5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260722.745_1784736862294_0.22649374196221217","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260722.747":{"name":"relay-ide","version":"0.1.0-nightly.20260722.747","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260722.747","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1a5b22c99f65c657c185c35d2f1f97e1abcb91a9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260722.747.tgz","fileCount":597,"integrity":"sha512-9sQrfD0sV05lWsiGBGR5VZFBUKjNlxMjGEe8cNDkcJbtc7xzsxkKpnWU/4Lji9hflHoWrN1Q2OTQOvIm4I7H/w==","signatures":[{"sig":"MEYCIQCHM7Zu4gdD5TvTrb7OsTuethbJW+pQBN1bcRdAFLSDRgIhAN3P6dMhgpZlSHtO64HMeMGaphYf4yiLBZ1nCXCpVGL6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260722.747","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17230282},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"45d8ef0d7ee3ebfec3f7d0202a00d0425e338f4a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260722.747_1784743517805_0.6335472019443331","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260722.748":{"name":"relay-ide","version":"0.1.0-nightly.20260722.748","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260722.748","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ea8c33aba20bce3d56de71fff71f06bd97f9e4d4","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260722.748.tgz","fileCount":598,"integrity":"sha512-F2D4o065/fffx9PE6Ex13xiTzYjtqMHyWEipJfzsQCDzVwv2qH3PGuqTrxmAosufSHrXk83upw6Q/oy1x0xYcg==","signatures":[{"sig":"MEUCICgDuqi171Wx9/3cWdDgI6ciG7NRF6e7xs66MWuHJ/G4AiEAr+zz8vj+ZdPjycvVU7dQjsatXVf2b5X/6313+SNk5NE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260722.748","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17245314},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5f4a48bb3dd0d0c82590d6a3a1b507c1e629ad4f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260722.748_1784747034093_0.3838177097500959","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260722.749":{"name":"relay-ide","version":"0.1.0-nightly.20260722.749","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260722.749","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"738f116e03de20f1f28469640110e297b201ebe3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260722.749.tgz","fileCount":598,"integrity":"sha512-2W0zmhfvAXlacQ5skytqrtJ3WORvGMqko/AaRjs2d42RCYY81WaOeJY8t0xmry8lqEInjkJWO1XprEPUlVdH4w==","signatures":[{"sig":"MEUCIQDKL39/1kaaNIQ+g+BLBIazs3hEX5buRLubFPmAzmpfGQIgQwzDcbDYar1yE0fURbcFGv5ymtAbRpmNaE5Dumd0R1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260722.749","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17247558},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"787c0835795a699728607d9cbae9e58c277800ce","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260722.749_1784749295714_0.5607302112217742","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260722.750":{"name":"relay-ide","version":"0.1.0-nightly.20260722.750","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260722.750","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d2b516eb4957feffcb4409d6c0b1e43a9182ceb9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260722.750.tgz","fileCount":598,"integrity":"sha512-31D5zgrQQPrN0nRQt1DCNBzpdxgmIV+aHCTVS4kupiIzu4zEQQpP+1E4e+4ao3KWX+QxF44yZsEhQz2STvaTUg==","signatures":[{"sig":"MEYCIQCoU0Owi9SS238gcbU8b4Cv9cMD/FytxkVRJCnpGLA/LwIhAJvwD9Zp7z4753YdJOJ8ZFL+QFnQc6JHxzsOE2VJtWn0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260722.750","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17266576},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5061a4a9375c03ddbd702fc27e91ad8cb4711e6a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260722.750_1784755359387_0.24850417065559838","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260723.751":{"name":"relay-ide","version":"0.1.0-nightly.20260723.751","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260723.751","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e8ca05dfa8ce55a87d1f7a6201f8d1b556f9c562","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260723.751.tgz","fileCount":599,"integrity":"sha512-HkS9UexhDaVyzcebGrIY6ru0pmhsqBCWYj21/t6voDtJAx81xsI2UBLV6qeQznoIKcuyGEFw6CUKSop8XCo1iw==","signatures":[{"sig":"MEQCIBlipfespX66AR3IDPDvCbWPpA/XMUZQOLGW5fjqo+GsAiAlyj40PiqE+lcIY2GAfrWEETPzotxGSAplbUdp7IU4Ew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260723.751","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17284379},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3e49c9822135ace59cb873c81fef1418831cd80d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260723.751_1784769273357_0.5274257911197826","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260723.752":{"name":"relay-ide","version":"0.1.0-nightly.20260723.752","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260723.752","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4137d196b85e36c8e7ee397340ed08437e203a5d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260723.752.tgz","fileCount":599,"integrity":"sha512-OoPS+7SSXC5TQMPjGh0AtYHnhMv9okQUo4W6JD1UMdsY24mC/tmLI9WfRSRPOKqAWRSTHiD96NVDQOezNNQmpw==","signatures":[{"sig":"MEUCIFteX6Bafc3opr3FhvNu/R79aeKyEa4UQa3wJpqY7qxWAiEA8civZxp3nV1N6WDx03MTdrqemQM7T0uw8EJ0TPjjlF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260723.752","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17294307},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d80a8f0f4625c96adb30bad2d15fe0e656adac99","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260723.752_1784778414661_0.4860766047642393","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260723.753":{"name":"relay-ide","version":"0.1.0-nightly.20260723.753","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260723.753","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"06469acfa2fcffa42507630f8d786fd73278dc6b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260723.753.tgz","fileCount":599,"integrity":"sha512-LbNQ11IH35Q/oLqaaxX9gxtMX/UKjG128Xcn4pOA/OE5p5Ya5/vWReK5Rx7ac4QaHoad+KN3v+CF3ES/1WAQPw==","signatures":[{"sig":"MEUCIC2EQsz85uv4Clyb7zOrnhU4/NHMESLFyhos1OFGnTvTAiEAiDnAQIn9ljyFVFn4RhpDoy1dAJqHk72LnM302vwYi1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260723.753","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17294807},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"560713f1a7dbf45102e07e294448abadb7e3dd7f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260723.753_1784782723959_0.5993965406116397","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260723.754":{"name":"relay-ide","version":"0.1.0-nightly.20260723.754","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260723.754","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8248e3b1890c6361d6b851629e19777c73946520","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260723.754.tgz","fileCount":599,"integrity":"sha512-QN5kVjmHOlPhTXNgIA0g/Ic5keNRZKx+NUbNeYx93gN9GDdFdCUY0OUN6nVqWsyyyC6POs98UIS+EYFroJSYOw==","signatures":[{"sig":"MEQCIHWVdrX9RwjrE8ghn4FX+WVJyZ8cjTA9bPSgaiLjbx64AiBVLU0FD7bOpvCrAqWYjqklqxtKecGFzqBtAmyK0zosWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260723.754","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17298646},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"aef411b29be5c82e613aee2f09e88db3bebb4ef7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260723.754_1784787074257_0.9412897170449783","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260723.755":{"name":"relay-ide","version":"0.1.0-nightly.20260723.755","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260723.755","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d4cc7bdc3529990a6ba1b119eff58b1bfe2b2ca8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260723.755.tgz","fileCount":599,"integrity":"sha512-jBaReUtbunr7BnTofFdiMkctdRW7DodygyreXIhXsLj4z2Q260cVpfyqYc9HQbalJe+6QiFWBnksWbpscPI1gw==","signatures":[{"sig":"MEYCIQClB9M5duytVBfjYmupXAnA+kez47UxXwLgoxL2kcvxfgIhAMcOUjUs678SQRQ6dlaFzJBrjEXUTCjZWNpLzao0aaSj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260723.755","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17308716},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"29c66866f6a1deccece6586673c139a76d71b9da","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260723.755_1784791725099_0.5203709391602365","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260723.756":{"name":"relay-ide","version":"0.1.0-nightly.20260723.756","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260723.756","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e8c699ecb5f3f2dce8bd3c165992b19842490851","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260723.756.tgz","fileCount":599,"integrity":"sha512-+UmMXemN3PSWLBZpF2yv1oxbuu9ZZME0lZsHRMmiRFJpru4hAJF/8ufEPKkHYYwxjyQzWA37xHOWDCIPYkj/bA==","signatures":[{"sig":"MEUCICsQkfaKWOYTogtSdPYlhyhM0kuK7x/w+KQB7gLUTlqaAiEA/KaMRdKLe+mvy5jM59fHniBBgj50JyzIGYx00CpJjnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260723.756","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17308920},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"18808031ba510f380e4a9051afc9843140960989","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260723.756_1784794052191_0.0387711228438512","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260723.757":{"name":"relay-ide","version":"0.1.0-nightly.20260723.757","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260723.757","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"62f9d4e5c0a59adab52f159dca7dcb311f67519d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260723.757.tgz","fileCount":599,"integrity":"sha512-LnpxBvNYJeVyCt+mjRofYFjeMpimgGAUs8EV1xY4dGtGZaDGnqQD474hNZx8SYbxQfJdBKAnSjWUESr2YTllBQ==","signatures":[{"sig":"MEQCIG49sVUgXwnuLxlifbhoYUbMFxWFJ5FRVk2yv0UFzlm2AiB4edcuxkc2p+dTV8AboJvTiu44BeL4wCKLq+jdaUKjGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260723.757","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17313890},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b4c83f2eb1c52695d66a1c127ca8dc818701b474","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260723.757_1784796498469_0.8249654308433396","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260723.758":{"name":"relay-ide","version":"0.1.0-nightly.20260723.758","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260723.758","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"67767ad78ad909618a880aeb3be041fdd922d3aa","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260723.758.tgz","fileCount":599,"integrity":"sha512-QnrOwSdsM8mxteAka0BS3WYx7RZLzy8JS1qBAvBMsoRks0SJdTrjvkBxHezt61+dnZrmEtfYPrf2Vqtcvix/RA==","signatures":[{"sig":"MEQCICAHtrD96ziCG6v4NaBOQ7RrhNhAO/7KqA4itQom5kghAiB+qHvrDGxHcl+6XYSl+XS52VbhIK4tGmQQds/8HPLpJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260723.758","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17313890},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5f2dcf2231a60226c53096d87e000fd0db26e903","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260723.758_1784796700138_0.2302585561955124","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260723.759":{"name":"relay-ide","version":"0.1.0-nightly.20260723.759","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260723.759","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3163095a1590e38889f5c45b514f24bee1af76fc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260723.759.tgz","fileCount":599,"integrity":"sha512-cXJaWQfOdte1c6Xbg1JXrXUVn82MqJ+qxsTRzbXkZLFy+yFDRuK+v64tGGha3riOWCfaX67R6JYNouewAUGGCg==","signatures":[{"sig":"MEUCIQCRr05WDlZC03zlgqPb6hvItCMv2bpFQ+qwyKybmTcuCwIgTKEcb+TdOaEGB5lthwrDOGE9pEN1Zo7g+ruzDdKMJXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260723.759","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17316513},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6519d141822192457799cca8d07be07b057e717f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260723.759_1784801517445_0.47051455939380804","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260724.760":{"name":"relay-ide","version":"0.1.0-nightly.20260724.760","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260724.760","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9a55e50b1421dd9bacfad51b0ac985b4e3258a26","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260724.760.tgz","fileCount":601,"integrity":"sha512-XsJS22XtA3ODl31tBUlK42iUp8UZWywa5dt5EAmrXV0s+/FnKLHWXDncVY6tGlKz8UPKAVV0i69l8Iq+UGjeaw==","signatures":[{"sig":"MEQCIEDNmDLq8SLpcgdQRGEhQhqj6rv0j+uBrjgDUVqj9STlAiApnLk2ZTbefWDJg3NiFDCWZZzGK1MpUOX82Ats7z0Agg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260724.760","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17341569},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f0b8d4838edff22143fbe48a2eb1b5c4a34011d6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260724.760_1784854994405_0.5161077477503795","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260724.761":{"name":"relay-ide","version":"0.1.0-nightly.20260724.761","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260724.761","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"77306193d70c52e148d5ee1cbb958dce24198bff","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260724.761.tgz","fileCount":601,"integrity":"sha512-izW9TRy4EjjhvAqus9YP/RAtnPBG3/51mtaInJLvNG+5CVgpeovnFVJiMMNKkt8iqt6pV3JFTXtrHjrju1CQxg==","signatures":[{"sig":"MEQCIC/R0tIbzwe2xi3ZqrCfLiDxopaMWrKDO9Vz7dHlXbv3AiBkdmr06a8w5wr4AO0T7m6O5o0yrQLHh1ro5TPYrNwxJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260724.761","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17344704},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"334e27e00761aa9c029a4668f1e7eeff49e1b30d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260724.761_1784856645184_0.7296609482155558","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260724.762":{"name":"relay-ide","version":"0.1.0-nightly.20260724.762","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260724.762","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0bf34e1fef0905114628712356469631f36ebd1e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260724.762.tgz","fileCount":601,"integrity":"sha512-zwZXEiVzlVA9o55zujgt1a8zQRjB0Z6i2FWZFlTwpMiv/2aP1WmE74IaL6H4ior1R/Cq8Ar5j/bF/kccvn8baQ==","signatures":[{"sig":"MEQCIFbiZLUZtzBywJN1I6JlNaRSV8bRpWoYohzXF2TlOoUBAiAYghuU5IHBib0pdtNFIYB0GyCyfdx3Lc71YffR6Mr/mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260724.762","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17348142},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"3f2a7131854c95cd2bb5ab8375c8033016b9cc88","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260724.762_1784858527619_0.4301425431683712","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.763":{"name":"relay-ide","version":"0.1.0-nightly.20260725.763","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.763","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"02fc38af5b4f87fab1594ad10cc2dd415a708f1e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.763.tgz","fileCount":601,"integrity":"sha512-LTNXec2wEwLg/xheQzVKAjB4EEmk4QG0d2p1HMXjKjuGQeJ9ytysz2OYnjyYJAuEAiIlL+3p0wEnQZCTNO9D9g==","signatures":[{"sig":"MEUCIAUnBzknVq8TLil49TXJibZ9N9E9t3JA8BB2AkRTZGLjAiEAkamaAbirH8Lv/kyHdL7tpmOGow7kXt5FVBU1OgM72h0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.763","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17348292},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6530b0546520989a17855088370b863f38ced348","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.763_1784957371519_0.5803289312034878","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.764":{"name":"relay-ide","version":"0.1.0-nightly.20260725.764","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.764","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6eaab29778519173ad64f9500b230a507b7adfe5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.764.tgz","fileCount":603,"integrity":"sha512-siuOtAbYNkJ9Ju5A7TjC1pzPWKdPjHIPO+oTeXcM8h+8dKx2I6WKugojhnRSdo3NoZ+uI5+/Tvo0tLCZUNSBkw==","signatures":[{"sig":"MEUCIQCCLJ9qjl7wcPybbf/AViyfRmSEUkU7DTsiTdwb+wxJigIgNr7uI1IYceWqWfXe5BQ+QJDn7Rc0A3voE8+H930iBsQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.764","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17381376},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"67a5a40cb337489fc1be337233845e0adaa293cf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.764_1784963682772_0.5136530590068016","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.765":{"name":"relay-ide","version":"0.1.0-nightly.20260725.765","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.765","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"cc4fffdb96579142af78b08ed730efe4a0e70300","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.765.tgz","fileCount":603,"integrity":"sha512-F6Z8sVT+VOW35j5rBd8mlB2Sbf0NeLMtigjgwWQRmVeHDCDqmmbV/SIEoNGz3jhJl27fVV5fqKG569g4uRWYxg==","signatures":[{"sig":"MEUCIFduzoJBzAwOcUNh2bFgAPJsE4XkdJDjDqLPA8e3SzB1AiEAiYk4RgK+IJEgNDq3u9Kvm6q7RwbcsLY89L5Y14zNHow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.765","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17382852},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1fde2548425190a9df9b0f4ceff92dc3801ca5a8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.765_1784985654049_0.5935063268144136","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.766":{"name":"relay-ide","version":"0.1.0-nightly.20260725.766","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.766","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d38caa0cbbff1bbf057096a0748a2502343c2c7c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.766.tgz","fileCount":603,"integrity":"sha512-67kjMIOK8iUI7YUWdS1sd+FBoy3zVFd1OgvFbd5JzLzLpUh8bpXHOpr5BKM6Id31lipmD7wOGzkmoaHWe1ANxg==","signatures":[{"sig":"MEQCIGbClXZGfnOs6Qvr1rs98Pf63alW/saLVX9Zp+V2ppFmAiB7CVivVkujXHu4GLqrdriiahw6AVUwk+qJP3a7C4ZWfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.766","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17384881},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2279fd28f06543eb68fe6fcf996a73f13f0e83a8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.766_1784987931587_0.5748223274936941","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.767":{"name":"relay-ide","version":"0.1.0-nightly.20260725.767","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.767","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"62fe2b9412101eaa6eb14515bbc2332191ecb38f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.767.tgz","fileCount":603,"integrity":"sha512-lv1WJwxmHwkJ5hDfRen3jwSco0249CCS/3ve1a3lzw1OeJugsD8/RTFW2prpr5ywjQu3XmTlBsLZqdTxjqWtQw==","signatures":[{"sig":"MEUCIFQyfE2AfuCCUUshCOGJbXHd+U+CRNpe791AUrFatOLDAiEAnPcMp5DOMReQSfLx/mnUpp8JfDqlrWifWJhbpcYHCGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.767","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17390686},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"5a0dc7706ca5b817e36456a9580844b4621a20af","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.767_1784989071281_0.22489181855904938","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.768":{"name":"relay-ide","version":"0.1.0-nightly.20260725.768","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.768","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b052b204a1a333221e5b459bfaf375f6e0df8708","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.768.tgz","fileCount":604,"integrity":"sha512-+KBrjsxCHg9h7SH0rwpHN9P3LtofNY6sfQbLEGMGk85mo+IsOpoTuxZuKj6RBbORlud+vD7OQRKhFinyLu0mmw==","signatures":[{"sig":"MEYCIQD0vLLQ1iKJ5qXUSYWP2rTb8GqB81aNB5X06w8Eb5Vt0QIhAJPSmL87GuH+Jw5LdWacn4HuwnpGD+7rEmPmjtKR98+b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.768","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17433719},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6cc202d6af2218cc4299e1c6fdc776f41fc8a6ae","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.768_1784996109872_0.6813970761846033","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.769":{"name":"relay-ide","version":"0.1.0-nightly.20260725.769","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.769","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3a8352d36035461261e06262a060101a72d4873c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.769.tgz","fileCount":604,"integrity":"sha512-/+RrLlE/d8rru0QmTuEMoMk4D0kiC24ytPvxxOlPTjVIjBhiGuVwoG/Tjw/mNdD5pieW8CY/VK94z35fvUvWrg==","signatures":[{"sig":"MEQCICkyUpJuMBC1kLNlMpMFWY9obF59eDuinQqHla0J7N3JAiAt6d2j5AgaVFiUQuiXWqLnHuiPJSgCr6aoGpZR1EA/aw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.769","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17444240},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2816531a008e0fc473efcb980d8401d01bee2947","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.769_1785002223385_0.12353197530001858","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.770":{"name":"relay-ide","version":"0.1.0-nightly.20260725.770","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.770","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7a1de02d759809f825a73c7ecaee73485e8f0f1f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.770.tgz","fileCount":604,"integrity":"sha512-joh4hHeT50dtcuCVSWqevnYBqmXsdE8f62qJBrKHMykSjQH1/Aw+tsNJtza72bFGQ7U3rG7nOXDTVRmIf91a3w==","signatures":[{"sig":"MEUCIGaKhBWiA6I42OTnzxGA7EoFmbuxijzBQXdo99gEC2S2AiEAjlhH78m4MLEUOX3rMzfbVicYtbbAoJDlEUFNId9eZAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.770","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17444593},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"66b8a4292788eae24bad2234f1472fb98633ae51","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.770_1785011334834_0.7850161797638884","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.771":{"name":"relay-ide","version":"0.1.0-nightly.20260725.771","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.771","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d2b37d70c4cb1a7be6e02ffde085210d8380140e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.771.tgz","fileCount":605,"integrity":"sha512-w0DYjKYPZNgHQ4dNStuyb9NiX/mr056LnlY+hVg0w6qUIfi+4jjZqe0qMgDN+7Dt2JVFnrkbXxwZ3UIiShpXyA==","signatures":[{"sig":"MEUCIQDEV/sD/hOFazC5yjxWfL6Fg/POPiu3ez7jMGfWIx2TMwIgGuuLMdEpG5qjdd1N3dTKtiH5mTkM6Cz/ShQeQclOI7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.771","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17448649},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"67f6b148db9258599784d8c130f04ac6975f3c84","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.771_1785013524860_0.5099686631880895","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.773":{"name":"relay-ide","version":"0.1.0-nightly.20260725.773","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.773","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b76a0fe08419b35a98a74f88e707d97693b0834e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.773.tgz","fileCount":605,"integrity":"sha512-0Azr2E2A9uQLEE4C0i4zQroZ9fLgleIJ9R/uzzgBZE6X7vfGivhr+Z+W6ez7Wd83R/iRiUjGufiCkcpFGjooWQ==","signatures":[{"sig":"MEUCIQD75xYhpwccLCh9uHR9v5eUAcsx6OaczhglPn6QL4xasQIgG2CXWS6YF7jHVjA+63ijZh6UFphpIEgvLqnuWkpOlXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.773","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17452563},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c34ff55cd50ab35168634bf7d7d77fbe50ec0c78","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.773_1785017523281_0.9229199145021139","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260725.772":{"name":"relay-ide","version":"0.1.0-nightly.20260725.772","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260725.772","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0bff48339d745fa9e14cfd59b1a50d102ae901fc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260725.772.tgz","fileCount":605,"integrity":"sha512-HdCZKdDW5yi9NGdP1TYaTRyf9Wk3T3Trz3ZrKqzRM14DiPQJ88XkXTU+yJOehGaldENO2TzcIBL5wH/+fQjHyA==","signatures":[{"sig":"MEYCIQDdONBhhYR4d8OJlqMENd+WH/lD/7IxVcElGBaqasN79AIhAOiSJrfL0eHoGtAOF3psyd5YYQIWAb+GvNWBWluBLNHL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260725.772","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17449905},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"05c69eae8aecbb84cfafa9b0ce7c121c4a560e48","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_TMUX_PREFIX=${RELAY_IDE_TMUX_PREFIX:-relay-dev-} RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260725.772_1785017809720_0.6753573250698903","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260727.774":{"name":"relay-ide","version":"0.1.0-nightly.20260727.774","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260727.774","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"56729238798a6d41302163638fc2c741be23aefe","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260727.774.tgz","fileCount":589,"integrity":"sha512-VQosTezZ3f3jkC5ePOajFi1FH0RWRCCJdyl7iJvOoXzosQmUv/U6oP2B3QO48JEwoXQ9WV8GGHWcS3vdKkOMKg==","signatures":[{"sig":"MEQCIH3Av7bBQMxgdonhdXOfsRZjvYTNfhrsTWLoNNYT4+XrAiBpj1hOWcuxZE0HrirQFJo1weofR1KlTiDCHffTezTBpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260727.774","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17024040},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"25160df65041aa9f6cc053db9e6626d0cfea319d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260727.774_1785118018003_0.5620917765049871","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260729.775":{"name":"relay-ide","version":"0.1.0-nightly.20260729.775","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260729.775","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0b19758b7c3e5424eefe22a66105b7726d4b79a1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260729.775.tgz","fileCount":590,"integrity":"sha512-4bp7X1IA4RGPXHsdyY8eYj3avCgB9XwYWNssraFHfjHT00kteA4bB9cDHTL6/CUpmYVAPv1RWe/9OFhYlEVV+A==","signatures":[{"sig":"MEQCIBrzfdTdnzZBxl4pcR5X7mYlomsadaQx+o7QibeqG/HEAiBYBwHcCHRe/7yQpO9kau4qzRMBPQNkfwXaZL6OPtYWbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260729.775","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17038667},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ad8735b5a81371bf7ebef795326422d7c2eacdd6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260729.775_1785351744599_0.5701390809976923","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260729.777":{"name":"relay-ide","version":"0.1.0-nightly.20260729.777","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260729.777","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"47c442610eccff7a46ce762f1da1cfa90b6779e8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260729.777.tgz","fileCount":590,"integrity":"sha512-AAxOFSy02/RHXdLyTxffTgjP3Ka4beR9538k/FCQr3K5QvHbBVuyhiwsFee1B/J5Gh4l7ESQ/5ZGM+3C3qaogA==","signatures":[{"sig":"MEUCIFzuGwFTupizOzC38oUTgdUwNz7FdgdmdkZMggbuFw2rAiEA52/Jujb2aCWUPv4oY/CzC/P2j03Nu1YlU0oROa0jTyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260729.777","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17038679},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9b8974115465bc0f2392df2940df5f764b7859ce","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260729.777_1785364005380_0.008463133155241609","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260729.776":{"name":"relay-ide","version":"0.1.0-nightly.20260729.776","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260729.776","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8479d1424d75d3466ab4c8d986c29e070c5084ed","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260729.776.tgz","fileCount":590,"integrity":"sha512-Com2ogXwUfjk33Ly1Td+UFVUZIeHxCnQDOHwwmgM/ARC6npGjPkNTPOrH43Mw+AYAJNN1BDWfYS9uoeJdJ8cIA==","signatures":[{"sig":"MEUCIQCbwioM9nrNOF3U20qODzBP/28rrK5J36Wq9JKHltiXcAIgB/3a/RWrUbAIfnkHTXgUO6bCK15Jy3xDHgE18wlNZOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260729.776","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17038717},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c776417eb92f362b119c0337c33f99a97f3cdc86","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260729.776_1785364008401_0.990504739532025","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260729.778":{"name":"relay-ide","version":"0.1.0-nightly.20260729.778","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260729.778","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"345093ff70f3a8e1d8963be5acb4ee94a366e902","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260729.778.tgz","fileCount":590,"integrity":"sha512-J5uB7naRR3yBV//L9Legzn89IaLvMRFqA7GqRS5yBEeST52wP/D3QUmRmlDqWFD/8IMK1gpykfbrChws7Wdmkw==","signatures":[{"sig":"MEYCIQD77RCFDco3Nn37RerDJFCPmKqlBqm8gnu28ypXY8t8egIhAII+FHfHxk3P+0N/XJVPmr7zAEIVJjFITI8G4IK+vypF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260729.778","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17039373},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"09c7e622070040fd6a58879382d8eb218988a543","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260729.778_1785364030813_0.9837267339226166","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260729.779":{"name":"relay-ide","version":"0.1.0-nightly.20260729.779","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260729.779","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"88f005db1d12469b78fca5fc0b21806c795a8f9d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260729.779.tgz","fileCount":590,"integrity":"sha512-7AiWCUwQJrZVvmUp5Ixpns+1GYICDkFTlJuNRebOoHhSAj0RB0mnRLxfCI66dImn3TSAdLIsw0iZGbjuoW0nlQ==","signatures":[{"sig":"MEYCIQCzif4T8lMWPqd29NjZuh9ZHeB5HYPqEJK2FWMEVLafhgIhALKjgi9BUcplfbfkPp0bp15jRb9yUvYFjXPTqHhkrRZU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260729.779","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17039188},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b74dd73e8783a5dded8ef5d67f3c8ef6faf5455d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260729.779_1785364035440_0.26566124113419254","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260729.780":{"name":"relay-ide","version":"0.1.0-nightly.20260729.780","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260729.780","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d1990f339f0f73164dc3cfe6a5cde088145348eb","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260729.780.tgz","fileCount":590,"integrity":"sha512-OgyMiRPVyLEKb80NHPtGYnwUKLIFId3R7XbSDjYG1YqVA2NN8dyVD5qfmb7V+m/7agZZUeJ0NXCVyEXQyc8q2Q==","signatures":[{"sig":"MEUCIQCgGlOJo1KNyqhlHTWAvwExm54sLSLzETUOQlhT7QgiOgIga+7uQLJbPVtb2zUr0o6CLynYu9k9lysK6yVLs1QkTX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260729.780","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17039188},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6063c04befe3d68bba54b73c02fa5a4d0a3e3ae2","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260729.780_1785364696057_0.25039127478765155","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260801.781":{"name":"relay-ide","version":"0.1.0-nightly.20260801.781","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260801.781","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"924cdda0db130f562c91df3859c87569e80a465c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260801.781.tgz","fileCount":592,"integrity":"sha512-hrY3CIBs09ktd3FSfl16VKhE9qj0XiXMwoeHE3iu8AOkPNcUQe0+JRb3s0ou9KYCps9IWvzfTeubjkePrKUoNg==","signatures":[{"sig":"MEQCIGca/CbArT3EFqzMP49EecW8VhkI0cTUcaJGK6ZFlcsHAiAGKo2MpZym1D0BAwLGxQL2dUIKgF4PTefdfgrfpwF4rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260801.781","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17067255},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"527632af889b555032c7707e87c32a86e294772a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260801.781_1785544280434_0.18499320731333868","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260801.782":{"name":"relay-ide","version":"0.1.0-nightly.20260801.782","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260801.782","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7cd164e522fcbc8e852bb15c5c90a5e0f5cef1e9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260801.782.tgz","fileCount":592,"integrity":"sha512-Wdm7eS5N/z9RlhmM/k7nTLhMZgIbVDaWnyF2U/ezZ/Wn3SckJzbP78+0PXJ8cT9VmWc/ajrCf3ns3FEXVpvaHg==","signatures":[{"sig":"MEQCIGup+g5xymiN07E/CuBgVIpXW+4fdxatS4EB2AoWtApiAiBXsSZYOsfJhX/rv/33Gt/J2LMuT1wbLVR8mnK7WlHsLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260801.782","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17075619},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f45d83e4affb604516e5e188e9f00da70add8062","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260801.782_1785550401035_0.39730072319724363","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260801.783":{"name":"relay-ide","version":"0.1.0-nightly.20260801.783","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260801.783","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ee7180e7f4f0b5417e6e867984b92a26864ab647","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260801.783.tgz","fileCount":592,"integrity":"sha512-wsLqBAYn+4OBLO+vF26+xr3lkcCsvJ1opknPrAlL39LXjtzDxXr0Nsn/EX5onEJwUqrfBcpFvx0PNiR+aBYqEw==","signatures":[{"sig":"MEUCIARRYh1kLTAS95gIM8FC1w9vH0YVyqcY5IXQIA71EdCuAiEA4YsCDa3ThBDsuGA5YHWZEv7AC6sPpKuAcNhSUbqGAdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260801.783","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17087032},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"287585c98601b89dee7dd3c33952e67230b4d6d1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260801.783_1785555546211_0.5713774582350826","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260801.784":{"name":"relay-ide","version":"0.1.0-nightly.20260801.784","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260801.784","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5eeb0efe4f00fde15f5af05ac7cc1cb3e8d0dc99","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260801.784.tgz","fileCount":592,"integrity":"sha512-gjmXtzw2CMpgWo/3yFAN33bdUNDCPc6catg2OxIxV1ylzIts//y1s3jV3fhAhB1bnzlMhAZoTO84PtAEGaPc5Q==","signatures":[{"sig":"MEYCIQDtlqfI8MZDxwciRrJLyZDSL3lsdSNjcvui+24gXIdpBwIhANvciQuLofqghypMkHYXrB8z2kYBAuPxPzEBHo7CAJX9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260801.784","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17101328},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a417b14b4bbcc304e05429c8afff7654ca4d915e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260801.784_1785564048057_0.4352035627056232","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260801.785":{"name":"relay-ide","version":"0.1.0-nightly.20260801.785","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260801.785","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"bc9cba24297c09c3ef2fdc931840520edc0cb517","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260801.785.tgz","fileCount":591,"integrity":"sha512-OqZI9IClt4bg6zdO4UFdp3gVcSr/t4UDUYQqIGNAgun0UJp48pxUgzkTe7p9MgwERRkzvs3e5a4famz7rywjAw==","signatures":[{"sig":"MEUCIBfuT3fqnWneEjo+Nq1dIjlx48HlF1smxkZDk34CBxYhAiEA6xbe7gYg7JbeMU2AURxABr5Wt00PB5aBpQxWnOys2vo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260801.785","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17102960},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1adfd6ab285a00f460617476211248efd0f5e772","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260801.785_1785566069060_0.09625730705581037","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260801.786":{"name":"relay-ide","version":"0.1.0-nightly.20260801.786","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260801.786","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"90a56a68270cecbf20f54d5b1562a7209724eaf3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260801.786.tgz","fileCount":591,"integrity":"sha512-T9AD7CmRKKgfT5YRTOOZMZQFFxiGPXQ0o5rU3gXfZo2hOjYS+6FbXauJEhtz3wK0HJHC+1+693YwOQY9hZ1K+Q==","signatures":[{"sig":"MEUCIQCL8HktxQGzdvO+u20zAPsbXIycAifrxryHYRwDEvGLQQIgQQx3vhXyEZ2u9XJgZrPMbAbBWSYJq8QxqQAg57SnrYY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260801.786","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17115057},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bc2e6da9447e57cb1354a3623b4f1c75cf32526f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260801.786_1785603013163_0.4206641712411969","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260801.787":{"name":"relay-ide","version":"0.1.0-nightly.20260801.787","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260801.787","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2d08049d51648335f82fbc5287c28904b3b5e661","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260801.787.tgz","fileCount":591,"integrity":"sha512-0t/D3WkXIA0+fGA7gaR5qtdFV4NECt9RQTxgJH/G7JWRZcuciyXVwXhmIpl+wGduNADqdcbp2cGqUKmBn1vorw==","signatures":[{"sig":"MEQCIFKJhgDmS/njRwojtkXAFo7xBMAJLCLNW4xzKufYHkBbAiBJb+1a0Mtd6VhaG1u6G3GJpvExcwikeJsFwgEzYnMKxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260801.787","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17115227},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c08db8a9e7dcb039d39bece03021471ca32332f0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260801.787_1785605234267_0.4161484185103075","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260801.788":{"name":"relay-ide","version":"0.1.0-nightly.20260801.788","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260801.788","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a3e4536ad5b9d1bfa259bc6b634d6d2b2558c9f6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260801.788.tgz","fileCount":592,"integrity":"sha512-iEQtmIG40kHK32pQbEd1s2MeSYEdnrWtvTki0pkNdJMoS0uprurxdI5FfvNqKI2ryzU3INMg9VU6FwartTT4dg==","signatures":[{"sig":"MEUCIDR2LaqycZVq22NeNZp7nQOpfUh0oOfZOKFmjQQWR0T3AiEA5PD0do/ItWPYktzYiHsdo+UNYudYcNXIzv8aRHF+ALw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260801.788","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17123279},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"87a08d7512366b3fb4f5767891643c707844e8ec","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260801.788_1785615895741_0.10530904070826508","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260803.789":{"name":"relay-ide","version":"0.1.0-nightly.20260803.789","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260803.789","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"af6f173a169fe6445aecbf69bc5d644b83492937","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260803.789.tgz","fileCount":592,"integrity":"sha512-MO41JN+EZunqaacDgWrqfR69WhYe1VhuOZEmd62Z1MaMFTonGYYSjLDuFQoVLlMVzPJMA5M/j8mq1j2oN7csTA==","signatures":[{"sig":"MEUCIDTJpsTcOUHYVs3GHTTs5V4Pw2sR5wMauMBQ+myOzZxvAiEA2UYNyzk0BDtbATCDL5crqzqMiuhsNBI3RrNw9KARSRI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260803.789","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17126677},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"66dbef166bcfe55c2fcd8dd3711eb337e2eb099c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260803.789_1785728683591_0.5279887230446016","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260803.790":{"name":"relay-ide","version":"0.1.0-nightly.20260803.790","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260803.790","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"32104e55992239c202e69f1fa5990ae00ba56176","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260803.790.tgz","fileCount":592,"integrity":"sha512-i8GxXhcIG0a+3L+2FPH2vzm/rN4tCijj0WBzlpA/JZ11ZW0H+crBOZNlVn8aTk+WH6CFGr6ZjoiYKB61bpezgA==","signatures":[{"sig":"MEYCIQCkEq9mTnugouvVFDpHIzdxXApzRuzxYtCnG+Xw5EdP/wIhAL2NdhErZDmIUj0j8twqZRlI4EKZlRnT0ScNVs+CtTTL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260803.790","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17188751},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bde7033f22ef2acae9ed697b52c1ee882e1bfe61","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260803.790_1785752260249_0.9936015610101256","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260803.791":{"name":"relay-ide","version":"0.1.0-nightly.20260803.791","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260803.791","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"85f5bd10d13d80fd4f9cc0e0eb69ca4029049b70","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260803.791.tgz","fileCount":592,"integrity":"sha512-AEsHGJTpgwOGgPq45xC4JuPUajrpw+DTdkkCTMiyDXqdOp1qjG+9YZNmfTcuRyG/+K5wvoyWpcbTwdMnthePlQ==","signatures":[{"sig":"MEUCIQCbc+jjTM+QxnskZEeTLdl8hXc12fWToQ93dVwlcMZbnAIgLKC8p8cNjwJhmysNmPuc1/O46hvgANV/3WQZNUUplHs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260803.791","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17234593},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0344d382ed3604c7c83ecb55bef74f5a5a32b2f5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260803.791_1785759723255_0.3153423519782037","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260803.792":{"name":"relay-ide","version":"0.1.0-nightly.20260803.792","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260803.792","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e75ce6a62c893030d0f05fbaaa8eb0d0796655b9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260803.792.tgz","fileCount":592,"integrity":"sha512-WFbXSjfF/pBa5s3kp5uGhQkujiouOo066/UAh9ofMxL+nekK0WYWobQayunVnoYtdosLYhC5Dd5MMjMiI4gKRw==","signatures":[{"sig":"MEUCIGpHH9JOot2mEGr/0vXMFWdX7rE3+0WsTHefGx1ujkU3AiEA2uCf30aEdcy+9DgpGS56Y3IpfgLDilGeNGHl5iL8Q9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260803.792","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17248346},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"47cf295160d96ba9cd6202f3e98e7a8fb286ffa6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260803.792_1785764127961_0.971351297213056","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260803.793":{"name":"relay-ide","version":"0.1.0-nightly.20260803.793","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260803.793","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"109d7a2abf571c3f6a3172e11dc450c322e33675","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260803.793.tgz","fileCount":592,"integrity":"sha512-88D1mhza7FWD+1FgDfsongfKDAeArZ4xrkZBIVqmIORLn1IOjgvs8On4AS7DnwjCs+uHg8OFSW9BFZbLUeIomQ==","signatures":[{"sig":"MEYCIQCU1IbZYDTqByBam6i4xkytpiJyzh+swW+7gbOnSkQovAIhAP6eg6ASuOI0V0PkA44YD5YQrPUWWtY+MKaWQtb8/tLo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260803.793","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17262660},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"aaf4fbe3fbe7eef6e14558034f7f7a9b2f5d9ca7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260803.793_1785771913082_0.3825025337960679","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260803.794":{"name":"relay-ide","version":"0.1.0-nightly.20260803.794","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260803.794","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f752d74bc66ea35a8840e917739565942f263b2c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260803.794.tgz","fileCount":592,"integrity":"sha512-sKSNPfP5VSzL8INLQMqYbM0Ls0XyWSzOXe4ueF/aXEoAH5on0DnepE5Mffsb2uj26VgwPpPNej4tyeLQ0XA8Tw==","signatures":[{"sig":"MEUCIETVJpYm+X+KoIu19Up+xc7UNMCm1tKFDw1upbfjmLXJAiEA42hD+8yVfMqo0tuiICehyiJf0iZWh+Bg30fydgjxscY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260803.794","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17285252},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d37645d49444ce3ea11524c0135a6714216b674a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260803.794_1785778375837_0.3762309264584003","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-nightly.20260804.795":{"name":"relay-ide","version":"0.1.0-nightly.20260804.795","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.0-nightly.20260804.795","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c6eb0d43557ef745d99fadb82ae119b02672aae8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.0-nightly.20260804.795.tgz","fileCount":592,"integrity":"sha512-ZDBOAk2rbjC7OUgIAGU6k2MOLn0/f70lpmQj2Lp9OazGmcwYSQ3RsQjEW8mqey5PIgPB6RPKe/6qNt2o5b3oGQ==","signatures":[{"sig":"MEYCIQC2/3lVwxAXzoLN2PvNQ7ZBwUAZmHB+rsJrum33K+ZB0QIhAJL9l34NfdSBTWVuEpTLIRYdMaPrmitu7KBtAUnpIDtW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.0-nightly.20260804.795","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17285252},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6f90bffe3a754c9aa3164c6014ebbe5c46dcf47e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.0-nightly.20260804.795_1785812710571_0.3390020517520753","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-rc.1-nightly.20260804.796":{"name":"relay-ide","version":"0.2.0-rc.1-nightly.20260804.796","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.2.0-rc.1-nightly.20260804.796","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c7a27bf9b186bd9deb4984006463bab09bca3a93","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.2.0-rc.1-nightly.20260804.796.tgz","fileCount":592,"integrity":"sha512-BM75PvXcXAjLKh6oMJPEauw1Kwfm/YqNsKhcTzPvaHXOR3pEW7bQCvdABLwuFBzQveGkJ26koAO7IZwX9lJHgw==","signatures":[{"sig":"MEYCIQCyGyrdKTQVJOj6b1u5XtOyHX2QqRxr3bi8NJNBItpiugIhAK+zTFbxerGXVmsI+m9fhwnv+/16fww3mKD7MQhYXAta","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.2.0-rc.1-nightly.20260804.796","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17285257},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8174fcb03f9bbf98ff4c8f0b1acfd697f049d792","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.2.0-rc.1-nightly.20260804.796_1785813377045_0.7395881168276186","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-rc.1":{"name":"relay-ide","version":"0.2.0-rc.1","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.2.0-rc.1","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6116fc01c9b1d21259b71431d2622b2bb892b1c8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.2.0-rc.1.tgz","fileCount":592,"integrity":"sha512-97FTJ4mHrrl2TwSv3fxXDzw1lsMAEFPt1mTIbv4QT4/bes7QJwJn2aOKwP+ll1CutKelHNw5LZvSiDQdVvP4cQ==","signatures":[{"sig":"MEQCIDC7QIRVaB5tZQLco3hyJ4xEf/c/Cstzi+UpxQE+0HzxAiBmhQIhhL4nPll6isVqmVDk7mVmQ9zXB7JuO7OK+cgFeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.2.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17285236},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"761dc09749e59f03687883b276dd66ef95759418","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.2.0-rc.1_1785813800700_0.3138895216461486","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-rc.1-nightly.20260804.798":{"name":"relay-ide","version":"0.2.0-rc.1-nightly.20260804.798","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.2.0-rc.1-nightly.20260804.798","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"34ba24b3cbb214419f7892be975510a027a1d0fc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.2.0-rc.1-nightly.20260804.798.tgz","fileCount":592,"integrity":"sha512-OKY55vk/XOcQygtxK4Gja55okPpId/PtpcSpUDgcl7RxZin41HQwpuDFzN/Wc0gZsKKGxm6tumfypEEqPMrd9g==","signatures":[{"sig":"MEYCIQDaHZH08PRimoAn9EHwhQGITnt11hgJUOmHH1uGIBRacAIhAJoDUw924qHYaWMF6P+lEVsFIZgUAQELdaTRs5OmYLny","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.2.0-rc.1-nightly.20260804.798","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17285257},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"761dc09749e59f03687883b276dd66ef95759418","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.2.0-rc.1-nightly.20260804.798_1785814073440_0.8558708813957254","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260804.799":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260804.799","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260804.799","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"75de740bd7f05f3853d73caf5b0ac47516e038ff","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260804.799.tgz","fileCount":592,"integrity":"sha512-ToEMnKXNfwGV9CBNfU/HuI+Ut5Bs5PbdKTuWXowUj0i0rz6u3Sr9MPsAw9OoklgD+trF07uF37Ed84BkbxfM6g==","signatures":[{"sig":"MEUCIHQXd3UTy0cje5IKknkvnTfJiNhSuGxSe9WxG0OK8FEPAiEA8Ohe68DGF6h6laJ7wac0kUK8bU5uRz38oYNJ4DFPdrg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260804.799","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17285257},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d25eb145d12b3462b850d5ba524a306da341b622","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260804.799_1785868324380_0.22948302445152025","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1":{"name":"relay-ide","version":"0.1.1-rc.1","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e56ad5ca8f99f58c0a8c3fb5ed24863dcf509522","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1.tgz","fileCount":592,"integrity":"sha512-7bs/54nUplVZ8saL6hpniIH/YlU+duqHW4Jngp2ijmRTDhT1n4zTS38v1oC0CJ4tvSQ2SZo3v3itooFPuHG+Jg==","signatures":[{"sig":"MEQCICL3bzCyiIvRosZ5Ztppw+H/dE0O4BTKLwjUAQRMAUEXAiBZO1N8bb1ZBZys1EoVBGpcagpQQORlZngg3HX9a8hc4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17285236},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8cf135e15d2a56231a2f085db6ff66e5c3030fe0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1_1785868843828_0.3083207692292447","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260804.801":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260804.801","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260804.801","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1f862b6336b3ad5ea702bacbfa0b57c94ff1ce9f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260804.801.tgz","fileCount":592,"integrity":"sha512-Kg8lnpR6xQmPagr9XMsCCAfFJaBMzWZJIzQ5g8oYvSQuyP0qFLSoTKfJpXoZij/g5iZJTx84f0MgrSO19/8tXA==","signatures":[{"sig":"MEUCIAhWRCjXwBXixO2BoxVV4dpX0Wbw0RaqDRgqJyGWGfniAiEAgxrgsEzcVStQuxPzL/fkkIaocLoTi2T9u974ubq/Wjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260804.801","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17285257},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8cf135e15d2a56231a2f085db6ff66e5c3030fe0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260804.801_1785869090937_0.8438031553564533","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260805.802":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260805.802","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260805.802","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e97266881787d6b5029b06d1da0890d78c2fb90a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260805.802.tgz","fileCount":592,"integrity":"sha512-B8OzRW/7s9ox5vhEo65pS4P523A5B0yaanOKza/r8HYHsSYD1oTatCDKKn8cKgEs84hA+cpJ9TeLNZv8SiWXgw==","signatures":[{"sig":"MEQCIGYdW/ChXP4ovJC29S++QG05VdAxQ7uRysoJQIlSsoDkAiA5h/+ffj7KS48706DNOo6vrrG/YvagcIGNiqGRO7R1iw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260805.802","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17290033},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d46693e809a4f3584f47f76acc684de6ac6b8d57","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260805.802_1785903581276_0.14323081577724084","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260805.803":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260805.803","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260805.803","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"7d1a26fb07ff4fa34db7cdf5c382c288a7314b8d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260805.803.tgz","fileCount":592,"integrity":"sha512-HUC2gmtqfPTOpyVOSKq5hwbDvItIkfWKXpTABdjCjGAH6oe9ILOGP702AfdK65roed2tc3Vly3UMXD00GztwDQ==","signatures":[{"sig":"MEQCICGUjAjRgAj+5P/97yt8dXCwkuhFkDrjKwmJAMbmGGuQAiBo8kUW5JEOY8/wOjaTBMZezm+mNggHUzgU97rn/0z87A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260805.803","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17313759},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"20df2c7edb748709583e5bf00af8834e05353190","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260805.803_1785904462943_0.3488945603374327","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260805.804":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260805.804","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260805.804","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c8fe2b8f6123d030790297e55a725735a3de20a5","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260805.804.tgz","fileCount":592,"integrity":"sha512-pWrCnqNE7N98oYy7Rgr/I9oq0UQzgaoapTFQSICGes+Vz0fx3RSYLC8Yw8fZqnKDCO/4EV8A/qEujYnAEHdBCA==","signatures":[{"sig":"MEYCIQCGMNmjeYp3ncWXSTgOmDq8x53QXhTWFfuNkr1BTOpZ/wIhANZvSp4qX6Fx4UJiKxYIP4Ev+OHdYUJ7k4o7V6K324Hd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260805.804","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17319047},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2c719ee8e20377084869ce2494c98e83ad780f7a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260805.804_1785904495225_0.4788759658515611","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260805.805":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260805.805","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260805.805","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e69a0e70b223959c8c9aeb3b149b6fdc516a7f9a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260805.805.tgz","fileCount":592,"integrity":"sha512-Z1Kiw2kcQn1ng6+LkfxKHR5gxyFsBV6ycaAkEcYHxxsuIuMZ15LhtM7O2+PHPwwNsgzfQrl7z/SNhxqqmKzceg==","signatures":[{"sig":"MEYCIQC5KPRn1trG0QJXNvomkchyHP3rpjkbN74AMUlgX7rT2AIhAKPNJXCLgfts/z0mF5oCBpeXA6fO9haYlrkgV1Xe1LEj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260805.805","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17319259},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0a68f21e0333d1dd0e0616cc04328a16b756120a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260805.805_1785905058822_0.38978941497052144","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260805.806":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260805.806","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260805.806","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4919f27dcaba0e40cb3e6a6cf62eaa267658e751","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260805.806.tgz","fileCount":592,"integrity":"sha512-h/19yh7YXd1emeBUXyk6BYF4sdOP26TFjj6GzYejA3S92XLBDnyjukvwvhKjSNUJ1DGRDmcM+n9Z8XeJYcRggw==","signatures":[{"sig":"MEYCIQDNPwPDAB3J82NnYLzydbm0i9Gdf4oZKCxz94fOBdEA2QIhAJVMbz24wk1+CH/peYyp45th9mBWUJPe6+K1lznKEG9d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260805.806","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17320031},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"64f450c292065f9282c94a9190364a668f2a0ac0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260805.806_1785905555516_0.9724316820528354","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260805.807":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260805.807","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260805.807","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b94b62b201d1484cb34c1ff5d14e603341089445","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260805.807.tgz","fileCount":592,"integrity":"sha512-QvO8N4t0QsnRRaLK2sJnf397r7LLnaxiQzZPPYWdmQ0owDDFqcQmVQR90FwHO7FZPH9xVf2bV6PG1NvxXM7u2A==","signatures":[{"sig":"MEUCIFys4uTwd6owt5QLYxDuSzA742e4dS/Qu5As5C8NEPiuAiEA2gB3i+8cRb+S42XgfRDd0gs83Qk0U+eM+ONA7y8aYU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260805.807","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17327369},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1d3b3fd8b4c3bec1a287bd44f0c7454761cbfaa8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260805.807_1785905960378_0.5532335637586714","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260805.808":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260805.808","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260805.808","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"021ad5b677c393e4fdde298cb87381c8d794ee0c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260805.808.tgz","fileCount":592,"integrity":"sha512-jb1wt6s6uXN/U9u5V7szJJ8zKMBUrlwNJg0jioikoKesiiOvnsZQZyG0iLtu+vGp+lThJaGd67lRmzvmuDwPgQ==","signatures":[{"sig":"MEQCICFCrUkijeKeFlMpr3VFTt4ADFYjTyXh+mpA1PC822N7AiAsinv0g8XeQ4aS+Z2A3g20CQ9LkS+yV8NaDmLOHfXUzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260805.808","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17337286},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"47b9d93833bf52026dea3039713b28b7c1fab0b6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260805.808_1785906574124_0.6963851429236472","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1-nightly.20260805.809":{"name":"relay-ide","version":"0.1.1-rc.1-nightly.20260805.809","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.1-nightly.20260805.809","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"dd9ec6d2320374dd175e567243468de4b364b67f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.1-nightly.20260805.809.tgz","fileCount":592,"integrity":"sha512-C6CdvtTnOFSszQ8acyiWn/WhsxbJg8Mb6LYgR6ItyBn/GEAgJ3jf7l5bcV0pjA0b96w1qqGj1aGRV0AUccdCVQ==","signatures":[{"sig":"MEQCIDiv/lhgVdeiVbw8j0Y3icZzMD0pvBfg7rYlURtX0JbjAiAcm1LjNJA5xriupyFw+0cUviOGyt8+jzFJm8TqAmsz2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.1-nightly.20260805.809","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17341770},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"6500d5b2d74b506d364a6443d6921d0d47089727","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.1-nightly.20260805.809_1785907265128_0.2579232151654014","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.2-nightly.20260805.810":{"name":"relay-ide","version":"0.1.1-rc.2-nightly.20260805.810","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.2-nightly.20260805.810","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2c72a16d7ff8c8294f1cc68773592969d065e0bf","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.2-nightly.20260805.810.tgz","fileCount":592,"integrity":"sha512-93ow1kNBpffn6BfPfSEGc9cU6EQOMUzLzlFj3tJl1G6wNLb/ceKbXj/LpfSSi9unVsEhv3Zc/hi5BFzA9HOk8A==","signatures":[{"sig":"MEUCIQDQttiDrBo/1ScSarkOsQZtBUFFq9ANCn6p0SNaKYVYFwIgNuGsgWgu4bOrKQMdFfO1qdT2RxacI+N2deeT+BNxm2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.2-nightly.20260805.810","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17341770},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9f3e53d6cca5020b1e1d94615fd58e4f46aba3f3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.2-nightly.20260805.810_1785907573511_0.6510185106705666","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.2":{"name":"relay-ide","version":"0.1.1-rc.2","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.2","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"dd2f243f5e14f838b9e49c59146ba5b7e0db17e6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.2.tgz","fileCount":592,"integrity":"sha512-MXkYhTOGuKNfd++d9yhHc/5jiuvzyps5jcn99pmoj5zAP4DWnm8TtDTZxrcNwqaIt7rFTnjV66UQPsA5F+xtYQ==","signatures":[{"sig":"MEYCIQCkYYUYeaNUr9SdV13IK9pKT/xYGwJlccGjkbsqTYzJ9QIhAIEkr9kdXd4PoLtABAR+eyoyT6U0BOq3i3QzZXo61LBz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17341749},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bc9b8fc6c3aa93415599a43a8343a6140da419ed","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.2_1785907887469_0.5957067217356682","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.2-nightly.20260805.812":{"name":"relay-ide","version":"0.1.1-rc.2-nightly.20260805.812","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.2-nightly.20260805.812","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d5fe242cb9ebdc920f5b425557570eef56a60dcc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.2-nightly.20260805.812.tgz","fileCount":592,"integrity":"sha512-AXnH3mpP+RwZauBeF7PUrrtwnwGdKFdj8lm17wHg9RKLROD9e+X4qQSCipR3lOGZelktI/GmDhjLVYHc11mTgA==","signatures":[{"sig":"MEUCIQDDFMFFD6fMIcGnFJnjKMPfFvN0GdBO5EYereoCQQWsRQIgKsWaAQaXfqSmuvt5RCoSnkCZIMsb6Kvtf+9Skmfpvp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.2-nightly.20260805.812","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17341770},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bc9b8fc6c3aa93415599a43a8343a6140da419ed","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.2-nightly.20260805.812_1785908145568_0.19085701312616643","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.2-nightly.20260805.813":{"name":"relay-ide","version":"0.1.1-rc.2-nightly.20260805.813","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-rc.2-nightly.20260805.813","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f234a0c7e17f3b43c4c0a60246475338cf8a2616","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-rc.2-nightly.20260805.813.tgz","fileCount":592,"integrity":"sha512-K6sB1OPXuJfAlbICCTYHOSovqpTfu1too8/9Fqa/ZIZS9g57DX3U475ErBSNMeU5wXR+odHFy6PVFOyvoQm5Ow==","signatures":[{"sig":"MEUCIQCpXKGLIpKGYWzIt4XkwM3uLjLz6t3XJCO06kkYws/ZYwIgRfm2FbE155BOUCBDDC8Oq0VSKj7JLML3OaFDtj8cgGs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-rc.2-nightly.20260805.813","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17342679},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7494a79ef17c2a1209fb941ec16825ef5abcea33","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-rc.2-nightly.20260805.813_1785946848591_0.3544074936299364","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260805.814":{"name":"relay-ide","version":"0.1.1-nightly.20260805.814","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260805.814","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1b773fcc77d896e525143b09ef2d25873f69d727","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260805.814.tgz","fileCount":592,"integrity":"sha512-UswDEcJZkc873zuKIzEfl1MBry6JMCczbtyGuHexv4fj81GzZsOTOymSLeIS4Kwc7Ql7U/xTHt5KZ0bpPw3fiQ==","signatures":[{"sig":"MEYCIQDobtcYMyqPo4mpr37m4LhLnqtg80T46foDQ51Czz96dAIhAPsGnj092UsdQuUZKGq4GQmHxkVdF3kl6b1SAY8bqgeS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260805.814","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17342674},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"28f8c2973f3f0f8d239d4c14a70b04048392c836","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260805.814_1785947055522_0.7004966663753036","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260806.815":{"name":"relay-ide","version":"0.1.1-nightly.20260806.815","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260806.815","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f70deba4d9710bc7f45581920975b38d682a2fb1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260806.815.tgz","fileCount":592,"integrity":"sha512-fX6JD0A9KnzufpZ0GcHzpiYDKvZ6QijoteiqilJFNSgqZYgKN8c2fnSxU2zHOcddLjmcLrSk+BnRa5m/SIpsQg==","signatures":[{"sig":"MEQCIHwtB8yZ0b7Kh5PBcTItSI/PPirDJ12ZnyzGvsPMXKYrAiAw7gwP9nRY8bnnLSdRNGvY5fnXUxJpjmE/nk9PeoJQcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260806.815","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17347061},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"0c8a7eff957cf050b2e1d001c571c671eaa427b1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260806.815_1785975280071_0.7530949335120583","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260806.816":{"name":"relay-ide","version":"0.1.1-nightly.20260806.816","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260806.816","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9baafbefe661561a0940a7ce4cb94bbf32d717bd","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260806.816.tgz","fileCount":592,"integrity":"sha512-xkXf/osqmJOSXQs5QQ77PdKVV0IWnLpzOuz88yWQdQ6UHhwZuaCI6jvpIJkMpJ8aMbZZewjNRkeMExiA8LWHzg==","signatures":[{"sig":"MEUCIQDdE+t86dbKMSYba43SfeTGNFh040aLe14UpeRu962xEwIgSKGdeaIfmqVeyQ7iAyZjfVnT2toGDf6+TIDq19h94E0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260806.816","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17347300},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7bea3d6f189bc6779c381be6bd481c77a7487d4a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260806.816_1785984799570_0.6270113407601343","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260806.817":{"name":"relay-ide","version":"0.1.1-nightly.20260806.817","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260806.817","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"58b10cd1d9f4592ef5d8f851b8832790ce458da1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260806.817.tgz","fileCount":592,"integrity":"sha512-LVDPC9fSweBMkRXgzQ5lJ3Jx8AKGisxQMLcV8RvM0l1PvbcbU6MQXtQjNxNf8YUMtjHwLCbWP/TrdaH6byrI2Q==","signatures":[{"sig":"MEUCIQDLtubOwuyVIkDuK8TpWyyVOEDnAQr/eSV3zVa81N4tiAIgKnk3niw4AwX4SrEPL2miwaK//agNMKjfhLKYmxTAYQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260806.817","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17355070},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"037b26a92304d5d42d137f565a9f80106a7758a7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260806.817_1785986187734_0.07036122491525809","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260806.818":{"name":"relay-ide","version":"0.1.1-nightly.20260806.818","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260806.818","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"998d083a3bfa3f8733820b878320fefe2dd7dbc2","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260806.818.tgz","fileCount":592,"integrity":"sha512-Kiz1Sbfo77RkA6GYk/hRWi5pVsmV9tc3f77revR/iRwtpkmpMvFa91nol89VZpmqoKggPyMr2xGe77EMsiE7LA==","signatures":[{"sig":"MEYCIQCQ1m7SkydZNlD/NJQ+8888Wo3m0VmjzyKidY8R6nFokQIhAKvCrPtuNkDHsTbDNr5asBvvwbQkhFLkEVWfS7np000W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260806.818","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17372903},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"1e03740dd63c14f04ed56c83ce2bb50617d30141","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260806.818_1785989718794_0.2750357426958898","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260806.819":{"name":"relay-ide","version":"0.1.1-nightly.20260806.819","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260806.819","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f29a204d0203e54181f436411fc25703a1bda0e8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260806.819.tgz","fileCount":593,"integrity":"sha512-KsvpSvQG4Br3QLuDR6zW5uha895+Du2VG04TnEHAkVRy6rps/q0/lSRPeX+t2dan03wICNWtCTOqhO1S0755Ng==","signatures":[{"sig":"MEUCIQDLQYefd0s/W12EDPceN47PC9LKma9uFrgFduGOzJzusAIgC5Y5sYcZRvdzLJpGky5tc04b6wWkWlpgaoawtKUFynY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260806.819","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17402429},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"25d0e906bd0455aee934033841781297f6f1be34","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260806.819_1785992272875_0.5114782510651348","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260806.820":{"name":"relay-ide","version":"0.1.1-nightly.20260806.820","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260806.820","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"defe8d392f0f58a71e2ddcdfabd2d963d632651d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260806.820.tgz","fileCount":595,"integrity":"sha512-qtZf5bS48jGAG8jDcuP5e6WBOi8SakAy01ObAYf+sHL4IKEaSP4TaHjWzJI9NYtyLf8tL/+bxuVKdozGSX3B8Q==","signatures":[{"sig":"MEYCIQC/ypgszljVnyBWnFGhxiweuablM4UsxajY6RRMeLw3KwIhAKWUuWyAA1oTb3T9HBBOx7WgdoY96Zrc08R/34taNfX5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260806.820","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17443604},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e0f6deecfbf5b9f04e0fbd395383cee59e0fb852","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260806.820_1786018877639_0.7226145898553675","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260806.821":{"name":"relay-ide","version":"0.1.1-nightly.20260806.821","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260806.821","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1e299eecde18375fc074c58e65ad702b8293d5fa","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260806.821.tgz","fileCount":595,"integrity":"sha512-GaE/dY1Do73FRJYxJfdgRSl8xDHicxvFu/czlIYwhQJc2XBAtCDpo4B5nWNVl6Q3Zd1+TNeovKboUIbp+AvD1w==","signatures":[{"sig":"MEYCIQCbsDSQsxHZfjar7e0Jg2dE6DLNSfQNl4U+kNmswuOWqgIhAIgJaqMQMlTAs5DwCoZ5H703QY/cvsvxmjPBGl12sIJj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260806.821","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17452907},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"222e9a4b7b1860a1dc8e4a4c23f0a2ed1ad82bef","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260806.821_1786023131953_0.6021741438819532","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260806.823":{"name":"relay-ide","version":"0.1.1-nightly.20260806.823","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260806.823","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ec1ee60b6767df594c8a37d2a74cfe2904db9066","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260806.823.tgz","fileCount":595,"integrity":"sha512-0eSt9FgZ8S2oIQzT64GL748WXxd41jQ88xNq2bYjDPSACnCPyDorMIxEaezHnQPnpBCij0ARdvMpBbRKoHgRSw==","signatures":[{"sig":"MEUCIQDCfqiOYxbZHvxcpf7PIu007/+gjtA/TBHdyBAVNTqw/QIgFNOOppOJsES+yDOqwWMvy3jAzrIMHmmltK9B1Oo6tjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260806.823","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17457835},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a4914eae86485983779743eb96c0fc18a5a0aa9d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260806.823_1786042167343_0.44066060977939725","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260806.824":{"name":"relay-ide","version":"0.1.1-nightly.20260806.824","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260806.824","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f32cbf8bd2e5475b0e5eee5ca2e01fd0d9ed5797","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260806.824.tgz","fileCount":595,"integrity":"sha512-ArXPWpugYp3bkkIw5Tn5Tlqt8cHay66rkP+RgvUzVq10YbCqkhTnobXmREkIVlmwUlujyVMgbT0xiQ23MMzcqw==","signatures":[{"sig":"MEUCIQCBwMupkRcs/jaKsEkRNxPpA9AkoGqy5P2piYgorDdoCQIgTOaRIbDbDbTva3Z/fuEPAOwsfFz1Nnu7BHIqBrfkwxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260806.824","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17457835},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a4914eae86485983779743eb96c0fc18a5a0aa9d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260806.824_1786043170015_0.32527625594678056","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.825":{"name":"relay-ide","version":"0.1.1-nightly.20260807.825","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.825","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"232f900bfb0b9f62d2587a359647a56329a2f7cb","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.825.tgz","fileCount":599,"integrity":"sha512-s4YpqgsOamm/sGDqH3LyUdws6DaEtBFjJ328RCA7EWI5JyXG2MxmVytkF7SGA+5j4gmpdjhil0mngNImJGqJkA==","signatures":[{"sig":"MEUCIQDUG/0gZT3Ix2t28eQbk13//GVME1OixzKzdzq6L6nNvQIgZGmNrBmFrI6rFZJPjkog45Fm9TvLe2qV/MgHNE23Qns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.825","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17545153},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"171f8d186d98115b79f6926392cf3660ae0fb712","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.825_1786068645842_0.6490358617219016","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.826":{"name":"relay-ide","version":"0.1.1-nightly.20260807.826","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.826","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"dc9b3a9ca85cae7d6e5eb743f7ccbde5de1e9b7e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.826.tgz","fileCount":599,"integrity":"sha512-4tZcaDlne2cz6RhG2FvPfTNvNnqF2KKQDQL7i3RQon1+puX8wB4x9M/uUFVGVNLec3fm2+W5guDuhBcPfYnRVg==","signatures":[{"sig":"MEUCIQDFVNE2lNfSQOPHgd5kyfUQT9nyIp6yrcaVhCzUVc/BBAIgbMm24s9POsnChzCgSzUMV+She9GzxK283SB7mcWw9bQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.826","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17545778},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"ca689b3ecabcf0804b34c249637221545227ba4e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.826_1786081260774_0.7446074400310356","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.827":{"name":"relay-ide","version":"0.1.1-nightly.20260807.827","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.827","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9a563e89ed27987ae0f3d5f56b6982fe24bbd2d9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.827.tgz","fileCount":599,"integrity":"sha512-UbMB4JPH37wizM/ATfm3Aj1Y79QrRh+WNna7BJyfD76/EW0LrMVRVyGGEWqUl9beEzHXFrIk4Kjv/lo9Rf3i2Q==","signatures":[{"sig":"MEUCIQD1cjTCwFvjgSERNFjgpjtAs1tSPUmIHYxLgR1PBODr8QIgazh5yVuK7vTyQkk2tvWY7wPu7aKUJlH7owiNn2NUdnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.827","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17553636},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f1d8409fdb2418da949b5dc2e36a481bb7747349","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.827_1786083462714_0.3188489116174822","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.828":{"name":"relay-ide","version":"0.1.1-nightly.20260807.828","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.828","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"2e421521fbf689a9bc9614d1aee0866d558d6ba8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.828.tgz","fileCount":599,"integrity":"sha512-kq2wRuRRPnRrsxQPvmMBDm3MgFABMAQ3zzqQXJSh6tliFM7fvCOJkiif5VfKvfiCc4mwQhNZPTvv40nQBNkxng==","signatures":[{"sig":"MEUCIQCwQjTkDG2dBx4QRpCI8eB1jkkq9+vJxNgZXSkwFaga8gIgd35q/dCSJtmqON+S1jBrtMQcgqDHvR1KAm04MqViFUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.828","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17554612},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d5fc4fc54dfe9e9bf4df0ef642e43676077a41d5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.828_1786083623032_0.6844108957863897","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.829":{"name":"relay-ide","version":"0.1.1-nightly.20260807.829","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.829","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6a4d40449009cdf8d0aceecdc02e58b3db57ef03","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.829.tgz","fileCount":599,"integrity":"sha512-EObR/sLhPWP9xHXGPbJ6VoRpqGPa6yGFmIPLZxumWQbz431aPntOuH8tIB7KU0TPOds4w86EgNR8vuSXlbQdRQ==","signatures":[{"sig":"MEUCIQDe2HcOHN2GRzxgsfD0BYHnX+P8uWR24LApcf9BBQR6/QIgRhTxahBfNfwCxRsLepH8f0GJAeIAfLIJ3nSYnXn8xiA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.829","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17561073},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"d1cb17018f6552136d524f7ab056ff4147ddf12c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.829_1786084307751_0.983609182174491","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.830":{"name":"relay-ide","version":"0.1.1-nightly.20260807.830","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.830","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"128a3252f3041f4f627689bffd0c313705322154","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.830.tgz","fileCount":599,"integrity":"sha512-kcxiln+m82LYf90QJnJ53frdwRwRZ14ePuK+EjR5x+Xf8L28nuLgGY6WmPG3Ju5stNNOPMAj52tkGOxe77rAVg==","signatures":[{"sig":"MEUCIQDa4bDL4GRs/wnJfQUJ1mfCGJXyYDQbKE1i5NIGPdeWNwIgEK51c/4tFerJ4ALRJ1usONs3y9wjF/uVggLPA/5mMPQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.830","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17566177},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"9e98ed58f2a2e128bf1eb32fd23df64e5a381e0b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.830_1786085021252_0.17902343473655047","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.831":{"name":"relay-ide","version":"0.1.1-nightly.20260807.831","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.831","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"ad17ea48f6ddf9ed0f80ded91b6f130feb20f97e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.831.tgz","fileCount":599,"integrity":"sha512-OXertGqcgtgmhcIAesmwELrUS1FCo0OIOfmirgJ8zU2kXV0n6o/EFRDD+V6oCe+F2o+ORKrqQjYDd6BqY6enVQ==","signatures":[{"sig":"MEUCIQDr9gzhPc/qpoFDHpJtP3wi9g3bWPCTJzHOtWiG7Ak+uQIgEdUFA9+/CUlmq4/N7HuNz8tUG3tqDSZPWJHXT2RlPOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.831","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17570992},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4b838166410b45f6a02d90efedf3266705a37d70","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.831_1786085606842_0.3823505338733595","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.832":{"name":"relay-ide","version":"0.1.1-nightly.20260807.832","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.832","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9caf2c5d8f01fc9ca7508239270d3863e1d09046","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.832.tgz","fileCount":599,"integrity":"sha512-lNOb8gMJTypgGN71rRQdJpzzAvkift89OcrPnsLel9f2PPTfHvz5j4dxLcEYTHSFmOTOawWllWmha8sRbnthyw==","signatures":[{"sig":"MEUCIFAL8pGjRsFVMxu6LNhcIJU4AXYywtGERKDYE9HUxNMJAiEAzHmhR6sbDz1klg46xtrQMpeqdWlaZDWVpFakne12DEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.832","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17571301},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e1023ced710fba5b82cc3c43383d03ffacafe21c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.832_1786086675031_0.22815243857641843","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.833":{"name":"relay-ide","version":"0.1.1-nightly.20260807.833","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.833","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"63bf649f4892eef2deaf97ede4eaa01f7635bee6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.833.tgz","fileCount":600,"integrity":"sha512-ZffMFG35tS3HUJVUfajx5/vwcw04dCeLtT12wo0XXH8gNpw9ITknhj4vSTwgfiLPL954tJmp2vIxteuNT4j8yg==","signatures":[{"sig":"MEUCIQDa5oRDuvtnwBfH4wnZ154bnEqoOjAME6NGck+amfi8SwIgYgC6KkbA4b4n7eKN9S85VwfuHF20I3sC7Wg6h5jRzp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.833","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17574345},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"98b029033d26a5713f29dfeffe0b3cdc249fb36a","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.833_1786126851133_0.2992412967605951","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.834":{"name":"relay-ide","version":"0.1.1-nightly.20260807.834","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.834","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f04a92396e87ce94ca93f0544da51592ccf1504f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.834.tgz","fileCount":600,"integrity":"sha512-Bp9yGQ077hli2Za7ud8GPIej2kdfAu0I1H73ZPs3qn1BERTRy1bfOCIHvneKqrhY2ybAMqOHKgJR3f8kd+SAmg==","signatures":[{"sig":"MEQCIGPHtSiB8tG4Jbah1yUKtiE7tT0hHCz1Z0WO4a9e014CAiAwMfnqZMmWbC84Mrd3YbGYccSoC1P3rmHf99gwICB49Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.834","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17578337},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"771a7c838bf07c7039bd97748337a0c100f8dc2b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.834_1786128800784_0.9654322540227835","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.835":{"name":"relay-ide","version":"0.1.1-nightly.20260807.835","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.835","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e6e2e1d12e3d3537620254ad35acdd30848dd602","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.835.tgz","fileCount":600,"integrity":"sha512-9BSwdwc4jeKWNkG5ym+DDNatque3is/6uiViDBK5Ex/cDZ9HtifLgsBqQBaaVObV4LKU9CNwIDsOU6yd9iA6iw==","signatures":[{"sig":"MEYCIQDMpf1r1n/lLLvGAoPxsntWqkJsqTj2fQlwtdqKW6vgQgIhAOUyMhAnLihjvJHc0KfOxhI7vh2aHb6e7+1F4PfFCmI0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.835","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17583240},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"44f4082a45517b103ff21560a2f1869e72f82b31","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.835_1786131224612_0.4371927844773913","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.836":{"name":"relay-ide","version":"0.1.1-nightly.20260807.836","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.836","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9785a02a15478164d126e3eb380b2bddabfde853","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.836.tgz","fileCount":600,"integrity":"sha512-AeXkudLR6HQjzHTRHz+S4Y8at5QWsMAbKUyDTFUYjbNqPnfoQ+coUX/Wbejy6I0hm55efyBy5AJ6ad+9nCtUaQ==","signatures":[{"sig":"MEQCIGAhdvhtdOQdYxd0suZ8YEG9DOvC5o/RDI2s4fxD6slMAiAUNFWEJr0HxOOocquenUrVPj2DRUoQ90zcqtrl3FS9nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.836","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17610778},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a4ce44cc224b63700115b072e3c8711e08a9ea46","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.836_1786135363862_0.22690880621419796","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260807.837":{"name":"relay-ide","version":"0.1.1-nightly.20260807.837","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260807.837","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1b275fb07f82a92ea884694a9542938535378612","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260807.837.tgz","fileCount":600,"integrity":"sha512-QJL+XrdmHpbwRGJQlRtRCPDszIBjatWP/2JjrWgnzuGSkanpvM5jHUTOakNzBZcC/Rixf5DRtOGtabUC/n6NbA==","signatures":[{"sig":"MEUCIHUervZMifr+y+esXTxDvAGO5/alb++PDK/rIpnSgQvEAiEA4G0cjYS3Vv2Ectg0JoMNskl1xQRjCwPHor9D8M5AYOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260807.837","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17656430},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"c91f679edc673d95f67d14c32afc172fb2c657cf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260807.837_1786141760327_0.8081038730880206","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260808.838":{"name":"relay-ide","version":"0.1.1-nightly.20260808.838","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260808.838","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"49e1954184d7a5133d2249c768cb5827d1a2bd7c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260808.838.tgz","fileCount":600,"integrity":"sha512-b5pHwY5VoJbxOz8qBVx4NMvMC8bmC0aUPH89XRCxOAqz2oc/RmAyWGhACtKDrSCvR/Lv4h98YSnWTk51iJ9iwQ==","signatures":[{"sig":"MEUCIHIkywj7IyQclPNkcaSub2Lnj0LguFyw0fneqeaJvhpsAiEAiIKie29LSUz+rltBcQOT1KPw5kNiRGGkrRVxA2U5Q/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260808.838","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17657375},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f9e79624f4bb6afd28889b66260fd03d5fdd4b62","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260808.838_1786160646411_0.04203864564048887","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260808.839":{"name":"relay-ide","version":"0.1.1-nightly.20260808.839","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260808.839","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8971b43a6eb9f2048fb031c00343361c6b108a34","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260808.839.tgz","fileCount":600,"integrity":"sha512-yGWCS6xADqDdEeqDoimby2RLu9RNnBN9A4b6JUuOzsk51iSFst+EU+fJbe8FABYnjIltxUm4tmVFu+h/QYMxow==","signatures":[{"sig":"MEUCIQDH0p0riEPDkoFAtIMd+lEGoMzUtNDxu7IflxhATTUDFQIgLtWYN5XSinrHxNoeL7L4A8TrTyqZEfCZ0WVv/its8IA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260808.839","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17676078},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"daa7b4d2ae040b471d5771d256e3af9d6010b99c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260808.839_1786161198295_0.28636629827209714","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260808.840":{"name":"relay-ide","version":"0.1.1-nightly.20260808.840","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260808.840","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8aa0ea22003966ff78646660b09cdaa72bddb2f7","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260808.840.tgz","fileCount":600,"integrity":"sha512-JPoz74z7+B5hZqnrB6/sxeWCaM9AAW4ZNBO6OrcDbhR4n+5gpUO+SnXTY+1nsrtP2lrMowF2SFndHqSU//Amkw==","signatures":[{"sig":"MEUCIQDFu8EvTmZZPgzKeIygYxPsFQyJ7oFxA75Wm7eb5wJ8bgIgeAyDJ5/Hl/2WkAlJCV3YdrIcuqNYOJfvmpSsNgSnb0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260808.840","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17681742},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"79d0bef6b2dcdc8b37f4a5a30fe8d63d484c2adb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260808.840_1786163297804_0.573831755782009","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260808.841":{"name":"relay-ide","version":"0.1.1-nightly.20260808.841","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260808.841","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a006468756933b445a131f1447184a7e344071bb","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260808.841.tgz","fileCount":600,"integrity":"sha512-34RxEPwCkGALw5O7mk/0pN+4iLkmBeRUsRNQ7FpvT4QMAMBwlAvnceF368bWlUoB8ZpAuNWSCYKPnJ9glFojoA==","signatures":[{"sig":"MEUCIC98GFPEAIYtvRleDiq91XdNAzLX6+bdTLp3sa6ZRBNEAiEA3Pv0/UFIeFMJrFRCX//No2SkNniXd2KHUuADAxqj+xg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260808.841","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17686015},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"8fd53496a8da915f03ea04a4f1583228aa3a748b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260808.841_1786167105340_0.41641802450591925","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260808.842":{"name":"relay-ide","version":"0.1.1-nightly.20260808.842","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260808.842","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4eca5adfd2a71a4818f9778fd9aa0675fd02290f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260808.842.tgz","fileCount":600,"integrity":"sha512-WyCqlBtccXcXvOyKSKOj8slbV43f4FRBPR1IsCfcr7JDGL2cWsvzVMMSk7Yt+csmfZI21JrbiFHvkfFW5vhkZA==","signatures":[{"sig":"MEUCIEUfeLcA97hodmhLIzoFHz9Qn3eJy3yGtFE4MhU+fluxAiEApAV1yKq2t2XwwmO/juK9X3kwlNZ5zBDAOhlN3jS9jew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260808.842","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17743862},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"e76f7c7aba880b127665976f287b871cb95e5a52","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260808.842_1786167708603_0.24581638933130878","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260811.843":{"name":"relay-ide","version":"0.1.1-nightly.20260811.843","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260811.843","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"dbd65fb4eae93139f8e68d561ec461886098678c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260811.843.tgz","fileCount":600,"integrity":"sha512-Sxv/pqG13EFr3fPoZ4+XyU2lmE4q1JDYoqD90L2vQAvPTSEhl3HV1xTbWLAXMwLTigmXFMYX1sZLA/R9JTUXnQ==","signatures":[{"sig":"MEUCIBCMGCc086yN4ry0plwL7dACnXN5EupKQQhEOZ6/E7vDAiEA7EwD8YDqC658i65iV/JEmx0Tn40TsEhfmWjvYyiC3Ms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260811.843","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17754705},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"7f7335e4ea02f812f26739d666b73ff899f82a4b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260811.843_1786420201908_0.4817733984603372","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260811.844":{"name":"relay-ide","version":"0.1.1-nightly.20260811.844","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260811.844","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6751deafbe277c8bd0588588b7ae82f0b379c931","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260811.844.tgz","fileCount":600,"integrity":"sha512-13d6AsWLJ/OnD6pWrpjtMTBBJNwcG/O+ItXpwChFjLoXWtNKtJMio8sj1VVMELFNbJS0KFCoNsuxwadMAFew+A==","signatures":[{"sig":"MEUCIQCoUWmNcTDgUrAKSv/VM6Zg8+MtlNF7rRPv6Yih3F5gGwIgKK5NNAPXI3wc6epp3qVq4nFg6u2YTjxJsAXNCVViIHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260811.844","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17755244},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"bae2a867f0abb00d02cffaae0c1b0dba6d950c61","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260811.844_1786422854023_0.7713369200230413","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260811.845":{"name":"relay-ide","version":"0.1.1-nightly.20260811.845","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260811.845","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6d03e682fe6aab282e8ed73141f546f869efa87d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260811.845.tgz","fileCount":600,"integrity":"sha512-GEuStJYtWrVdr3INC90I4FOeuJfnDEWZXHKGpTKe+IsUKduESq91lpXD2nDUnMKXxFtMWpBev2UbNTD/T66phA==","signatures":[{"sig":"MEYCIQDw4Rtc7cHBXxWaaXBh9a0/2L3QQLXOW7zDnqWW6bB8RwIhAI8yAEanzDTYyoqxhLVsc+2cV4i19KHzDtpmdOijRGoM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260811.845","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17769142},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"a9e20ec93a7309113bee440e9fe5cdacaa94f632","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260811.845_1786425416970_0.6158499511424158","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260811.846":{"name":"relay-ide","version":"0.1.1-nightly.20260811.846","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260811.846","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"68b6434f4c7d389f54abca3496426b39851b7c4e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260811.846.tgz","fileCount":601,"integrity":"sha512-xIM/2xXtN45EUb3jH7rPb8hEDSwNIEU9rcZfHpvRbaln6fcyAStU5Y8t98baVmMyvR70Red7wv1h8C9klRyrMw==","signatures":[{"sig":"MEYCIQDlnVYPKDho/MBcRJqvbGuhb29OVS65wydB3XUnLotueQIhAND9rvL5PUl9EPvNhVFt3YLhkBQri9aYgMJRLqV4G6dh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260811.846","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17800028},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"f07bd86218566b086ddb1fb794809581f6507a59","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260811.846_1786427890383_0.5081370483373664","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260811.847":{"name":"relay-ide","version":"0.1.1-nightly.20260811.847","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260811.847","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"48f41b78008aedbbe353de8b6956fff3d702cb13","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260811.847.tgz","fileCount":601,"integrity":"sha512-6AS/+1A5ToHqmefi4US2tKesb9Uci2d9xUeJKhVxi3aWY6ihAJdR67tjW1vNuj+gjuD7FCp/qlxhZ4KxhUJ8Ow==","signatures":[{"sig":"MEQCIC6zaGP33J0pH85XDIo5jNexPweZnwJurL3MgUDCqp0yAiAwLMTj46qJaDU5mp8o0pit3sEJzeSBD3s4qWvvvURRIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260811.847","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17831307},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"b8120fb61b26b676ef00cbb7fe8bdcd820581954","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260811.847_1786429776171_0.935043796142687","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260812.848":{"name":"relay-ide","version":"0.1.1-nightly.20260812.848","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260812.848","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c738ebea0d20fd77bb88f185eb0c9cef59cd879c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260812.848.tgz","fileCount":601,"integrity":"sha512-ftxWfmkrcvTp80K59kE0tdh0rDQKhdS6sKHKX+yqvISPalaxKY2Lpvy/SsOsh0gaCacVze5PkUora5a3O63WtA==","signatures":[{"sig":"MEYCIQDnvfGngPYs8peiPmE/vvCS+zLwi8gtvman0mbOSCgrhwIhAPXevjGIpbOz/n/JJZ88FAktNAlfaVvhwFtCXEd8+CrA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260812.848","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17842818},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"4316fb4a05add38c53de7b8a5b379839bbd3475b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260812.848_1786516351635_0.14934632842806717","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260812.849":{"name":"relay-ide","version":"0.1.1-nightly.20260812.849","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260812.849","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f37af1a6d6cd0b39a103aa6d68cce5c8d01ea007","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260812.849.tgz","fileCount":601,"integrity":"sha512-akACejIXSVh67vBoG4vQifDeLr6dskLi8m+pQXu7ILv1BsB0FsF5j1WknKdYzzcSCRt0E+1Rb8jqDF4CkhcTdQ==","signatures":[{"sig":"MEQCIAasKKvWWO/wbxVFDfCL/FO4/TGUgC3jGLGqEmfx+WBDAiA3XmgYJrWCTpYCuY3PR9UhawyF8kYoFLyCpngJP2BTyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260812.849","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17881060},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"318bd201c63a6cd655aa8039304d826681ab8b1b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260812.849_1786522582974_0.7609888930376556","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260812.850":{"name":"relay-ide","version":"0.1.1-nightly.20260812.850","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260812.850","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"209936476a28930bc0fc6625a4cbad195dad0a54","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260812.850.tgz","fileCount":601,"integrity":"sha512-SMYD4pH8kw6bQJGPibrcJHZ+hfx4BH2HKKgDaCYR2w+T29gAVXOp1db10zj0HwzzP8DiGXyntVMrCI5PV4mN4w==","signatures":[{"sig":"MEYCIQD5+AzqGXFTFWTwW6W/Kkv4Y4bsZmlN3PYLnhhTcaM5gwIhAN8e8g+RiD11lOpnJny64o/cV2a0cllkfhxRHt3LD7Al","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260812.850","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17896572},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"64ef2da9e963a8445f624738ee0c641a37770c88","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260812.850_1786526412745_0.5716618768423583","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260812.851":{"name":"relay-ide","version":"0.1.1-nightly.20260812.851","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260812.851","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0f7d5535ea672503ac70d0daf4874dd2ea77f262","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260812.851.tgz","fileCount":601,"integrity":"sha512-yinJ0deLMQBmxHTvZDz+phsVt5s9v3ETatqvf+AY13yW1zL/QTE8a9igZmM3+YrKz4qzRg/3plXASFylm/LLEw==","signatures":[{"sig":"MEQCICS8pDfO/SKGeG2WgKx1cFoyCIUuY0xkJRBGpGfCcyMlAiAKy8SV8wekgKBlSSV4Bb5jW4YXH+e3R6Z4PJk4xOpIig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260812.851","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17902219},"main":"dist/server/index.js","type":"module","engines":{"node":">=24.0.0"},"gitHead":"2aed4bdf1f5b3472dc12c59660d3d94a19f25dc6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260812.851_1786529884154_0.7128086833489395","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260812.852":{"name":"relay-ide","version":"0.1.1-nightly.20260812.852","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260812.852","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9d2f783a6667d35bfedad181b5b1a7ca74cd4577","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260812.852.tgz","fileCount":864,"integrity":"sha512-27syPeWTJAJPkI3ciP3T2wf7xmf/2kOh+zHDkts0Ki/HQsVWf7u9ss64W5kzO0n2bkbNq+LYCCDgiegpj83obA==","signatures":[{"sig":"MEQCIDBmiGsjbnX5EfJF9kZvlxOW0dJUUd7W9lH6q22Q2RNfAiBv8X5/10RBirfGUDRRuDPPs99YgvMgfuT38Vqu1QUQMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260812.852","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18944235},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"a2771e99bbdfc4700f7adbb7d203f9a1587fa8d4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.16.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260812.852_1786535959847_0.820672830501924","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260818.853":{"name":"relay-ide","version":"0.1.1-nightly.20260818.853","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260818.853","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"19f48268f45a4df5f4f819a6344f9d81d41b361a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260818.853.tgz","fileCount":866,"integrity":"sha512-NPHkZnlvESAsUplpKdxZW3+G0z7NgA3oNryhtzs6d7CdbvCkL15M1PhMtgJ4JvKJGdTFNiF4+wQEqh0s/ExcgQ==","signatures":[{"sig":"MEUCIHPTzvywYYXOAnDwDHbcCMmXxeX4U6ZzVxUSe0wQfrDbAiEAwFMiry6ojZ8VvFkF7VIwvUuEDiW/Fl2bEifTCOG/nQE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260818.853","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18974503},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"51625f5e19f55aa2a65dd98857d3e55768caa5c3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260818.853_1787032230896_0.5489912484355766","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260819.854":{"name":"relay-ide","version":"0.1.1-nightly.20260819.854","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260819.854","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e7fe788fb3932860fc9545929d55a0361126f948","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260819.854.tgz","fileCount":866,"integrity":"sha512-Fg2hzlDnsesRi/da6uarKQu/EgdvKp6BOASdAgQnZ+UHt4lnIlK3Q/XvbDnkEhUvaiTGsLWextAO9bG8eGzo0g==","signatures":[{"sig":"MEUCIQCSOxciHzFu2xDz93ZnbYwTculz5UuX9d2099EwNTANzQIgHS0J/7r3parpYhL/9d2LvQrbWy4kJ79OSgge5LgnwbE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260819.854","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18977530},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"5d3e30c3b4857847343694813cbeb0ee9a5c9ecf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260819.854_1787116466134_0.676036745000288","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260819.855":{"name":"relay-ide","version":"0.1.1-nightly.20260819.855","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260819.855","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d23112af027bf5fa01642cd342fea5960a986b0a","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260819.855.tgz","fileCount":866,"integrity":"sha512-bNBMVlj8ypvwK1hiOm9KRNHczj9/k//bmLz567CTKXSUuAGlRrqj4vXNuh6PVjYbficRj0w+6pXUNsHJjMMqbA==","signatures":[{"sig":"MEUCIQDq1zrZjE3TOZQd6b8tlJXmO6aP8E3t6yAr3IkIrDK/uQIgLHXncDx4lyg42S1yTfFzMsDm180Mb0YEwnpdtBL4MiI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260819.855","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18977530},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"49f651b3d485c18d06d107707cb014f7249f03a1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260819.855_1787118161968_0.3231540209515036","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260819.856":{"name":"relay-ide","version":"0.1.1-nightly.20260819.856","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260819.856","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3a56dfe6a68c35bad5f210f943a66c718e246ed7","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260819.856.tgz","fileCount":866,"integrity":"sha512-9lfHKcyFAm7jJJhheDjLg9k0TFgCcGuj9JaP7WAZeO4NomEugyEo6DtzxXAmLi6Zq7sn7kSCQF2cYIQLoLBsFQ==","signatures":[{"sig":"MEUCIHXUmtSfL2b/Q7VSjrBU1vi8fhwqYgP9zM3vrtbDCSedAiEAoAMUEXrJbSW8LHCNzMtbATEuD40ebhdHc+giHx/kmt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260819.856","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18995150},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"3e111d5dab20ac856e25df7d5d69187e991359d7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260819.856_1787123841138_0.6108765352702521","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260819.857":{"name":"relay-ide","version":"0.1.1-nightly.20260819.857","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260819.857","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"984fdb8feb6f6ec2bf982b663943f0d26cc13b6d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260819.857.tgz","fileCount":866,"integrity":"sha512-bigyNzdKHDTdW3PdFhPK1YDGbVEe98HIwoxvm6I3GGwz7NrHZNLn3gRzhtQ/HJ9i+LKCuxx63LG6aJw0zKiBZw==","signatures":[{"sig":"MEQCICXsP4egSCG459IfkSLjlprSu2IHcy3+Q2+UBrBKP+MMAiB1CJsj12bLRL3305nsaUaiqWGGVgRqNUmXbdrkMJg/vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260819.857","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19037419},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"4883b6987a96638397955ff7835aac89f1c79f45","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260819.857_1787147905195_0.5613744262235865","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260819.858":{"name":"relay-ide","version":"0.1.1-nightly.20260819.858","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260819.858","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c4d2f52ed61fb3216a03f8888253a1275cebcabc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260819.858.tgz","fileCount":868,"integrity":"sha512-mfRVtS6m6PSHc2QkF6V5/CSG9BcOjXkp6yRRjxq86LHynoy2yraMsK0Nimw58GvUAHSLa1TOfke077ubHztJFA==","signatures":[{"sig":"MEUCIC7/mHQ1W0VDlyWJh/Jp8sG0vNc0UFLe3kkQRqFxipn/AiEAtgjpJiD1+Z8eXTpdGLT6n4mtF6R8JDvylYvuq7EsXRU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260819.858","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19102198},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"317fcb99943630c6e2aa6827a601e233146bdeea","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260819.858_1787154528716_0.2276182484858733","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260819.859":{"name":"relay-ide","version":"0.1.1-nightly.20260819.859","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260819.859","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f94a19c97caa50b6e56be9e4935623dd5be4b9ff","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260819.859.tgz","fileCount":870,"integrity":"sha512-FuwjmiPnABsWkwIfsVIop05vRWAOCY18+Pd31suMfJ079PfY7Lsx5fAsMG3cVCrOrlGvkykUQHOyYWIfr2xjLA==","signatures":[{"sig":"MEYCIQD4UJNxIty5vxnjOvAGzxu6yKIPb4/OguoULzSpr+ofVwIhAMkg0I8N9yAOhaS+MEbMfA2yJcXpxGAyOZj1glEXzuMt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260819.859","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19141597},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"537b7ca0509617bf5c97c2e5092b475209574918","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260819.859_1787162630348_0.3526220668161464","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260819.860":{"name":"relay-ide","version":"0.1.1-nightly.20260819.860","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260819.860","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f2f18cfb800b001509007d80ace6785e080fdd43","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260819.860.tgz","fileCount":878,"integrity":"sha512-CszupUZVpsDcHmVcbWa7hjn29wU+wCIXbfJ19snzpgSmz+nDKDfW4xFvaFdkMXrdEKCotHYfUDzlHFLIuSN+vg==","signatures":[{"sig":"MEYCIQDkgOqgNKdkVImsZU7dnQuuyIxPjZ/75ytUnaUNtdVOfAIhAItlo/AoW34M6gzmmgew0zxehQin85y6q19FGKDGLQOp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260819.860","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19205311},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"3666ebe8e2dc599c369f99c059f7620e849d7df7","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260819.860_1787172266927_0.598724761594732","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260823.861":{"name":"relay-ide","version":"0.1.1-nightly.20260823.861","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260823.861","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"07e5f5918268b0b2115def211868834deb7694b0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260823.861.tgz","fileCount":882,"integrity":"sha512-FftnJLG9F6tvg2k6rnBPOt3c/mnVrfSDmxJMekXdK3/Tck/oZoJaKXp2QSyXpSi5DxRA+92ipiBP1+ceJvGGiA==","signatures":[{"sig":"MEYCIQDTzdLSy8TjHRPx2P0nBh0VBd+6T9ZXsxOUowrqfoIKmQIhANOYZICT3MUwLNdNo6pqJXZvIhZRkoDzzAfHm0/alylo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260823.861","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19257835},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"5ac9a50d6139774573d341188ef6c541a76fe612","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260823.861_1787446947865_0.8944266569591937","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260824.862":{"name":"relay-ide","version":"0.1.1-nightly.20260824.862","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260824.862","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3d318a96e8416a70c5680315c27055b6e29bed3e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260824.862.tgz","fileCount":888,"integrity":"sha512-eGw26rZZ7IGfUs3RyLeiL6sFLIZAeOM77RCTv6W5S8WCm+NiuocBp5bKuxsiKqY7qmmCsVfPio/FYeE25uPAZQ==","signatures":[{"sig":"MEUCIQCv+wbWnBeaY2+Vie6TQP7yPMBKGB3jHTr2cg9HBzqnqQIgBV8bqFNr4azhDk9GP0bm03x3AzFegsajlKJjwuAGYes=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260824.862","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19326678},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"a51c4013c6924a1a330d0a721f19668ccd6d145c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260824.862_1787577657195_0.04700149914630947","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260824.863":{"name":"relay-ide","version":"0.1.1-nightly.20260824.863","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260824.863","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1a799c87835ced023561fe0dfc73a1deb2a6684e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260824.863.tgz","fileCount":896,"integrity":"sha512-y4ADboH4U7STBQn/st+iRn5T77XkM3DPdRG49C650JGjWAwmwJStmInapCmjyI/ksXZIyjJd/P25B6ME344LOA==","signatures":[{"sig":"MEQCICcMUlhfBzFKURTXnt43K4ZGTT/aUXaSZHQl15pXrSeaAiB9MfNLw5fsCYEN5GUcGmSAT31/0ibQ/S8KhxH2sd+xWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260824.863","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19374087},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"b7b772df699fb4c9a9e04f206a6940c4f27d02bf","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260824.863_1787585756969_0.7751282607407242","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260824.864":{"name":"relay-ide","version":"0.1.1-nightly.20260824.864","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260824.864","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"09f082a6a90b72e26a4ea3aa2e30001decd4f7cf","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260824.864.tgz","fileCount":896,"integrity":"sha512-xihTY8WbPs2ouNi3+GXR4825yjnTKkmeBAzjKBYb8UFaYZ2LBhZCsls+ySvun8jBT9GN85Fh89174iRyPUtKqg==","signatures":[{"sig":"MEUCIAHWNvYXQNDPr2f5YntSeWbUW2jCeIRKWZfdjg8zphc1AiEA5PMNfeuh16ftJaf1msDS4xtAx4HiF+srhiluPGXfp2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260824.864","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19374274},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"e70ac46076d09a599ce3f9635d075d3ad6ef4617","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260824.864_1787587634430_0.8447417342854306","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260824.865":{"name":"relay-ide","version":"0.1.1-nightly.20260824.865","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260824.865","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5390e8c3016781da587056810cddc988cddfa8ec","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260824.865.tgz","fileCount":898,"integrity":"sha512-er0JeoN0e1tziKBjT+66LkvP9cn4ulEDy6s6z0jlHGjU26E2RVbQdkDtc6Hq9AJp8cSLksg+oufzsg8H610wZg==","signatures":[{"sig":"MEYCIQDdOp8Qm+EceLXSrP9tbnKigoTFQap4kaBJhHO15KBUBgIhAJE1ZOcI5jCKAgdsUiAXGjZH1xbyFe9jjbLw4KFzhCy/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260824.865","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19415575},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"56fe8ade63b3f35694deb92ea8fe19021acfc1af","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260824.865_1787593872362_0.6059252587831976","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260824.866":{"name":"relay-ide","version":"0.1.1-nightly.20260824.866","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260824.866","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"8fa48bdd7c079022e94813076ccf7b75d091ca9c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260824.866.tgz","fileCount":898,"integrity":"sha512-e7IM39261wtGOhWjlthHdC7X+iZbt2YlC/LOVNdIMXreUJN/q8DjDFImZkLZ9SHEkk5B0kfM5Gim3WZLovgtCw==","signatures":[{"sig":"MEQCIGzQrdYQh/+1QsMQYorDMUyzk8vfC9M2V4RuN03todKGAiAhYADTL/Z9UU4pgY8xHMt7oyQyBpjPxcSJ44u54sN5VA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260824.866","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19453108},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"caefad14ccbe0a42420b8047d54babd0bcf3018e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260824.866_1787594992326_0.5520687086489693","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260825.867":{"name":"relay-ide","version":"0.1.1-nightly.20260825.867","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260825.867","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e53b22deefc9b5d3494ae1ad77ce118ea2c23101","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260825.867.tgz","fileCount":902,"integrity":"sha512-1rDFQgVQSsl5w/nw4qLU1aelpkeR4uHL6HQ/OJkXzJFuGFQ1+Sj2pyVuBLJyHNWGWJp8hISsiLMw9KNRCo2CcA==","signatures":[{"sig":"MEUCIQDIwVonNFd1ls2IPM0DOpuasMb2zpBzK6aIgg5KjSu94AIgY+dqeeQFpJ3ixfS51tpM3uR/F6kg9rkk1eMm9tmavJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260825.867","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19516537},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"dde8946984b83a6d479762fde132a05909970a8f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260825.867_1787631634612_0.8135314395614","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260825.868":{"name":"relay-ide","version":"0.1.1-nightly.20260825.868","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260825.868","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"b5521d25242c459b34593777636b56b6683fac34","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260825.868.tgz","fileCount":906,"integrity":"sha512-Nz0ZB1+VTUWM5T83E8mf1tu2JzfhdGhCZK4G1KeGXu4zSZ742cWGTXIRSDWLi/wQfFa+HomLodCp21+2D2ELVg==","signatures":[{"sig":"MEYCIQC6Fj+JIfInjIzL/Alp6bEXt4/wWzboyewgwBQzJqjNpAIhAL9sTn5xOuaDzBlWt5GFqWhRpTl1UfV8s3RZxxQcvWKo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260825.868","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19565696},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"9f6c8aaab74360ef6f1aea035b9ef154bac2a3ef","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260825.868_1787631680165_0.5333278341973939","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260825.869":{"name":"relay-ide","version":"0.1.1-nightly.20260825.869","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260825.869","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c36a25c82cb001c529398c63457001cc46935f31","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260825.869.tgz","fileCount":906,"integrity":"sha512-FfXlZFcVOFRamoz2VHgOlEUp4eHLv69K4RWVQsuzV86278/aay2DFdkYnHS9z374Ghdccu2VzL9g9wv0tk+V5w==","signatures":[{"sig":"MEYCIQCx8AwZL65TMyElXwaRaGD2e76zgb/ewjpq+gi22AXdpAIhAJ98rY5AoFm+QoqrFM4YbMImxYN1AHshL4xZkUzqkKZo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260825.869","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19566633},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"8235d0be8c57e41ec3819f87340f68e4a12adcdc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260825.869_1787650570135_0.21625203623952638","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260825.870":{"name":"relay-ide","version":"0.1.1-nightly.20260825.870","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260825.870","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"caa90bb7cbbb6a0865b1963b03062b21246beb44","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260825.870.tgz","fileCount":906,"integrity":"sha512-2Eu+AynYFgZtYEwxCqXp1Gba7ucXdpfbbAmKHWQT/5TgvXTg1mjLQJjUDwqYeMAj3t2LuDklCJZpnzb8gsKQ4g==","signatures":[{"sig":"MEUCIQDTal3lmjsnT4fNxA4NsnN/WP/wjn6Qp+EScy+GF/jYtwIgcnww0FN5p+lvoYoUOkFTl1GFviV+BNzE3t/xwIMh/jo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260825.870","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19566884},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"92244678d6c9dcbdbe2c5898ed9a2f2b708624fb","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260825.870_1787668433557_0.21154482331655466","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260825.871":{"name":"relay-ide","version":"0.1.1-nightly.20260825.871","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260825.871","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"191989d3742eaabf6b5471bc04477bd7ceb11440","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260825.871.tgz","fileCount":908,"integrity":"sha512-cSE5+ahiS48iFA5truStKhcfWy9ln537BDwO6g3UQ5DVZN11Tbl/yE+VpQcW5qE6nXHtIi/xPuAtSd9B4MDlfA==","signatures":[{"sig":"MEQCIDH7rjWsc6wlw5PflEN3EZT/pXFWGY09PQpyHzSzZ9qJAiBfeDNivWXbsTc+1LUDL0YEtBBYoKZUQMgL+6EKplOlGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260825.871","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19613917},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"50bde5b8da71b49b1964364aef90575431570fe5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260825.871_1787669458007_0.3460454209219146","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260825.872":{"name":"relay-ide","version":"0.1.1-nightly.20260825.872","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260825.872","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0d504b0f04fc79b335ebbe39cbf0246065a0dbdc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260825.872.tgz","fileCount":908,"integrity":"sha512-CqPO1f0oBdgeqy35l29xptgK4L3m05g52n0UtAXw7z2GgHtmYv2prKZNMrg5o9I/6aC7Dv/nqrI0VnEOR3G+QQ==","signatures":[{"sig":"MEQCIG+3FECYrZVaTYD90OvOSW3GlzYh3pWE41Ceu539WD7vAiBZGeLDqSJg8VdZ5oHzqIpudot02eHHYGUsmLVNfjb6EA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260825.872","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19613962},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"c3f4d80a6fc93f8375a356c11f41f3a996245f82","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260825.872_1787680068613_0.2070889236347293","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260826.873":{"name":"relay-ide","version":"0.1.1-nightly.20260826.873","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260826.873","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"87c4efdbe8d7a2f1b3a52d0eb15e8fbcef79f351","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260826.873.tgz","fileCount":908,"integrity":"sha512-KuL29KZ8kOHLEi7RAXVj/JLr8L3Rv6wUDED3QfLx9XFiRxqpECHddJ4aKzI0gJ8KSfyaj1uPYFmjJJHoOcI39g==","signatures":[{"sig":"MEQCIBBzKR/MK0A+rbAy8I8ZLKLIB1vJqwdZKA+ZsICIoXvWAiBuAraY57UXnEH1AUJmwz1gBtfEivR/L82DglKFI12V6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260826.873","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19654946},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"104dcfdec8f9c98aecfde733ca74d53a0681033c","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260826.873_1787709454267_0.9451095055961427","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.874":{"name":"relay-ide","version":"0.1.1-nightly.20260830.874","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.874","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"85a7f156f81a72ffe11092831cff6c48717cea47","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.874.tgz","fileCount":908,"integrity":"sha512-kcyS8SjRQatcc422HXg1YIETlXiHuqOZi+IIi95h/9kBsGAa86mVj2/gOwYRu7/3E3n51w62eQSZ0RsxTY/S1A==","signatures":[{"sig":"MEUCIQCIeXY9Awku1cMMi4MnUfk1Wt9Plti6TRdne0TsimO2lwIgEMNWtak0dplA4HRjsktlvJh3AQoCoVkLcgL4T+dK4Gs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.874","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19656092},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"4fdd3cc04bcbbc0221049624cd3f3c75f726ebd0","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.874_1788076474793_0.411518687876673","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.875":{"name":"relay-ide","version":"0.1.1-nightly.20260830.875","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.875","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"023c32bb97b17cba4539203056bcf30c66abae49","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.875.tgz","fileCount":908,"integrity":"sha512-/OQBb1WN6pPeHcjkG9FPkiVnY+ynmjc0cNnLF/Ayb9FlEPQ4IOPy5Mg0f57BS39Khkpivlk4dbdqc8kPGnp76A==","signatures":[{"sig":"MEYCIQDjFNzDeZ4kMQ1HNMLqie1Ap9bRUjqvO1cbDIdIZe7nnQIhAPbgCoqrNm0iYxFL8SC+SSAaiRk7muKVf6qdEily0wNf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.875","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19656092},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"5cab16c76399ab87e1255527730397c1dff1a1a6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.875_1788076545736_0.48011855602836784","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.876":{"name":"relay-ide","version":"0.1.1-nightly.20260830.876","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.876","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5ba38766d1706d2598b3720aa00c1430ed5f3db9","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.876.tgz","fileCount":910,"integrity":"sha512-HXUQ9ecW1I1Ulc6ffusRvFRgyCaGon+ytYpsgTSWF9NLaIkBmTEGMERHq8rXSuljZVhdjDbGPkLg0+vjBafhgg==","signatures":[{"sig":"MEQCIBjW1A8QrSPncIppjmdDIATVbVrLUNFzzZ23ATTNB7laAiBh9nq6n4Zoh+MyhPyiuFB6d0uzPmx4ZKaQGbe3D2dfIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.876","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19691156},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"e92ec0cf5247d109f8d997f1c695d17e6f211eed","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.876_1788078463511_0.24285178234599458","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.877":{"name":"relay-ide","version":"0.1.1-nightly.20260830.877","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.877","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"effd1da9a0225151852f973da6acc7ecd601599f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.877.tgz","fileCount":914,"integrity":"sha512-jdGmsOuj50CIM15BKfUOOI2RqOmz8j9VYQBsAthkne1fRmLsrjLQ9sv69whG0JfsjG+Cu31NXPf606ufusAoBw==","signatures":[{"sig":"MEUCIAQZ++2Cd+cJGPU78GDf2jhgH90Mav2pMo4PJ8VxubRbAiEAmfMPvXfAklbxoBrpVE8OFoCe2TCeDZPIdhjQeFcPRsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.877","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19711562},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"3ae8efb1a8834b05e0e0c17099c45efc138f8684","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.877_1788079285035_0.49068283918885136","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.878":{"name":"relay-ide","version":"0.1.1-nightly.20260830.878","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.878","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"01da2e613485249e8629024b1ed2cb6e4bc71a1c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.878.tgz","fileCount":914,"integrity":"sha512-LVoxAl+bKaLcen5K7Lz2qB3INYv0nXAqM+YmttEAvwtC3P/ozF64b3vsgpy4pWy3eMGJE7e4utlYiwj3gx1Rbw==","signatures":[{"sig":"MEUCIHxFUuRXqj47lKLKO67uH7rZrIBq1Ue+khoYZxTwuLcsAiEAyPLucDnCqEL09X4pEvkqWiUngDsdLbg9bIlNpAE0lb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.878","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19725552},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"53f9c4202e846b6f0526ffd2ae062175ffca5a0b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.878_1788080238892_0.3654825809915969","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.879":{"name":"relay-ide","version":"0.1.1-nightly.20260830.879","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.879","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4a263611c298adf493f36519acc608de1ca66f91","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.879.tgz","fileCount":914,"integrity":"sha512-s9wmGIhAv611GEdZiclHYB0xmfrhyWWIglIFJb7wo4R9/e1O9zNa81rrVgppiNvsmTh5AvNYHafAMA8M0YuB+w==","signatures":[{"sig":"MEUCIQDWZmIlYArmdP6o1uO9FKZ1bTswx0RPu7grAM1CtTKzjgIgTf2YjicOuONqt6yTFB3jjr/9iVuOkxMX/Jwau52B9Wc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.879","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19726957},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"68c6b1b2219e181e2a5ddd30ac37e40361ab95fe","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.879_1788101489749_0.5322700760128991","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.880":{"name":"relay-ide","version":"0.1.1-nightly.20260830.880","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.880","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"533e91f1c2bae95be587dc96b6da07ab753e049d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.880.tgz","fileCount":914,"integrity":"sha512-45Ghf0+89v2WSgRwMRfNuC9Fr9eZGY9ApatBS4GzJUivs1TVsvwd5Sc/lHeGNTBHmTWJ/Rxgsv4iwieXpbehpQ==","signatures":[{"sig":"MEUCIAm5+u9oZuiFIyDbqHUhZRnvh9VN9Y5EACKx5D5sodYnAiEAzgG+GU8l3N9c8asKuAsXvcQsBOs2xRSH3/Gm42/pnpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.880","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19748373},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"d27b854d7cfa6b1f68072ea847c4af01ec25be64","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.880_1788118855468_0.6947725632947741","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.881":{"name":"relay-ide","version":"0.1.1-nightly.20260830.881","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.881","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"171a2fb92ad3e755b68ba051448159d670aea96b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.881.tgz","fileCount":914,"integrity":"sha512-CvhHRNapPjLVmROddJ2PGzio47kUWy+5FDxhl/juXJ7EhgYNNJe+X6XbT5mtBDxfbjfNbngm6L0U0boZpDdbxg==","signatures":[{"sig":"MEYCIQCQSqRbm8ye0fRefEy5one84g4Sw9wLLje6ub72L4evtwIhAPzgoUGy2R2h68keLAeIJlNVKs+OU6QevS5H2eXyqNMM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.881","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19748648},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"bd01acf3734086d88cf5b04c7ea953f0da5e4980","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.881_1788119050763_0.8414387754781232","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.882":{"name":"relay-ide","version":"0.1.1-nightly.20260830.882","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.882","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"767b152711f020bac125253adb3bcf905f20462e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.882.tgz","fileCount":914,"integrity":"sha512-Maq5Csmp1OOaqFDnX7QwcuWpFJ3yIQ/xHxEguV0kyphgeE3YvAjxStVGiuiBl1s7fDkcZIYkWdtNWW6uBqzeDQ==","signatures":[{"sig":"MEYCIQDujCTa+qamMwvMT4Y/Q8jEyNtv9AyC8/ajVJ0vWwHi7AIhAMl82yMSIvLfPk4Z+y7m47cNGoulKiVE2YVr9claY8mq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.882","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19748685},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"ff81a437414a5733531cab8d5d15d94a86275f57","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.882_1788119616411_0.16437853368329147","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.883":{"name":"relay-ide","version":"0.1.1-nightly.20260830.883","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.883","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"822a5fa992b46482fac8042175e4ac39e8e28145","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.883.tgz","fileCount":920,"integrity":"sha512-1oXEJ0MwYN7bQISnk10t17FGMOvU/f/ETgFLVvpMVOFSUXQnaEjKjs5lVOeDI8/nLUZFjE7OUSje3zV6KTot8w==","signatures":[{"sig":"MEUCIG4woiMnaJ4q4Ua3UdMiSUW6mTK44hYQQVQMBZjuB+azAiEA0A4Z+DisagqBdxaF4ewkNhoKhE1mCz3y7MlX+A4M/Xs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.883","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19795227},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"7b84069a1636e2609b653c060a68c998b55cb3d8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.883_1788125467156_0.185972686370929","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.884":{"name":"relay-ide","version":"0.1.1-nightly.20260830.884","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.884","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1e34f4478903f45a6a5b9ea7111f6a3c86ac0883","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.884.tgz","fileCount":920,"integrity":"sha512-UfP6yVbjffm2R75p8K2/j+DweNNT8oqT7RMYcXDZaMUyZjXmmzDUtr7Ag/rUFa6TNhdEU7Mc9HKxpxx32J1LBg==","signatures":[{"sig":"MEUCIQD+1tKgJseiLhA2LQVnbymRhEx6Zlh9J6OAPGdSrV6BeAIgXyvm5pRXV3eMZY127oH+sqBYQJfG750s9dRINsuVpZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.884","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19803552},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"758b11ba927e8594520bfe7725359effe1b948ae","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.884_1788129411907_0.9558259905239597","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.885":{"name":"relay-ide","version":"0.1.1-nightly.20260830.885","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.885","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3fc4d6e319b5eaa37ed45cc496e9db2596380d5e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.885.tgz","fileCount":920,"integrity":"sha512-KgECtfS5qfAzfQA0+GEBKT7iPWWjs1J1LWoS+2MnoTYsG+KA58rAJjyPMacWZzS61IX79/4Z2+4KZeX8C4cF+w==","signatures":[{"sig":"MEUCIF34X6NOXTCu43A11y8EVf2jm08qSE+/5w4Zil++/fekAiEAl8uOPd22KR4v74wmCzUgJoAMZu9uaG9YYT2VGmhRAFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.885","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19837632},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"5c23bde835fea9d440b13dd2c157bcb864789819","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","diff":"^7.0.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/theme-one-dark":"^6.1.2","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/diff":"^7.0.2","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.885_1788132099695_0.6606568368798911","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260830.886":{"name":"relay-ide","version":"0.1.1-nightly.20260830.886","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260830.886","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a73c1f27fb93a47395363833a8389a5f5accadb0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260830.886.tgz","fileCount":921,"integrity":"sha512-+gzYnOjhrl5V36bl8EcTrd5ty1PtkjGJFb0f43nuzMlOX7+x78Wkhl9RNgwXf3gcDI6RYombyrKugZvJeHzcjQ==","signatures":[{"sig":"MEUCIQCmcXo+ZjAWaGAIt/k2M5o2Tj6GcWPC/0TJW9K8lR1UzAIgFJOYbbF45K0sY1ddimS84bDgxyWGcYOp9g0wXMpE35A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260830.886","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19862519},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"49a194654956b9584bfae7a0e4c042d4964f8790","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260830.886_1788132927268_0.5307228101240409","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.887":{"name":"relay-ide","version":"0.1.1-nightly.20260831.887","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.887","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"51af894f8e60b4dbfaa51905abbaed3f480a65ef","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.887.tgz","fileCount":921,"integrity":"sha512-j9gfcSyQ9i8ZjBjtQSRPg9Y8Y536T3pQIj4MM+tzQOBY3zd/LrPlNiOJcBYMmuQXbmCNtIHmOQp1MFX2J2cWlA==","signatures":[{"sig":"MEUCIF46tp+588UMMRlyOVIL7XPutpwZiRs2bpSKhPxd5BnYAiEA5iKkLCDbGmAba8YcvFsfLh2x4toFySwWd6ODY6nih5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.887","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19894176},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"f5d16d3a3f32d4c4c373738c908211567c60dee5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.887_1788135040872_0.7086165389550663","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.888":{"name":"relay-ide","version":"0.1.1-nightly.20260831.888","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.888","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"69a8ff290ea8764ec7ce17cbccf7d01e6b394554","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.888.tgz","fileCount":921,"integrity":"sha512-Re3PKhslP1jFcuVsJWGSY46MXlaWHDDBJOjnJeTUZDOXwtNsz/styBD9l17lpr84xVjwMTJnFIBA3Kuzys/Mzg==","signatures":[{"sig":"MEQCIFSy39U7e17umucRz1X+Ajb0RbSaiu4luv3CahlWf81JAiB94acih04Le9h4VoKaVbm279updjYFCSr32E2or9USMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.888","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19898598},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"937f37286ee3555c6d0370f9c997e217a4456d19","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.888_1788135273493_0.05708113640044532","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.889":{"name":"relay-ide","version":"0.1.1-nightly.20260831.889","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.889","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"23a2d796cfc8faebbf5e9f371c47a0467a25f0eb","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.889.tgz","fileCount":921,"integrity":"sha512-O6mWVxs1J4PUf0if21ScDwUcRFpSIzN5bHdflV5iQ4o13vGJnCuLBqrMJ2ECnO+lwlfwK2LFlLDGes3R5yDGcg==","signatures":[{"sig":"MEQCICJz7SgKZ+EC7eHRQ0twA5H5+76QCAlp4Jt1K5QoPsGWAiAysN1NE0VfhnR/BbrxBvk6cf6d+Cv91gu5T5pHMTdosA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.889","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19892160},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"f8c99c06456edde38d75ab90ea3cf4bba6da2d3f","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.889_1788135307169_0.6581535564626051","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.890":{"name":"relay-ide","version":"0.1.1-nightly.20260831.890","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.890","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a16fb9f5e53873ae540c6bd8a48bee570c94bc8f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.890.tgz","fileCount":921,"integrity":"sha512-t8DOeWR5GkR2chs7kU0zI2CYboie5R1D4Zk8MnMClFkEwF2+GdjUP8hBzXib0e3fyHTq5kWbO/tE2KWtK7Rulg==","signatures":[{"sig":"MEUCIA+d6etJP25srVizvKsl3AJqk0D3mDWv3cYlcfoPUQvEAiEA9bj6WwVRgwLxAyV/JXqKUY5J5qGRDGyC0oI8w7sjrI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.890","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19900725},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"220f56a371272d6fc27cf535baece06f83bb5c3d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.890_1788136971372_0.8181700007081327","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.891":{"name":"relay-ide","version":"0.1.1-nightly.20260831.891","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.891","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5b9525a94af98b7fc5a937e5b6d71168f381a40d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.891.tgz","fileCount":921,"integrity":"sha512-MZzECvh+dfS0R9D7fdbUgJ+NAgHrydBDxYtkuMs1eE8xJ2ptPfrILnNWN00ajsyBkGgB0vL/NgkGl8iN1DlfhQ==","signatures":[{"sig":"MEQCIGLqCl8Lut6kFRUmUMHcd7Q3/kmLyf9VJBuTP89CHJtNAiB9BPmOXhqNxBbTG52pSRY8xmbUCO7Jn14mKWG8/WMVxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.891","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19958120},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"52a201c56bb729b25d5ee4161c8ace6c2cf29316","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.891_1788139959173_0.8690445336965154","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.892":{"name":"relay-ide","version":"0.1.1-nightly.20260831.892","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.892","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1c4abff28b6a6e89617e4ad3e53d32afcd903ad0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.892.tgz","fileCount":925,"integrity":"sha512-b7FsoK7bDa2sZXyC+JbsMEgE2QJIhoMnTw0XUxBXcGyMwhs6LWdYS9wPOoKJ6X1Pm6c9CgZE+zC6Eq5D+LvLTQ==","signatures":[{"sig":"MEUCIEQ7ZUCjooLGopjBe5vzYziNnzZDQde+jIMBOtvCIP0gAiEAlSBRuRbPuMgAeURhTLgIehsT+sJfK631/I6wMW7RDCs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.892","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20040890},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"a6d7deaed08369633ff79580aed67bc393ee5b84","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.892_1788147242218_0.7808527145686344","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.893":{"name":"relay-ide","version":"0.1.1-nightly.20260831.893","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.893","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"844392c556533355c0e7a573f84bd3ad47494929","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.893.tgz","fileCount":925,"integrity":"sha512-xN4dWGVQuDis/zeJpB/UivxamOKxSnaeiL/Yiu1MWWXIteUob3Jhdgm0hhM5t1245Ss52TEIFtBjgs+pfjehcA==","signatures":[{"sig":"MEQCIAHS7Ulfwx+6algjCpUebYfkOn5xFMX7G+yqB9nE4EU8AiAawHmUjkSMwrgyeOxhlpyDHnBCwwaXOpUKtH08HjW8uw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.893","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20040748},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"046e46fb33cff3dd9f508b1a59fca5ffdca51694","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.893_1788147568893_0.15998023770493353","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.894":{"name":"relay-ide","version":"0.1.1-nightly.20260831.894","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.894","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"6ef1f4cb0204b439e40837ebd473b6c49e590911","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.894.tgz","fileCount":925,"integrity":"sha512-tsWrUXc9lPe3cH1GJef1OwrTySul+RjegjoJxl28J2gKgOVzG/EyodzQFCYRN0JnQkgwT0nZmrgc0zaupyqpCQ==","signatures":[{"sig":"MEQCIG8OoG0lgesOeKC+VdDi5EVj9d99HZfPHAr7ddr0ww3xAiBUUcLo97tD1Dtom2fGOayCqe/QExT3XPvLXtqH4V8KQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.894","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20050677},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"27ff1b776e00fa874c6d4b8a192c5324359a3ad6","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.894_1788147687131_0.37648269260073985","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.895":{"name":"relay-ide","version":"0.1.1-nightly.20260831.895","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.895","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f3237f8bdc1235ca5030e8ef075e94186442a74d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.895.tgz","fileCount":927,"integrity":"sha512-Kaues8+gItivRy8v1VAZ8bwC6iIz64osc+RzfvmoVujEdJVz7p61C57jSCRei7fub/030DRhmpae7Pf5KO3GaQ==","signatures":[{"sig":"MEYCIQDg1Yajze6l6nAV8P35KA8u98vHq/d7Zg5yEwkItpdVnwIhALZV03Wo1SqJA+CrnQx/qi5C7SnuE1aXXJYmj1RzYNie","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.895","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20089404},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"79abd92c654f8e45a9840f28b9acaff470561852","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.895_1788147779348_0.9643906756428389","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.896":{"name":"relay-ide","version":"0.1.1-nightly.20260831.896","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.896","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e45bf33291f63e22c406c7327a0e18f6b6746eb1","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.896.tgz","fileCount":917,"integrity":"sha512-zQf2YS5hc0IIJwvrE7cTKLlJMKRzwZ5m2eaVo+O2NyCL1O9LI2O9ly3lz2b8+t41dphASJupvlxeCTXibPxkBA==","signatures":[{"sig":"MEUCIQCK7D0lV86X5zqEa8tQwtOViU4zWBvOujgpWZYwVicA0QIgHFKfv+i3EyvQFwsY59i/jI5oShb3WnmrS3T/WMB9kYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.896","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20025127},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"138d4e7f3217d26340fe706b7654d835523bb97e","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.896_1788148271805_0.47459652499595717","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.897":{"name":"relay-ide","version":"0.1.1-nightly.20260831.897","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.897","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"5df89f47c0fa78adb4250efa181793477aab9a86","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.897.tgz","fileCount":917,"integrity":"sha512-Rtv9drJGJsh462aPdU3yhVIYIM4Be7EkHbejEMsOOSgjFagLV3PrINEbKSVzDJYWFGS3J587Iilh0YH0FF7xAA==","signatures":[{"sig":"MEUCIQDD/wQmjLj4pHa0UtvagqPBTwx3Z/x7o9hTaPPSr0I0XwIgcii4HRpDcsMPtompbm6D/GJ9KBQzlRLYkzyVm0myRTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.897","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20025842},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"d37ba26e0c18e92724453b9e71c87495b9904814","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.897_1788148299195_0.8932107416297279","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.898":{"name":"relay-ide","version":"0.1.1-nightly.20260831.898","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.898","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"33874d47b2cbd8c5d9e035af23f1c1125b9d209c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.898.tgz","fileCount":917,"integrity":"sha512-VQHusBWPmYXxAy8GC+XktL8+hEjeaCbfANU8bwJFdy0Zb3mtW74u3Ab9ZAiyv9uOhlVBA4VjzZBlZwtn9puYNg==","signatures":[{"sig":"MEUCIHS3hfbPelcNC9yzhUrQzxO8cy2nTmlKx45D1FMZHvkFAiEA33qRLJEj1HtbDu2sEPkHeObUWN0MXnlqCkWxlCW9c0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.898","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20025842},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"c54431af361a18d7d57af2bc0055f7e622dffffc","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.898_1788149038694_0.3402429161405176","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.899":{"name":"relay-ide","version":"0.1.1-nightly.20260831.899","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.899","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"098abb3e6f9a2a1833ef00d6491d5c313121eb4d","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.899.tgz","fileCount":917,"integrity":"sha512-U/yY96llyRlnsgFXV8z3a8ir0Q4BJQSEcvlkfmc3RnztLmLOCCmFetfIOlhsaYJIX4SeDDKF1LvmUavR8TCEUA==","signatures":[{"sig":"MEUCIE+LJKVyHzb13mszeCt8k71ZYNAcfUFLdpm1oYwc7FMuAiEA4NrsF3h0o33Jt7blgJ7LMGCd+IwhUx8VLieIlLdlklI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.899","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20026197},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"089fb9e735b2f548f27e71d12c89e67b865cb268","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.899_1788149848925_0.40497328259687215","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.900":{"name":"relay-ide","version":"0.1.1-nightly.20260831.900","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.900","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"36b10d493de3f9548b52ab3b0ea94b85b09abe18","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.900.tgz","fileCount":922,"integrity":"sha512-KLurP8z4s7skdBpaqJ6Upa2+hmoftns2kZKvQrJlbp3O84qJFjw/9mWRH2jSglWdIGZMzd7/JNaQ4tuKAT0yRg==","signatures":[{"sig":"MEUCIBDqECFkc6WEm3QUnWRvbcGINFMNjspCO9YhMacUKC8nAiEArPlmHE5D8qkQZoLX5kPIQrOnHn9uEsTAawjxJVll9rY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.900","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20066909},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"1c596631c48a62f4e5445256e5a8d262a34f5f16","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.900_1788185325126_0.745311553229028","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260831.901":{"name":"relay-ide","version":"0.1.1-nightly.20260831.901","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260831.901","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"4724e9b001dcff79d2ab1283c7b8ae134f9c1ab8","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260831.901.tgz","fileCount":922,"integrity":"sha512-PLFX1O3QZRnvK2Q+vbMD6HUEQjzxIusa0qDpXL/OSowWCJ8XHeJIwmvSco6gyK3kvdW1V9fdiTntC/m63ebXzQ==","signatures":[{"sig":"MEQCIHdC/EZTdq+8N7+u0iQAG6+5syewweQZRFvis0xsax1nAiBaFnwDY79XmdQtd8pB0L2kwF/STljHsKvYkAnfmI5FKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260831.901","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20066909},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"174b97f3551a48544b5b78757f0aafb12bbcd81d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260831.901_1788207685801_0.25825493396143884","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.902":{"name":"relay-ide","version":"0.1.1-nightly.20260902.902","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.902","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"005b1f77ffd027dd875c5dd06880ad64ad44d021","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.902.tgz","fileCount":922,"integrity":"sha512-zbL1+WKpAKZLkzCm0KwsPDIlZcmTuRnu6PMXM2tJa7Kk+5R0XjA/ztGoD30FVJtVEwonAtt1BvgJCmgbmpBduA==","signatures":[{"sig":"MEUCIA0Zitc/l7oW4welOihnlZt5GGIzlJ2SnhYFwxb4E0zSAiEA4EU5reYvvS6UkgNI9cNi7W0xemyA7aDAThJtEZEfioM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.902","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20068773},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"25253e2be8d2fec3934ceaa512e56dffde29c6b1","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.902_1788317553156_0.8226374679970285","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.903":{"name":"relay-ide","version":"0.1.1-nightly.20260902.903","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.903","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a2d798e9d30ba2eaeaac86d4698e498e726675a0","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.903.tgz","fileCount":926,"integrity":"sha512-Y4WDCfEWuxtGt2+r3MR2yw80Ik2bEAnA6GW1oeFd9QoGPEIYRulXk7DjB9gHVwl7jR7BeSK1J9Hpl2ByyidmfQ==","signatures":[{"sig":"MEUCIAWVgmGPQX4sTTeShaWxZwuU8hT4zqonlO+X0Ncw57ZKAiEA0gP03g8qgijQ4Vd0HYppcoDQxtQ5+g67a0qvGPWGdOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.903","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20131865},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"8cc7b304d38f3be3262ed836875a6d2dbb08555b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.903_1788318937633_0.48092203471582007","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.904":{"name":"relay-ide","version":"0.1.1-nightly.20260902.904","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.904","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1f13b339afc7774ef24f3bfaf9b9ff5519e2fe00","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.904.tgz","fileCount":926,"integrity":"sha512-HjnI8rqhqacnikPFWH9csbk3wOhwGMKzHD0dmqm0+nt62JI/IiIfUyte75uyvchuy9oQ56qZTSW+3K3scH8MyA==","signatures":[{"sig":"MEYCIQDeNXfdccm1st+EtZWa0w9iM8ojvAtCqFr+4Ld83miZlwIhAICF8h0jrThMUaY43FY0u+uj4f0ULwlSE+0mh9chWjCa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.904","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20145316},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"1be249095e94f2e6ee04b16a47f8604d8b2537c5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.904_1788358371213_0.44696172328105765","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.905":{"name":"relay-ide","version":"0.1.1-nightly.20260902.905","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.905","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"e74f16747e0aca311b6d49fff30fab76ef3d27d3","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.905.tgz","fileCount":926,"integrity":"sha512-MaJWsvZuVAOywcMcQX0Wr0BmxILoklUpNWhJiLJkTBB1Yp2ZculHZN1AjKsRMnfoCtZI6HP+s+uNbTgwBFWAaA==","signatures":[{"sig":"MEUCIQC+LQQduucpAI02i2iGPiKfw1VMGljEIlpB2tylZ1oVnQIgDY+PY3/FVjJi3O/qT0K3EShzS9RTdXq0l7Mtz0vNLjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.905","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20145316},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"81c88c928c5a7c7e3733e439fd871f4361f1f2ca","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.905_1788359015885_0.26855101148725535","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.907":{"name":"relay-ide","version":"0.1.1-nightly.20260902.907","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.907","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"087addff2f5ab04acacf43f84994e2380cc89e2c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.907.tgz","fileCount":930,"integrity":"sha512-GR6s1fdrMkfbHtxK7qHRwbPXZtfgd8ZVi4u5dA7Mc1wOFGtcKhesycdp29lFYhzIieJVdqfOR5RCaHPwosxDdQ==","signatures":[{"sig":"MEUCIBGCGt484ZdeSTzSk/62QLiVM2fb8Yp928fkkx9PkZWpAiEA+KG+FnbSXhKyU6zyBCEQGZXpv95CusUF4AXqD+1hMFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.907","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20221922},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"140bebd6ad1f597aafabd9d154f66dc98f75c4fa","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.907_1788360671622_0.85809370602858","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.908":{"name":"relay-ide","version":"0.1.1-nightly.20260902.908","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.908","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a8234e15eb89b05b52ed51423f7aabeb83a7fe39","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.908.tgz","fileCount":930,"integrity":"sha512-GgYoAEIfZFOf5s1mY+YX8fBLzX8sopq7IbIoL6kdC0OTcYA6dmswHc+J2+/MjXsYztYZEEPBEWrBULsnJmJp0A==","signatures":[{"sig":"MEUCIQD6EzDbCK5+3BKqwEjYnrmU2osSfLiQ9WoXhH39tnVyTAIgQGe7y89IHHm2jc++3tDkFn9ocnIIlrhg8JmmGM1u76A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.908","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20221922},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"bf7862f36830fb03833e7f44da6c065d6a320062","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.908_1788364227166_0.4463005049418107","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.909":{"name":"relay-ide","version":"0.1.1-nightly.20260902.909","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.909","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"69f68c5577752b84c0ddadb7059d485f5909083b","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.909.tgz","fileCount":930,"integrity":"sha512-/vXodc07XOs53BpAAVHvowILuvKMulY1cxcbxPGpdw3M9oh/VfH+GiP0T2WFmK7EH285qSbFtz+oml23pxmXfw==","signatures":[{"sig":"MEUCIGj3ONFV0JLgUAkDkxYVQhuYWrObG5y7tP4nTSr9hDtMAiEAwTaUpyZMrH4q+nP0ws7uSalt1wQA8tj1qD111T+p5ak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.909","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20223753},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"4d8dc18c32d097f6b130d7ed15e62386d0b7eca4","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.909_1788364397208_0.5089443267847362","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.910":{"name":"relay-ide","version":"0.1.1-nightly.20260902.910","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.910","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a11346e83e47ebb112919f21b0b74d184d3b619c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.910.tgz","fileCount":930,"integrity":"sha512-z1xDVekGXgDuePZDmmKTctE7XrXpLTQb3o6ufQPsf0Db0QMOlVtFTo4MajncLKCjHyxLvdVI6SSP+/c6xOBp3w==","signatures":[{"sig":"MEYCIQDJxpXp6rCVSEIspZE5rLQxsxoHGMqAX5OHfFbh+42y5QIhAIYuV5YR/qeMG27nsrWyTBeVTc4KQqlEvxkZRktxgrsp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.910","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20233797},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"137b7983332ff8669bde6e6705b7e13fdea59352","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.910_1788366110635_0.18308139388683542","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.911":{"name":"relay-ide","version":"0.1.1-nightly.20260902.911","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.911","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"f27f9e07777bcd2ffef87bd0cfa2bd7a30071446","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.911.tgz","fileCount":930,"integrity":"sha512-OBVbFAavUJlDk3ZzbGfKO7vYas0fkEOMRoLzXdFLkWvOJySRs3Zz73ASsuQWYQ0nDAhAH4gOW5dyJQheSELMug==","signatures":[{"sig":"MEYCIQCCO8HslBZxl4qXSMtnLq+3PRmsfKSW93bcy7Ud1lqnuQIhAMpEzS1rva88JZ+W2XfFQZZKOxZEiEk6p5LG5/2XbKNZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.911","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20243292},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"1fbf1490b5c84efb810dfaee51fe08fca3ada7a5","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.911_1788373327429_0.1494934576396929","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.912":{"name":"relay-ide","version":"0.1.1-nightly.20260902.912","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.912","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"54c4d6070648dd2ce91b94061907a9a4c594945e","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.912.tgz","fileCount":934,"integrity":"sha512-EqSasu7sgYXolL+FGgmqtufMCUI33P840poQxqy7iDQO/e02ILjFACeJBKFLpfA2QNeMdCaQ7zHZzOghMJjq9A==","signatures":[{"sig":"MEQCIAIN1Qh32ftzoRuLopBqo93twoEl/9Ohx62TvyuWc0bMAiBbkF+OtN8Nnkg4CHeoS2u3TQfCSwQwoTHd7vkOE/NjTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.912","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20268113},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"99a15ca66b106bae79a31481a1eb22b18bcf2151","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.912_1788373362307_0.7696748282374068","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260902.913":{"name":"relay-ide","version":"0.1.1-nightly.20260902.913","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260902.913","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3a431f1add0dd72a1a61b03acbd2851c57d678fe","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260902.913.tgz","fileCount":934,"integrity":"sha512-xP3ae1ukyKeTBGR/SsI4CSbLhgHQbKJAINclKigIvZrbwnqSI/bMGy9Rs18sjILhgR3PVBY5ZwZ6kAbcKwjPIA==","signatures":[{"sig":"MEYCIQC/agq142K8EJBy7o1E9iKGf2rwvETTwfAc3kFQelAnAgIhAIuzXNy+Sk9PEo47zQf4SxrItojmicqQB1/mQrn1picu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260902.913","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20275130},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"0eb7457d47825d3da0d2f3c293abb29a2d658ef3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260902.913_1788374112036_0.3552679400807548","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260903.914":{"name":"relay-ide","version":"0.1.1-nightly.20260903.914","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260903.914","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"1dc524f94676d883b1ec67ec7ccad72f5d6b91bb","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260903.914.tgz","fileCount":938,"integrity":"sha512-kup0wABwU6efLeAHoQL0i/eqdcFZcvJcZRNjE253OfEWpxHyEiyebD8B//1w9vK6UDL2ryR86onpngB/oCxSXw==","signatures":[{"sig":"MEQCIEA+wuAFcObYLiPtJkyHAnoOLp2mhY6clM7tawMY1dY4AiBrnZnAFfbv039y5RrrTc+Kq6ILB4iG0cZMzCxvgXncsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260903.914","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20338766},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"9bca3111f9ddaa095aafaf3be27c1e8ea8e8fca8","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.17.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260903.914_1788400873165_0.2207114739677325","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260905.915":{"name":"relay-ide","version":"0.1.1-nightly.20260905.915","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260905.915","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a436bc556cb0b0ea24c07be1f6639f97976621fc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260905.915.tgz","fileCount":940,"integrity":"sha512-vh2Yy+sYlhSmPm8HAczspz1vlqIyDsGjFN/fSKYX3PFrP1MwVCrYsLa+uooolJHzOfc0KWhs+Z+x9d7qMMCMzQ==","signatures":[{"sig":"MEYCIQCFbfC7+etKjXaJoxf2BXmFZq1VonMNMVWQq2D0nOyS3QIhAN8Lj+x9A/ZCg19Ick42D1bLK6B5dL8VeIR06ygX6ePP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260905.915","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20322157},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"eb32ec8a7f67036c69a06b47f57854bd0092a944","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260905.915_1788592055467_0.3195951991015282","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260905.916":{"name":"relay-ide","version":"0.1.1-nightly.20260905.916","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260905.916","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"577d28f6d45a31abc10d3fe8e8a2ab632efb15c7","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260905.916.tgz","fileCount":948,"integrity":"sha512-G/lpvjdXOGLExKimfgiuBHxXy3kUtfpPmvvGNxbiXfuJofPX94WlC64fBDti4O/c18fZRYQEgIIherR2o/EnMw==","signatures":[{"sig":"MEQCIEEIx83+3S/Z3LMcQmIEGKSS+sOH1BeXvQ7/ZqU6sicGAiBBbHDxk8kEzlvQ+gIKOmO1bhpGitiuKagawtJi5YvnOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260905.916","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20366846},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"d57054555d650c83e7fc09937d047f1c10116457","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260905.916_1788600473096_0.6674269656455147","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260906.917":{"name":"relay-ide","version":"0.1.1-nightly.20260906.917","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260906.917","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d3b2bc24cf56006ce8123e9899ae7c4951b2bb8c","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260906.917.tgz","fileCount":948,"integrity":"sha512-8nnC97YAf7cm8saykRG5UrOkl/UeqhUtPrMgH9rBGODVPFGdx9R4D/iL6Gm/5XTREvLKZw3L6mQgqMtjEU6nFw==","signatures":[{"sig":"MEYCIQDJ88XkztQp5wVIM3EhrAUvbyvPX8gRiYX2Ly45I8TefAIhANIn7cVi0mwJfkvuQGd8QX9ewL564puW/dzaxVyTOy+F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260906.917","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20426094},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"e57fd1478f0997c448eda1d0795e146ce0e58015","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260906.917_1788680385298_0.8482217868852682","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260906.918":{"name":"relay-ide","version":"0.1.1-nightly.20260906.918","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260906.918","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"79c25384d573affc749b3d2eb5c6bfb81510773f","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260906.918.tgz","fileCount":948,"integrity":"sha512-k9VybDcfaYHO0hfSLUfjIxgM4/7BtTcMsCP4yb01JFnZ3YWn9w/7h29irmJppnKp+Fr5Fc/YNI6gHitp7H7Qkg==","signatures":[{"sig":"MEYCIQDc/WXs2VaFiWiKiyRhmY3393aG7shHGb3dHQCY6zWUIgIhAN7O8NhTNFxg/tQO2afMbb6npSyq8d1Oq85E4RdQvoJ2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260906.918","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20426124},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"403801c570bf99f57c129b0aae267b909f25e051","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260906.918_1788681742934_0.6219693010758833","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260907.919":{"name":"relay-ide","version":"0.1.1-nightly.20260907.919","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260907.919","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9c938f3c03661462c84ef5418a36afda264db5ec","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260907.919.tgz","fileCount":948,"integrity":"sha512-hs2WPjm80H4cv0y/uNieaGc5DMGxLvmMOOz9jtQJMsVbbgY12LZjP6AHBOl6jjgZa2q+jdkKRom1eeV8PGcWnw==","signatures":[{"sig":"MEUCIEfCNVVt6zoZSmvX3FBJRRBDR2udSNFbTSN4ISlEvkSqAiEAsdjIuCwG/Jo+zgot8LsTCo1s85DN4oddWrO3nu+bqgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260907.919","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20468565},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"7376f9a2fc5300726f90769c24de1b2d9c74363d","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260907.919_1788753979869_0.21804640207704118","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260907.920":{"name":"relay-ide","version":"0.1.1-nightly.20260907.920","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260907.920","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"0ca3fe1ee697a63d5a0c24daf881a27e513f0cd6","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260907.920.tgz","fileCount":948,"integrity":"sha512-iF39088TkQgAkolUdbR4SDLXY9Evf9kU0PV3yvvSKWlzVdnYAwBq2soZWW+snq4A/1vzbk7k5SdKiHe5esg4FA==","signatures":[{"sig":"MEUCIQCcWHvx72+yWJqgkr1HVOXuYRIe3bUQ41hlGyrEnLQRlQIgXHmP1GalV/1rlqYCmjqgqLpPD3BnpHNw909/mpuJF6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260907.920","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20490628},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"4065034ec2fccc5b067f7ddd953b725663f052e3","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260907.920_1788761579946_0.392486100201191","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260908.921":{"name":"relay-ide","version":"0.1.1-nightly.20260908.921","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260908.921","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"9bb7d722b5370d0b455c4380723376d32f1418cc","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260908.921.tgz","fileCount":948,"integrity":"sha512-gD4ORhaU1LNImUdq1zlSJhWX2h66RxetMoHki99TDjUkm7Wqu+zK0CqXntPV6Gyns00kXvB8y8Ni8QFP3bzFsg==","signatures":[{"sig":"MEUCIEYT5GyzNIPyk0PSnF/jYjnPzGI+6GeAIC7lLVzDzP3KAiEAyhurH/rpK3qFk+KuzqWzMyg64+NOQq7LqWvOxJLWCBQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260908.921","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20543776},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"e5d3418acd3a1c1ea4a3c19467da25b98040f770","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260908.921_1788841772720_0.6877785604576847","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260908.922":{"name":"relay-ide","version":"0.1.1-nightly.20260908.922","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260908.922","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"d8da105ef4bbd5bcd7c1dfd43d95e89015fc1847","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260908.922.tgz","fileCount":948,"integrity":"sha512-UNjLdOhfNNhDUAdu7UnXuQ2thV6E3xn3jD1QDlqU/rzhKC62Jx4NkgNNQ3CHNMTwDsJVBFKbRVABaT0Ow/3QbA==","signatures":[{"sig":"MEQCIHEijDrLhJIbG5vgnsrZT99fqqTlFCgT1I2FIIzN2mgxAiAZyqzbAFLe9dT+ep6scISTyLuxYnKUaUyz0mMmaXUxDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260908.922","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20545663},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"11dd49ea1b9354e201112f8fc98a0858023107d2","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260908.922_1788853330303_0.42073563611733866","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260908.923":{"name":"relay-ide","version":"0.1.1-nightly.20260908.923","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260908.923","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"3c499c5533f09595521c52063cf0ca51ccee2344","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260908.923.tgz","fileCount":952,"integrity":"sha512-cS9k2ZpM+nXBBPqeo2nJYs/kOeKNSTgdEh1RyCPHYK3+vfQofnc4coYwPt1IFO4UcBSJ8jATX+d1xHAmD6BTHQ==","signatures":[{"sig":"MEUCIQCDOTwZzas/SDHp1GyfyTJefDaxehR8PANf5RKjR70rUwIgP0xrrx9oXDrB7C585vP7yaCLf+cjgsfcCWZIdU3zPUM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260908.923","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20572853},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"0b756f1018672124d0ec001a9bd208d1dbfb6e12","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260908.923_1788854532528_0.43237535326865095","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260908.924":{"name":"relay-ide","version":"0.1.1-nightly.20260908.924","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260908.924","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"a6ce3b646c4a03fd59abfc314ddf7ec2a68bb134","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260908.924.tgz","fileCount":952,"integrity":"sha512-nGayDRU6/xtaKOOR0pWbQIA235Ut5qb5gX76DXotNMIyGP5Rej4dqrELo7PdkdO6cdoelYZAFDXAI0nIFDsyaA==","signatures":[{"sig":"MEQCIETo1sM+FgpbaU86HtyyNAbQlt9o8zVbQcPiI8EVqjKVAiAU343KNfn0eRns/g4HdAgURN1MuCtYkcvL1mkAOVFvfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260908.924","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20594668},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"028b3563fac6b4bac9dcb1f26daa1023c9e5918b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260908.924_1788866775641_0.72748688354989","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260908.925":{"name":"relay-ide","version":"0.1.1-nightly.20260908.925","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260908.925","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"fa8a61885a34f1bac5a7e6caa59eb3444ba1b077","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260908.925.tgz","fileCount":952,"integrity":"sha512-O95nvhDFxhgKyr9zo7DWA6uhJiwANZidKrrUNi9ZpLRybgqL+AdjgdtSUbglNu4iDvDlyeFAOBqleipsmwPqxA==","signatures":[{"sig":"MEUCIHcQytmcpqyvz+lI/igu5Q9zyoft9SVFH7CqzLWj+YfWAiEAto2Ejog4bM52EC+TYxM3JHP/jRFpzHJAKapnOR35t0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260908.925","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20603265},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"8cea418016941ce0d51b3e5a7602f91b56450c2b","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260908.925_1788872231377_0.7810775189080723","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260908.926":{"name":"relay-ide","version":"0.1.1-nightly.20260908.926","keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"author":{"name":"Donovan Yohan"},"license":"MIT","_id":"relay-ide@0.1.1-nightly.20260908.926","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"homepage":"https://github.com/donovan-yohan/relay-ide#readme","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"bin":{"relayctl":"dist/bin/relayctl.js","relay-ide":"dist/bin/relay-ide.js","relay-mcp":"dist/bin/relay-mcp.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js"},"dist":{"shasum":"c70d5ebd7f4d44ad9c9ba552dc47928b986a3cee","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260908.926.tgz","fileCount":952,"integrity":"sha512-unExu3FWA0dP6X6T7xX+zxDCZDh9dW6I6Hd7Fs6G4CUywBJSfM1axZdqUIMDubjcoQqP6LH55nV/MeKXNwqtSw==","signatures":[{"sig":"MEYCIQD+M+JbnBSb+auatb9sDHPArfd8cpqlKp1YcbopdZxzrgIhAIR4T/HhcQGylM2q5hL7xWcR2mnJA7Wez0Rp3UOTa8Nd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260908.926","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20614683},"main":"dist/server/index.js","type":"module","types":"./dist/server/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"gitHead":"3ec1a9b52b9da98a215d38e7e73f46c0d1a68306","scripts":{"dev":"npm run build:server && node dist/scripts/dev.js","lint":"eslint .","test":"vitest run","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","clean":"rm -rf dist/","start":"npm run build && node dist/server/index.js","prepare":"husky","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","critique":"node scripts/critique.mjs","deadcode":"knip","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","test:e2e":"playwright test","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","postinstall":"node scripts/postinstall.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","test:e2e:ui":"playwright test --ui","build:server":"tsc","agent-browser":"node dist/scripts/agent-browser-cli.js","build:frontend":"vite build --config frontend/vite.config.ts","prepublishOnly":"npm run build","test:e2e:debug":"playwright test --debug","typecheck:test":"tsc --noEmit -p test/tsconfig.json","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:e2e:update":"playwright test --update-snapshots","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"_npmVersion":"11.19.0","description":"Channel-first workspace for collaborating with AI coding agents from any device","directories":{},"lint-staged":{"*.{json,css,md}":["prettier --write"],"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.18.0","react":"^19.2.4","sharp":"^0.34.5","shiki":"^4.0.2","multer":"^2.0.2","undici":"^7.24.5","express":"^4.21.0","zustand":"^5.0.12","get-port":"^7.1.0","node-pty":"^1.0.0","web-push":"^3.6.7","diff2html":"^3.4.56","react-dom":"^19.2.4","playwright":"^1.58.2","remark-gfm":"^4.0.1","smee-client":"^5.0.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","lucide-react":"^1.21.0","@dnd-kit/core":"^6.3.1","cookie-parser":"^1.4.7","better-sqlite3":"^12.8.0","react-markdown":"^10.1.0","@codemirror/view":"^6.34.1","@xterm/addon-fit":"^0.11.0","@codemirror/state":"^6.5.0","@xterm/addon-webgl":"^0.19.0","@codemirror/lang-go":"^6.0.1","@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-sql":"^6.10.0","@codemirror/language":"^6.10.8","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-yaml":"^6.1.3","@tanstack/react-query":"^5.96.1","eslint-plugin-sonarjs":"^4.0.2","@xterm/addon-web-links":"^0.12.0","react-resizable-panels":"^2.1.9","@codemirror/lang-python":"^6.1.6","@tanstack/react-virtual":"^3.13.24","@codemirror/legacy-modes":"^6.5.3","@codemirror/lang-markdown":"^6.3.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@codemirror/lang-javascript":"^6.2.2","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"knip":"^6.33.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^10.1.0","vitest":"^4.1.2","globals":"^17.4.0","prettier":"^3.8.1","@types/ws":"^8.5.13","happy-dom":"^20.8.9","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","@types/multer":"^2.0.0","@types/express":"^4.17.21","@types/web-push":"^3.6.4","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.0","@types/cookie-parser":"^1.4.7","@vitejs/plugin-react":"^4.7.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-react-hooks":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/relay-ide_0.1.1-nightly.20260908.926_1788878014239_0.9153143493038431","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-nightly.20260908.927":{"name":"relay-ide","version":"0.1.1-nightly.20260908.927","description":"Channel-first workspace for collaborating with AI coding agents from any device","type":"module","main":"dist/server/index.js","exports":{".":"./dist/server/index.js","./channel-client":{"types":"./dist/shared/channel-client.d.ts","import":"./dist/shared/channel-client.js"}},"bin":{"relay-ide":"dist/bin/relay-ide.js","relay-ide-browser":"dist/scripts/agent-browser-cli.js","relay-mcp":"dist/bin/relay-mcp.js","relayctl":"dist/bin/relayctl.js"},"scripts":{"clean":"rm -rf dist/","lint":"eslint .","typecheck:test":"tsc --noEmit -p test/tsconfig.json","check":"tsc --noEmit && tsc --noEmit -p frontend/tsconfig.json && npm run typecheck:test && npm run lint","build":"npm run clean && tsc && chmod +x dist/bin/relay-ide.js dist/bin/relay-mcp.js dist/bin/relayctl.js dist/scripts/agent-browser-cli.js && vite build --config frontend/vite.config.ts","build:server":"tsc","build:frontend":"vite build --config frontend/vite.config.ts","dev":"npm run build:server && node dist/scripts/dev.js","dev:self":"npm run build:server && node dist/bin/relay-ide.js dev --self-host","dev:backend":"npm run build:server && RELAY_IDE_CONFIG=\"$(node dist/scripts/dev-backend-config-path.js)\" RELAY_IDE_DEV_INSTANCE=1 RELAY_IDE_HOST=${RELAY_IDE_DEV_BACKEND_HOST:-127.0.0.1} RELAY_IDE_PORT=${RELAY_IDE_DEV_BACKEND_PORT:-3457} node dist/server/index.js","dev:vite":"vite --config frontend/vite.config.ts --host ${RELAY_IDE_DEV_FRONTEND_HOST:-127.0.0.1} --port ${RELAY_IDE_DEV_FRONTEND_PORT:-5173}","dev:node":"npm run build:server && node dist/bin/relay-ide.js node link","start":"npm run build && node dist/server/index.js","sandbox":"npm run build && node dist/scripts/sandbox-cli.js","sandbox:dev":"node dist/scripts/sandbox-cli.js","agent-browser":"node dist/scripts/agent-browser-cli.js","test":"vitest run","deadcode":"knip","critique":"node scripts/critique.mjs","smoke:agent-rpc":"npm run build:server && node dist/scripts/agent-rpc-smoke.js","test:smoke:multi-node":"vitest run test/hub-cross-node-pty.test.ts test/multi-node-smoke.test.ts","diagnose:channel-memory":"npm run build:server && node --expose-gc dist/scripts/channel-memory-load.js","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","test:e2e:debug":"playwright test --debug","test:e2e:update":"playwright test --update-snapshots","prepublishOnly":"npm run build","postinstall":"node scripts/postinstall.js","prepare":"husky"},"engines":{"node":">=24.0.0"},"keywords":["relay","relay-ide","agentic","ai","development","remote","channels","collaboration","chat","terminal","mobile","web","pty"],"repository":{"type":"git","url":"git+https://github.com/donovan-yohan/relay-ide.git"},"license":"MIT","author":{"name":"Donovan Yohan"},"dependencies":{"@codemirror/commands":"^6.7.1","@codemirror/lang-css":"^6.3.0","@codemirror/lang-go":"^6.0.1","@codemirror/lang-html":"^6.4.9","@codemirror/lang-javascript":"^6.2.2","@codemirror/lang-json":"^6.0.1","@codemirror/lang-markdown":"^6.3.1","@codemirror/lang-python":"^6.1.6","@codemirror/lang-rust":"^6.0.1","@codemirror/lang-sql":"^6.10.0","@codemirror/lang-yaml":"^6.1.3","@codemirror/language":"^6.10.8","@codemirror/legacy-modes":"^6.5.3","@codemirror/state":"^6.5.0","@codemirror/view":"^6.34.1","@coder/libghostty-vt-node":"^0.1.0-beta.1","@dnd-kit/core":"^6.3.1","@modelcontextprotocol/server":"^2.0.0","@tanstack/react-query":"^5.96.1","@tanstack/react-virtual":"^3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/addon-webgl":"^0.19.0","@xterm/xterm":"github:donovan-yohan/xterm.js#v6.0.0-relay.1","better-sqlite3":"^12.8.0","cookie-parser":"^1.4.7","diff2html":"^3.4.56","eslint-plugin-sonarjs":"^4.0.2","express":"^4.21.0","get-port":"^7.1.0","lucide-react":"^1.21.0","multer":"^2.0.2","node-pty":"^1.0.0","playwright":"^1.58.2","react":"^19.2.4","react-dom":"^19.2.4","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.9","remark-gfm":"^4.0.1","shiki":"^4.0.2","sharp":"^0.34.5","smee-client":"^5.0.0","undici":"^7.24.5","web-push":"^3.6.7","ws":"^8.18.0","zustand":"^5.0.12"},"lint-staged":{"*.{ts,tsx,js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"devDependencies":{"@eslint/js":"^10.0.1","@playwright/test":"^1.58.2","@types/better-sqlite3":"^7.6.13","@types/cookie-parser":"^1.4.7","@types/express":"^4.17.21","@types/multer":"^2.0.0","@types/node":"^22.0.0","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@types/web-push":"^3.6.4","@types/ws":"^8.5.13","@vitejs/plugin-react":"^4.7.0","eslint":"^10.1.0","eslint-plugin-react-hooks":"^7.1.1","globals":"^17.4.0","happy-dom":"^20.8.9","husky":"^9.1.7","knip":"^6.33.0","lint-staged":"^16.4.0","prettier":"^3.8.1","typescript":"^5.7.0","typescript-eslint":"^8.58.0","vite":"^6.4.1","vitest":"^4.1.2"},"readmeFilename":"README.md","gitHead":"b9a6f682d1dd5ac084179b79e3110bdb627e04ba","types":"./dist/server/index.d.ts","_id":"relay-ide@0.1.1-nightly.20260908.927","bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"homepage":"https://github.com/donovan-yohan/relay-ide#readme","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-SOeLGN9cflVrKy7L/OfiBXd9i3eFelKY742P5A7oEXj92YaVojN8O1XnMZMf//VscErp0ukVJu0GbgZTdxvWAA==","shasum":"f0bb07871fcd00568b20fe24d8480af19d44e867","tarball":"https://registry.npmjs.org/relay-ide/-/relay-ide-0.1.1-nightly.20260908.927.tgz","fileCount":952,"unpackedSize":20619626,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/relay-ide@0.1.1-nightly.20260908.927","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCeAe21jeCekTEz73m2vwz6zK9PDTZ5u64lhENPmIreHgIgViQS4MNYDc/Jgc57TpHT+6tBZYOJX8BYkvItZlkAnzw="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f579f08f-bce5-4285-84f6-7f5c6fee333a"}},"directories":{},"maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/relay-ide_0.1.1-nightly.20260908.927_1788881945771_0.31610121577761685"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-03T07:23:53.580Z","modified":"2026-09-08T15:39:06.300Z","0.1.0":"2026-04-03T07:23:53.814Z","0.1.0-nightly.20260403.224":"2026-04-03T16:12:06.941Z","0.1.0-nightly.20260403.225":"2026-04-03T16:19:33.621Z","0.1.0-nightly.20260403.226":"2026-04-03T17:26:13.691Z","0.1.0-nightly.20260403.227":"2026-04-03T22:46:08.142Z","0.1.0-nightly.20260403.228":"2026-04-03T22:46:12.620Z","0.1.0-nightly.20260403.229":"2026-04-03T22:50:31.626Z","0.1.0-nightly.20260403.230":"2026-04-03T22:51:17.194Z","0.1.0-nightly.20260403.231":"2026-04-03T23:03:28.885Z","0.1.0-nightly.20260404.232":"2026-04-04T01:39:13.481Z","0.1.0-nightly.20260404.233":"2026-04-04T05:16:04.240Z","0.1.0-nightly.20260404.234":"2026-04-04T06:56:31.153Z","0.1.0-nightly.20260404.235":"2026-04-04T07:46:33.714Z","0.1.0-nightly.20260404.236":"2026-04-04T07:58:10.394Z","0.1.0-nightly.20260405.237":"2026-04-05T15:54:27.409Z","0.1.0-nightly.20260405.238":"2026-04-05T16:16:27.059Z","0.1.0-nightly.20260405.239":"2026-04-05T16:27:19.084Z","0.1.0-nightly.20260405.241":"2026-04-05T16:40:09.986Z","0.1.0-nightly.20260405.242":"2026-04-05T16:43:00.282Z","0.1.0-nightly.20260405.243":"2026-04-05T16:43:49.511Z","0.1.0-nightly.20260405.244":"2026-04-05T17:16:27.942Z","0.1.0-nightly.20260405.245":"2026-04-05T19:40:52.675Z","0.1.0-nightly.20260406.249":"2026-04-06T02:24:57.288Z","0.1.0-nightly.20260406.250":"2026-04-06T02:26:15.464Z","0.1.0-nightly.20260406.251":"2026-04-06T05:02:11.221Z","0.1.0-nightly.20260406.252":"2026-04-06T05:43:22.704Z","0.1.0-nightly.20260406.253":"2026-04-06T05:54:37.979Z","0.1.0-nightly.20260406.254":"2026-04-06T05:57:26.201Z","0.1.0-nightly.20260406.255":"2026-04-06T06:16:58.617Z","0.1.0-nightly.20260406.256":"2026-04-06T06:21:54.903Z","0.1.0-nightly.20260406.257":"2026-04-06T06:44:12.907Z","0.1.0-nightly.20260406.258":"2026-04-06T06:50:55.503Z","0.1.0-nightly.20260406.259":"2026-04-06T13:16:01.880Z","0.1.0-nightly.20260406.260":"2026-04-06T13:55:57.949Z","0.1.0-nightly.20260406.261":"2026-04-06T15:16:19.917Z","0.1.0-nightly.20260406.262":"2026-04-06T16:48:45.084Z","0.1.0-nightly.20260406.263":"2026-04-06T16:49:30.611Z","0.1.0-nightly.20260406.264":"2026-04-06T17:40:25.227Z","0.1.0-nightly.20260406.265":"2026-04-06T22:15:12.324Z","0.1.0-nightly.20260406.266":"2026-04-06T22:17:16.777Z","0.1.0-nightly.20260406.267":"2026-04-06T23:08:18.388Z","0.1.0-nightly.20260406.268":"2026-04-06T23:29:01.570Z","0.1.0-nightly.20260406.269":"2026-04-06T23:49:25.826Z","0.1.0-nightly.20260407.270":"2026-04-07T00:19:46.552Z","0.1.0-nightly.20260407.271":"2026-04-07T00:22:52.184Z","0.1.0-nightly.20260407.272":"2026-04-07T00:23:15.185Z","0.1.0-nightly.20260407.273":"2026-04-07T01:12:51.856Z","0.1.0-nightly.20260407.274":"2026-04-07T01:44:22.996Z","0.1.0-nightly.20260407.275":"2026-04-07T02:19:37.334Z","0.1.0-nightly.20260407.276":"2026-04-07T04:39:53.559Z","0.1.0-nightly.20260407.277":"2026-04-07T13:59:01.213Z","0.1.0-nightly.20260408.278":"2026-04-08T21:50:37.811Z","0.1.0-nightly.20260409.279":"2026-04-09T07:04:04.119Z","0.1.0-nightly.20260409.280":"2026-04-09T14:44:26.524Z","0.1.0-nightly.20260409.281":"2026-04-09T20:03:33.955Z","0.1.0-nightly.20260409.282":"2026-04-09T20:28:58.515Z","0.1.0-nightly.20260410.283":"2026-04-10T01:47:57.458Z","0.1.0-nightly.20260410.284":"2026-04-10T03:10:03.977Z","0.1.0-nightly.20260410.285":"2026-04-10T03:46:05.605Z","0.1.0-nightly.20260412.286":"2026-04-12T06:47:22.729Z","0.1.0-nightly.20260412.287":"2026-04-12T07:56:45.038Z","0.1.0-nightly.20260415.288":"2026-04-15T21:12:23.904Z","0.1.0-nightly.20260421.289":"2026-04-21T18:18:52.135Z","0.1.0-nightly.20260421.290":"2026-04-21T19:25:47.409Z","0.1.0-nightly.20260421.291":"2026-04-21T19:26:19.163Z","0.1.0-nightly.20260423.292":"2026-04-23T04:49:53.671Z","0.1.0-nightly.20260423.293":"2026-04-23T05:26:19.283Z","0.1.0-nightly.20260423.294":"2026-04-23T06:44:52.291Z","0.1.0-nightly.20260423.297":"2026-04-23T16:34:22.917Z","0.1.0-nightly.20260423.296":"2026-04-23T16:34:25.434Z","0.1.0-nightly.20260423.299":"2026-04-23T16:34:31.051Z","0.1.0-nightly.20260423.298":"2026-04-23T16:34:37.830Z","0.1.0-nightly.20260423.303":"2026-04-23T16:34:41.824Z","0.1.0-nightly.20260423.302":"2026-04-23T16:34:44.770Z","0.1.0-nightly.20260423.300":"2026-04-23T16:34:48.164Z","0.1.0-nightly.20260423.304":"2026-04-23T16:34:52.701Z","0.1.0-nightly.20260423.305":"2026-04-23T16:35:10.408Z","0.1.0-nightly.20260423.306":"2026-04-23T16:54:14.606Z","0.1.0-nightly.20260423.307":"2026-04-23T20:13:30.097Z","0.1.0-nightly.20260423.308":"2026-04-23T21:17:00.008Z","0.1.0-nightly.20260424.309":"2026-04-24T01:42:22.876Z","0.1.0-nightly.20260424.310":"2026-04-24T01:51:05.911Z","0.1.0-nightly.20260424.312":"2026-04-24T02:13:40.104Z","0.1.0-nightly.20260424.311":"2026-04-24T02:13:40.167Z","0.1.0-nightly.20260424.313":"2026-04-24T02:13:48.101Z","0.1.0-nightly.20260424.314":"2026-04-24T02:13:50.054Z","0.1.0-nightly.20260424.316":"2026-04-24T02:17:50.894Z","0.1.0-nightly.20260424.315":"2026-04-24T02:17:54.390Z","0.1.0-nightly.20260424.317":"2026-04-24T03:07:00.553Z","0.1.0-nightly.20260424.318":"2026-04-24T03:23:55.607Z","0.1.0-nightly.20260424.319":"2026-04-24T05:00:25.861Z","0.1.0-nightly.20260424.320":"2026-04-24T05:07:07.942Z","0.1.0-nightly.20260424.321":"2026-04-24T05:16:12.160Z","0.1.0-nightly.20260424.324":"2026-04-24T18:14:57.256Z","0.1.0-nightly.20260424.325":"2026-04-24T22:14:43.541Z","0.1.0-nightly.20260424.326":"2026-04-24T22:43:08.529Z","0.1.0-nightly.20260425.328":"2026-04-25T03:02:16.712Z","0.1.0-nightly.20260429.329":"2026-04-29T13:06:17.962Z","0.1.0-nightly.20260429.331":"2026-04-29T15:29:56.964Z","0.1.0-nightly.20260429.332":"2026-04-29T21:06:27.425Z","0.1.0-nightly.20260430.334":"2026-04-30T03:33:19.496Z","0.1.0-nightly.20260504.336":"2026-05-04T07:01:25.656Z","0.1.0-nightly.20260505.337":"2026-05-05T03:18:34.324Z","0.1.0-nightly.20260505.339":"2026-05-05T05:38:15.917Z","0.1.0-nightly.20260505.340":"2026-05-05T05:42:54.732Z","0.1.0-nightly.20260505.341":"2026-05-05T19:38:11.318Z","0.1.0-nightly.20260505.342":"2026-05-05T21:25:14.611Z","0.1.0-nightly.20260506.344":"2026-05-06T00:25:30.496Z","0.1.0-nightly.20260506.345":"2026-05-06T01:11:32.480Z","0.1.0-nightly.20260507.348":"2026-05-07T03:31:05.154Z","0.1.0-nightly.20260508.349":"2026-05-08T07:24:47.734Z","0.1.0-nightly.20260508.350":"2026-05-08T07:31:18.115Z","0.1.0-nightly.20260508.351":"2026-05-08T08:37:32.964Z","0.1.0-nightly.20260508.352":"2026-05-08T09:08:58.903Z","0.1.0-nightly.20260511.354":"2026-05-11T16:06:38.739Z","0.1.0-nightly.20260511.355":"2026-05-11T17:53:43.356Z","0.1.0-nightly.20260511.356":"2026-05-11T20:32:32.386Z","0.1.0-nightly.20260511.358":"2026-05-11T22:19:14.532Z","0.1.0-nightly.20260512.359":"2026-05-12T02:39:14.396Z","0.1.0-nightly.20260512.360":"2026-05-12T04:32:48.362Z","0.1.0-nightly.20260512.362":"2026-05-12T05:57:31.324Z","0.1.0-nightly.20260512.363":"2026-05-12T07:50:53.949Z","0.1.0-nightly.20260512.364":"2026-05-12T10:13:58.226Z","0.1.0-nightly.20260512.365":"2026-05-12T10:26:03.183Z","0.1.0-nightly.20260512.366":"2026-05-12T11:08:15.740Z","0.1.0-nightly.20260512.367":"2026-05-12T12:47:29.265Z","0.1.0-nightly.20260512.369":"2026-05-12T13:45:52.515Z","0.1.0-nightly.20260512.373":"2026-05-12T17:26:52.272Z","0.1.0-nightly.20260512.374":"2026-05-12T18:28:54.519Z","0.1.0-nightly.20260512.375":"2026-05-12T19:52:28.669Z","0.1.0-nightly.20260512.376":"2026-05-12T23:40:00.326Z","0.1.0-nightly.20260512.377":"2026-05-12T23:44:00.872Z","0.1.0-nightly.20260513.378":"2026-05-13T01:01:04.552Z","0.1.0-nightly.20260513.379":"2026-05-13T01:04:01.981Z","0.1.0-nightly.20260513.380":"2026-05-13T01:04:17.435Z","0.1.0-nightly.20260513.381":"2026-05-13T01:08:42.569Z","0.1.0-nightly.20260513.383":"2026-05-13T08:28:03.213Z","0.1.0-nightly.20260513.384":"2026-05-13T15:29:55.720Z","0.1.0-nightly.20260513.385":"2026-05-13T16:13:09.005Z","0.1.0-nightly.20260514.386":"2026-05-14T02:53:28.022Z","0.1.0-nightly.20260514.387":"2026-05-14T03:27:52.644Z","0.1.0-nightly.20260514.388":"2026-05-14T03:34:52.144Z","0.1.0-nightly.20260514.389":"2026-05-14T03:34:53.444Z","0.1.0-nightly.20260514.391":"2026-05-14T03:39:22.386Z","0.1.0-nightly.20260514.390":"2026-05-14T03:39:25.226Z","0.1.0-nightly.20260514.392":"2026-05-14T03:39:41.512Z","0.1.0-nightly.20260514.393":"2026-05-14T03:39:48.300Z","0.1.0-nightly.20260514.394":"2026-05-14T03:40:01.580Z","0.1.0-nightly.20260514.395":"2026-05-14T03:56:11.980Z","0.1.0-nightly.20260514.396":"2026-05-14T03:56:34.823Z","0.1.0-nightly.20260514.397":"2026-05-14T05:44:30.459Z","0.1.0-nightly.20260514.398":"2026-05-14T05:52:16.985Z","0.1.0-nightly.20260514.399":"2026-05-14T07:04:40.734Z","0.1.0-nightly.20260514.400":"2026-05-14T07:21:59.706Z","0.1.0-nightly.20260514.401":"2026-05-14T09:28:19.252Z","0.1.0-nightly.20260514.402":"2026-05-14T13:58:07.603Z","0.1.0-nightly.20260514.403":"2026-05-14T15:22:33.006Z","0.1.0-nightly.20260514.404":"2026-05-14T16:34:26.996Z","0.1.0-nightly.20260515.405":"2026-05-15T02:37:08.451Z","0.1.0-nightly.20260515.406":"2026-05-15T04:18:32.703Z","0.1.0-nightly.20260515.407":"2026-05-15T05:58:06.164Z","0.1.0-nightly.20260515.408":"2026-05-15T06:11:34.231Z","0.1.0-nightly.20260515.409":"2026-05-15T06:45:31.201Z","0.1.0-nightly.20260515.410":"2026-05-15T22:46:05.725Z","0.1.0-nightly.20260516.411":"2026-05-16T01:36:28.591Z","0.1.0-nightly.20260516.412":"2026-05-16T02:09:31.013Z","0.1.0-nightly.20260516.413":"2026-05-16T02:47:50.522Z","0.1.0-nightly.20260516.415":"2026-05-16T03:55:00.869Z","0.1.0-nightly.20260516.416":"2026-05-16T04:57:24.179Z","0.1.0-nightly.20260516.417":"2026-05-16T05:34:47.634Z","0.1.0-nightly.20260516.418":"2026-05-16T07:29:10.707Z","0.1.0-nightly.20260516.420":"2026-05-16T09:40:22.823Z","0.1.0-nightly.20260516.421":"2026-05-16T10:31:48.104Z","0.1.0-nightly.20260516.422":"2026-05-16T10:49:44.496Z","0.1.0-nightly.20260516.423":"2026-05-16T11:51:21.831Z","0.1.0-nightly.20260516.424":"2026-05-16T13:15:15.073Z","0.1.0-nightly.20260516.425":"2026-05-16T14:05:57.091Z","0.1.0-nightly.20260516.426":"2026-05-16T15:19:30.494Z","0.1.0-nightly.20260516.427":"2026-05-16T16:27:33.457Z","0.1.0-nightly.20260516.428":"2026-05-16T17:27:46.677Z","0.1.0-nightly.20260516.429":"2026-05-16T18:33:06.274Z","0.1.0-nightly.20260516.430":"2026-05-16T18:47:01.596Z","0.1.0-nightly.20260516.431":"2026-05-16T20:02:25.886Z","0.1.0-nightly.20260516.432":"2026-05-16T20:18:38.952Z","0.1.0-nightly.20260516.433":"2026-05-16T20:51:22.333Z","0.1.0-nightly.20260516.434":"2026-05-16T21:38:05.998Z","0.1.0-nightly.20260516.435":"2026-05-16T22:31:11.927Z","0.1.0-nightly.20260516.436":"2026-05-16T23:19:31.117Z","0.1.0-nightly.20260517.437":"2026-05-17T00:37:56.400Z","0.1.0-nightly.20260517.438":"2026-05-17T01:39:15.847Z","0.1.0-nightly.20260517.439":"2026-05-17T02:04:08.101Z","0.1.0-nightly.20260517.440":"2026-05-17T03:25:05.670Z","0.1.0-nightly.20260517.441":"2026-05-17T04:05:29.091Z","0.1.0-nightly.20260517.442":"2026-05-17T04:21:35.288Z","0.1.0-nightly.20260517.443":"2026-05-17T04:48:54.569Z","0.1.0-nightly.20260517.444":"2026-05-17T05:56:25.689Z","0.1.0-nightly.20260517.445":"2026-05-17T06:54:39.080Z","0.1.0-nightly.20260517.446":"2026-05-17T07:37:28.028Z","0.1.0-nightly.20260517.447":"2026-05-17T08:01:53.225Z","0.1.0-nightly.20260517.448":"2026-05-17T08:20:03.329Z","0.1.0-nightly.20260517.449":"2026-05-17T09:18:20.101Z","0.1.0-nightly.20260517.450":"2026-05-17T11:12:39.240Z","0.1.0-nightly.20260517.451":"2026-05-17T12:06:24.658Z","0.1.0-nightly.20260517.452":"2026-05-17T12:39:10.353Z","0.1.0-nightly.20260517.453":"2026-05-17T13:09:23.550Z","0.1.0-nightly.20260517.454":"2026-05-17T13:43:59.621Z","0.1.0-nightly.20260517.455":"2026-05-17T13:56:08.335Z","0.1.0-nightly.20260517.456":"2026-05-17T21:28:23.455Z","0.1.0-nightly.20260518.457":"2026-05-18T02:41:51.502Z","0.1.0-nightly.20260518.458":"2026-05-18T04:02:16.492Z","0.1.0-nightly.20260518.459":"2026-05-18T04:18:31.823Z","0.1.0-nightly.20260518.460":"2026-05-18T05:47:41.779Z","0.1.0-nightly.20260519.461":"2026-05-19T18:18:13.974Z","0.1.0-nightly.20260519.462":"2026-05-19T18:56:08.773Z","0.1.0-nightly.20260519.463":"2026-05-19T19:03:55.922Z","0.1.0-nightly.20260519.464":"2026-05-19T19:25:11.494Z","0.1.0-nightly.20260519.465":"2026-05-19T19:32:11.969Z","0.1.0-nightly.20260519.466":"2026-05-19T19:39:03.844Z","0.1.0-nightly.20260519.467":"2026-05-19T19:45:49.412Z","0.1.0-nightly.20260519.468":"2026-05-19T19:50:57.667Z","0.1.0-nightly.20260519.469":"2026-05-19T19:58:13.580Z","0.1.0-nightly.20260519.470":"2026-05-19T20:05:19.254Z","0.1.0-nightly.20260519.471":"2026-05-19T20:14:20.393Z","0.1.0-nightly.20260519.472":"2026-05-19T20:20:41.551Z","0.1.0-nightly.20260519.473":"2026-05-19T20:31:02.958Z","0.1.0-nightly.20260519.474":"2026-05-19T21:03:44.708Z","0.1.0-nightly.20260519.475":"2026-05-19T21:33:59.952Z","0.1.0-nightly.20260519.476":"2026-05-19T22:11:48.951Z","0.1.0-nightly.20260519.477":"2026-05-19T22:18:23.094Z","0.1.0-nightly.20260519.478":"2026-05-19T22:28:47.984Z","0.1.0-nightly.20260519.479":"2026-05-19T22:37:03.814Z","0.1.0-nightly.20260519.480":"2026-05-19T23:48:23.880Z","0.1.0-nightly.20260519.481":"2026-05-19T23:55:07.491Z","0.1.0-nightly.20260520.482":"2026-05-20T00:18:47.936Z","0.1.0-nightly.20260520.483":"2026-05-20T00:31:53.232Z","0.1.0-nightly.20260520.484":"2026-05-20T00:53:30.192Z","0.1.0-nightly.20260520.485":"2026-05-20T00:58:59.374Z","0.1.0-nightly.20260520.486":"2026-05-20T01:04:45.045Z","0.1.0-nightly.20260520.487":"2026-05-20T01:18:59.636Z","0.1.0-nightly.20260520.488":"2026-05-20T01:35:17.215Z","0.1.0-nightly.20260520.489":"2026-05-20T02:05:53.474Z","0.1.0-nightly.20260520.490":"2026-05-20T02:16:40.041Z","0.1.0-nightly.20260520.491":"2026-05-20T02:21:56.767Z","0.1.0-nightly.20260520.492":"2026-05-20T02:37:12.705Z","0.1.0-nightly.20260520.493":"2026-05-20T02:42:57.063Z","0.1.0-nightly.20260520.494":"2026-05-20T03:45:42.112Z","0.1.0-nightly.20260520.495":"2026-05-20T03:52:51.856Z","0.1.0-nightly.20260520.496":"2026-05-20T03:57:41.493Z","0.1.0-nightly.20260520.497":"2026-05-20T04:10:38.358Z","0.1.0-nightly.20260520.498":"2026-05-20T04:24:34.872Z","0.1.0-nightly.20260520.499":"2026-05-20T04:31:33.330Z","0.1.0-nightly.20260520.500":"2026-05-20T15:14:24.919Z","0.1.0-nightly.20260520.501":"2026-05-20T15:35:55.692Z","0.1.0-nightly.20260520.502":"2026-05-20T16:10:32.905Z","0.1.0-nightly.20260520.503":"2026-05-20T16:17:15.676Z","0.1.0-nightly.20260520.504":"2026-05-20T16:27:00.781Z","0.1.0-nightly.20260520.505":"2026-05-20T16:42:03.298Z","0.1.0-nightly.20260520.506":"2026-05-20T20:50:44.318Z","0.1.0-nightly.20260521.507":"2026-05-21T13:49:01.566Z","0.1.0-nightly.20260521.508":"2026-05-21T14:46:16.764Z","0.1.0-nightly.20260521.509":"2026-05-21T15:49:21.670Z","0.1.0-nightly.20260522.510":"2026-05-22T00:24:46.254Z","0.1.0-nightly.20260522.511":"2026-05-22T00:52:46.921Z","0.1.0-nightly.20260522.512":"2026-05-22T01:44:50.266Z","0.1.0-nightly.20260522.513":"2026-05-22T02:58:46.322Z","0.1.0-nightly.20260522.514":"2026-05-22T03:50:57.411Z","0.1.0-nightly.20260522.515":"2026-05-22T04:53:51.013Z","0.1.0-nightly.20260522.516":"2026-05-22T05:37:06.805Z","0.1.0-nightly.20260522.517":"2026-05-22T06:19:50.330Z","0.1.0-nightly.20260525.518":"2026-05-25T21:36:35.375Z","0.1.0-nightly.20260525.519":"2026-05-25T21:41:12.752Z","0.1.0-nightly.20260525.520":"2026-05-25T21:47:51.665Z","0.1.0-nightly.20260526.521":"2026-05-26T22:16:36.239Z","0.1.0-nightly.20260527.522":"2026-05-27T06:29:12.176Z","0.1.0-nightly.20260527.523":"2026-05-27T08:57:11.724Z","0.1.0-nightly.20260527.524":"2026-05-27T09:18:28.998Z","0.1.0-nightly.20260527.525":"2026-05-27T10:10:46.008Z","0.1.0-nightly.20260527.526":"2026-05-27T10:29:30.684Z","0.1.0-nightly.20260527.527":"2026-05-27T14:15:29.455Z","0.1.0-nightly.20260527.528":"2026-05-27T14:29:36.903Z","0.1.0-nightly.20260527.529":"2026-05-27T14:35:58.862Z","0.1.0-nightly.20260527.530":"2026-05-27T15:30:23.637Z","0.1.0-nightly.20260527.531":"2026-05-27T15:50:45.886Z","0.1.0-nightly.20260527.532":"2026-05-27T15:59:12.920Z","0.1.0-nightly.20260527.533":"2026-05-27T16:19:34.133Z","0.1.0-nightly.20260527.534":"2026-05-27T16:24:07.119Z","0.1.0-nightly.20260527.535":"2026-05-27T18:14:37.172Z","0.1.0-nightly.20260527.536":"2026-05-27T18:22:23.580Z","0.1.0-nightly.20260527.538":"2026-05-27T18:26:51.060Z","0.1.0-nightly.20260527.539":"2026-05-27T18:28:31.434Z","0.1.0-nightly.20260527.540":"2026-05-27T19:07:46.138Z","0.1.0-nightly.20260527.541":"2026-05-27T19:38:54.054Z","0.1.0-nightly.20260527.542":"2026-05-27T19:39:20.900Z","0.1.0-nightly.20260527.543":"2026-05-27T20:10:29.254Z","0.1.0-nightly.20260527.545":"2026-05-27T20:34:06.147Z","0.1.0-nightly.20260527.544":"2026-05-27T20:34:20.548Z","0.1.0-nightly.20260527.546":"2026-05-27T21:01:06.148Z","0.1.0-nightly.20260527.547":"2026-05-27T21:05:22.076Z","0.1.0-nightly.20260527.548":"2026-05-27T23:09:34.594Z","0.1.0-nightly.20260528.549":"2026-05-28T01:06:47.193Z","0.1.0-nightly.20260528.550":"2026-05-28T17:38:23.629Z","0.1.0-nightly.20260528.551":"2026-05-28T19:22:30.987Z","0.1.0-nightly.20260529.552":"2026-05-29T02:06:43.324Z","0.1.0-nightly.20260529.553":"2026-05-29T02:08:16.009Z","0.1.0-nightly.20260529.554":"2026-05-29T04:22:38.979Z","0.1.0-nightly.20260529.555":"2026-05-29T05:15:08.430Z","0.1.0-nightly.20260529.556":"2026-05-29T11:51:42.897Z","0.1.0-nightly.20260529.557":"2026-05-29T13:20:13.917Z","0.1.0-nightly.20260529.558":"2026-05-29T17:26:00.917Z","0.1.0-nightly.20260529.559":"2026-05-29T18:59:20.308Z","0.1.0-nightly.20260529.560":"2026-05-29T23:19:14.039Z","0.1.0-nightly.20260529.561":"2026-05-29T23:37:33.130Z","0.1.0-nightly.20260530.562":"2026-05-30T02:39:09.152Z","0.1.0-nightly.20260530.563":"2026-05-30T03:12:07.165Z","0.1.0-nightly.20260531.564":"2026-05-31T20:38:46.084Z","0.1.0-nightly.20260531.565":"2026-05-31T23:49:21.210Z","0.1.0-nightly.20260601.566":"2026-06-01T00:21:39.702Z","0.1.0-nightly.20260601.567":"2026-06-01T00:23:30.694Z","0.1.0-nightly.20260601.568":"2026-06-01T01:50:56.819Z","0.1.0-nightly.20260601.569":"2026-06-01T03:21:45.993Z","0.1.0-nightly.20260601.570":"2026-06-01T03:56:14.300Z","0.1.0-nightly.20260601.571":"2026-06-01T14:43:31.310Z","0.1.0-nightly.20260601.572":"2026-06-01T20:33:59.553Z","0.1.0-nightly.20260602.573":"2026-06-02T13:18:16.960Z","0.1.0-nightly.20260602.574":"2026-06-02T20:15:56.868Z","0.1.0-nightly.20260603.575":"2026-06-03T01:43:14.806Z","0.1.0-nightly.20260603.576":"2026-06-03T19:29:31.659Z","0.1.0-nightly.20260606.577":"2026-06-06T18:10:47.606Z","0.1.0-nightly.20260606.578":"2026-06-06T18:34:22.881Z","0.1.0-nightly.20260606.579":"2026-06-06T19:07:18.036Z","0.1.0-nightly.20260606.580":"2026-06-06T19:40:41.528Z","0.1.0-nightly.20260608.581":"2026-06-08T02:16:24.061Z","0.1.0-nightly.20260608.582":"2026-06-08T13:51:25.531Z","0.1.0-nightly.20260608.583":"2026-06-08T13:51:32.560Z","0.1.0-nightly.20260608.584":"2026-06-08T17:37:03.480Z","0.1.0-nightly.20260608.585":"2026-06-08T17:38:27.883Z","0.1.0-nightly.20260608.586":"2026-06-08T18:34:25.579Z","0.1.0-nightly.20260608.587":"2026-06-08T21:03:28.484Z","0.1.0-nightly.20260608.588":"2026-06-08T21:04:34.755Z","0.1.0-nightly.20260609.589":"2026-06-09T05:36:58.288Z","0.1.0-nightly.20260609.590":"2026-06-09T06:43:35.626Z","0.1.0-nightly.20260609.591":"2026-06-09T22:17:03.062Z","0.1.0-nightly.20260610.592":"2026-06-10T00:41:44.797Z","0.1.0-nightly.20260610.593":"2026-06-10T08:10:55.302Z","0.1.0-nightly.20260610.594":"2026-06-10T08:31:03.488Z","0.1.0-nightly.20260610.595":"2026-06-10T15:37:21.460Z","0.1.0-nightly.20260610.596":"2026-06-10T16:32:14.031Z","0.1.0-nightly.20260610.597":"2026-06-10T16:52:28.665Z","0.1.0-nightly.20260610.598":"2026-06-10T16:52:43.530Z","0.1.0-nightly.20260610.599":"2026-06-10T17:38:09.136Z","0.1.0-nightly.20260610.600":"2026-06-10T19:07:52.632Z","0.1.0-nightly.20260610.601":"2026-06-10T19:40:09.031Z","0.1.0-nightly.20260610.602":"2026-06-10T20:12:25.997Z","0.1.0-nightly.20260610.603":"2026-06-10T20:49:26.258Z","0.1.0-nightly.20260610.604":"2026-06-10T21:17:59.806Z","0.1.0-nightly.20260612.605":"2026-06-12T05:58:45.776Z","0.1.0-nightly.20260612.606":"2026-06-12T10:28:21.013Z","0.1.0-nightly.20260612.607":"2026-06-12T14:46:02.176Z","0.1.0-nightly.20260612.608":"2026-06-12T14:57:33.226Z","0.1.0-nightly.20260612.609":"2026-06-12T15:40:27.752Z","0.1.0-nightly.20260612.610":"2026-06-12T15:58:37.754Z","0.1.0-nightly.20260612.611":"2026-06-12T16:00:17.874Z","0.1.0-nightly.20260612.612":"2026-06-12T16:10:35.250Z","0.1.0-nightly.20260612.613":"2026-06-12T16:16:25.645Z","0.1.0-nightly.20260612.614":"2026-06-12T20:24:54.241Z","0.1.0-nightly.20260612.615":"2026-06-12T20:33:08.668Z","0.1.0-nightly.20260612.616":"2026-06-12T20:36:57.248Z","0.1.0-nightly.20260612.617":"2026-06-12T23:51:26.455Z","0.1.0-nightly.20260613.618":"2026-06-13T02:42:57.850Z","0.1.0-nightly.20260613.619":"2026-06-13T06:40:56.473Z","0.1.0-nightly.20260613.620":"2026-06-13T23:44:06.049Z","0.1.0-nightly.20260614.621":"2026-06-14T08:22:31.486Z","0.1.0-nightly.20260614.622":"2026-06-14T22:38:41.311Z","0.1.0-nightly.20260615.623":"2026-06-15T01:19:16.892Z","0.1.0-nightly.20260615.624":"2026-06-15T02:28:27.176Z","0.1.0-nightly.20260615.625":"2026-06-15T04:08:15.501Z","0.1.0-nightly.20260615.626":"2026-06-15T04:27:43.331Z","0.1.0-nightly.20260615.627":"2026-06-15T04:42:38.124Z","0.1.0-nightly.20260615.628":"2026-06-15T05:05:51.285Z","0.1.0-nightly.20260615.629":"2026-06-15T07:34:46.063Z","0.1.0-nightly.20260615.630":"2026-06-15T10:22:46.475Z","0.1.0-nightly.20260616.631":"2026-06-16T05:52:44.119Z","0.1.0-nightly.20260616.632":"2026-06-16T08:42:03.005Z","0.1.0-nightly.20260616.633":"2026-06-16T21:31:16.883Z","0.1.0-nightly.20260617.634":"2026-06-17T06:03:08.924Z","0.1.0-nightly.20260618.635":"2026-06-18T02:38:08.001Z","0.1.0-nightly.20260618.636":"2026-06-18T17:35:11.088Z","0.1.0-nightly.20260618.637":"2026-06-18T18:11:46.186Z","0.1.0-nightly.20260618.638":"2026-06-18T22:41:41.624Z","0.1.0-nightly.20260619.639":"2026-06-19T20:33:58.774Z","0.1.0-nightly.20260619.640":"2026-06-19T22:54:42.765Z","0.1.0-nightly.20260620.641":"2026-06-20T01:12:35.443Z","0.1.0-nightly.20260620.642":"2026-06-20T23:50:03.178Z","0.1.0-nightly.20260621.643":"2026-06-21T00:26:59.971Z","0.1.0-nightly.20260621.644":"2026-06-21T06:08:37.478Z","0.1.0-nightly.20260621.645":"2026-06-21T06:14:14.704Z","0.1.0-nightly.20260621.646":"2026-06-21T06:30:50.163Z","0.1.0-nightly.20260622.647":"2026-06-22T06:07:28.615Z","0.1.0-nightly.20260622.648":"2026-06-22T07:03:08.698Z","0.1.0-nightly.20260622.649":"2026-06-22T08:17:40.554Z","0.1.0-nightly.20260622.650":"2026-06-22T13:52:29.961Z","0.1.0-nightly.20260622.651":"2026-06-22T15:07:50.295Z","0.1.0-nightly.20260623.652":"2026-06-23T20:59:54.000Z","0.1.0-nightly.20260626.653":"2026-06-26T06:23:32.377Z","0.1.0-nightly.20260626.654":"2026-06-26T06:38:28.741Z","0.1.0-nightly.20260626.655":"2026-06-26T18:15:16.356Z","0.1.0-nightly.20260627.656":"2026-06-27T04:49:09.422Z","0.1.0-nightly.20260627.657":"2026-06-27T04:54:28.177Z","0.1.0-nightly.20260627.658":"2026-06-27T06:36:59.975Z","0.1.0-nightly.20260627.659":"2026-06-27T15:26:11.395Z","0.1.0-nightly.20260627.660":"2026-06-27T15:39:25.954Z","0.1.0-nightly.20260627.661":"2026-06-27T15:53:24.670Z","0.1.0-nightly.20260627.662":"2026-06-27T15:57:50.909Z","0.1.0-nightly.20260627.663":"2026-06-27T16:25:57.343Z","0.1.0-nightly.20260627.664":"2026-06-27T16:34:40.686Z","0.1.0-nightly.20260627.665":"2026-06-27T16:51:54.941Z","0.1.0-nightly.20260627.666":"2026-06-27T21:35:03.585Z","0.1.0-nightly.20260628.667":"2026-06-28T01:26:12.278Z","0.1.0-nightly.20260628.668":"2026-06-28T07:58:01.037Z","0.1.0-nightly.20260628.669":"2026-06-28T16:39:28.274Z","0.1.0-nightly.20260628.670":"2026-06-28T16:49:45.422Z","0.1.0-nightly.20260628.671":"2026-06-28T17:09:08.110Z","0.1.0-nightly.20260628.672":"2026-06-28T17:21:02.250Z","0.1.0-nightly.20260628.673":"2026-06-28T17:32:53.003Z","0.1.0-nightly.20260628.674":"2026-06-28T21:58:41.362Z","0.1.0-nightly.20260701.675":"2026-07-01T07:11:44.065Z","0.1.0-nightly.20260701.676":"2026-07-01T07:11:57.611Z","0.1.0-nightly.20260701.677":"2026-07-01T07:30:05.553Z","0.1.0-nightly.20260701.678":"2026-07-01T07:48:15.875Z","0.1.0-nightly.20260701.679":"2026-07-01T08:02:27.941Z","0.1.0-nightly.20260701.680":"2026-07-01T09:06:11.315Z","0.1.0-nightly.20260701.681":"2026-07-01T09:28:24.143Z","0.1.0-nightly.20260701.682":"2026-07-01T09:46:35.861Z","0.1.0-nightly.20260701.683":"2026-07-01T09:57:14.667Z","0.1.0-nightly.20260701.684":"2026-07-01T16:34:07.443Z","0.1.0-nightly.20260701.686":"2026-07-01T16:51:49.072Z","0.1.0-nightly.20260701.687":"2026-07-01T17:19:09.859Z","0.1.0-nightly.20260701.688":"2026-07-01T17:19:39.345Z","0.1.0-nightly.20260701.689":"2026-07-01T17:31:21.627Z","0.1.0-nightly.20260701.690":"2026-07-01T17:43:22.824Z","0.1.0-nightly.20260701.691":"2026-07-01T17:53:18.315Z","0.1.0-nightly.20260701.692":"2026-07-01T18:40:33.269Z","0.1.0-nightly.20260701.693":"2026-07-01T19:15:06.087Z","0.1.0-nightly.20260701.694":"2026-07-01T19:41:53.000Z","0.1.0-nightly.20260701.695":"2026-07-01T19:58:04.475Z","0.1.0-nightly.20260701.696":"2026-07-01T21:46:27.589Z","0.1.0-nightly.20260701.697":"2026-07-01T23:19:12.006Z","0.1.0-nightly.20260701.700":"2026-07-01T23:19:21.792Z","0.1.0-nightly.20260701.699":"2026-07-01T23:19:22.790Z","0.1.0-nightly.20260701.698":"2026-07-01T23:19:47.255Z","0.1.0-nightly.20260702.704":"2026-07-02T00:10:54.439Z","0.1.0-nightly.20260702.701":"2026-07-02T00:10:57.625Z","0.1.0-nightly.20260702.703":"2026-07-02T00:11:03.970Z","0.1.0-nightly.20260702.705":"2026-07-02T00:15:22.232Z","0.1.0-nightly.20260702.706":"2026-07-02T06:07:07.084Z","0.1.0-nightly.20260702.707":"2026-07-02T14:10:27.708Z","0.1.0-nightly.20260702.708":"2026-07-02T15:47:32.257Z","0.1.0-nightly.20260702.709":"2026-07-02T17:43:37.210Z","0.1.0-nightly.20260703.710":"2026-07-03T00:19:33.795Z","0.1.0-nightly.20260703.711":"2026-07-03T01:49:25.122Z","0.1.0-nightly.20260703.712":"2026-07-03T14:16:35.612Z","0.1.0-nightly.20260704.713":"2026-07-04T07:38:36.890Z","0.1.0-nightly.20260704.714":"2026-07-04T22:56:54.798Z","0.1.0-nightly.20260705.715":"2026-07-05T06:45:04.449Z","0.1.0-nightly.20260705.716":"2026-07-05T07:12:13.320Z","0.1.0-nightly.20260705.717":"2026-07-05T07:39:17.824Z","0.1.0-nightly.20260707.718":"2026-07-07T20:52:32.288Z","0.1.0-nightly.20260707.719":"2026-07-07T21:26:44.508Z","0.1.0-nightly.20260707.720":"2026-07-07T21:55:15.292Z","0.1.0-nightly.20260709.721":"2026-07-09T18:12:03.004Z","0.1.0-nightly.20260710.722":"2026-07-10T19:54:21.955Z","0.1.0-nightly.20260717.723":"2026-07-17T23:07:21.756Z","0.1.0-nightly.20260718.724":"2026-07-18T00:09:05.975Z","0.1.0-nightly.20260718.725":"2026-07-18T01:47:21.067Z","0.1.0-nightly.20260718.726":"2026-07-18T03:07:10.799Z","0.1.0-nightly.20260718.727":"2026-07-18T04:16:55.187Z","0.1.0-nightly.20260718.728":"2026-07-18T06:10:30.890Z","0.1.0-nightly.20260718.729":"2026-07-18T06:53:22.332Z","0.1.0-nightly.20260718.730":"2026-07-18T07:55:34.649Z","0.1.0-nightly.20260718.731":"2026-07-18T19:34:05.641Z","0.1.0-nightly.20260718.732":"2026-07-18T20:16:13.493Z","0.1.0-nightly.20260718.733":"2026-07-18T22:53:41.824Z","0.1.0-nightly.20260719.734":"2026-07-19T01:11:17.674Z","0.1.0-nightly.20260719.735":"2026-07-19T02:39:33.794Z","0.1.0-nightly.20260719.736":"2026-07-19T04:43:53.792Z","0.1.0-nightly.20260719.737":"2026-07-19T05:53:29.906Z","0.1.0-nightly.20260719.738":"2026-07-19T07:41:44.273Z","0.1.0-nightly.20260719.740":"2026-07-19T15:46:27.366Z","0.1.0-nightly.20260719.741":"2026-07-19T20:16:38.712Z","0.1.0-nightly.20260719.742":"2026-07-19T20:32:55.964Z","0.1.0-nightly.20260722.743":"2026-07-22T12:27:30.745Z","0.1.0-nightly.20260722.744":"2026-07-22T15:25:58.262Z","0.1.0-nightly.20260722.745":"2026-07-22T16:14:22.573Z","0.1.0-nightly.20260722.747":"2026-07-22T18:05:18.120Z","0.1.0-nightly.20260722.748":"2026-07-22T19:03:54.394Z","0.1.0-nightly.20260722.749":"2026-07-22T19:41:35.951Z","0.1.0-nightly.20260722.750":"2026-07-22T21:22:39.670Z","0.1.0-nightly.20260723.751":"2026-07-23T01:14:33.620Z","0.1.0-nightly.20260723.752":"2026-07-23T03:46:54.912Z","0.1.0-nightly.20260723.753":"2026-07-23T04:58:44.248Z","0.1.0-nightly.20260723.754":"2026-07-23T06:11:14.501Z","0.1.0-nightly.20260723.755":"2026-07-23T07:28:45.390Z","0.1.0-nightly.20260723.756":"2026-07-23T08:07:32.454Z","0.1.0-nightly.20260723.757":"2026-07-23T08:48:18.768Z","0.1.0-nightly.20260723.758":"2026-07-23T08:51:40.341Z","0.1.0-nightly.20260723.759":"2026-07-23T10:11:57.765Z","0.1.0-nightly.20260724.760":"2026-07-24T01:03:14.671Z","0.1.0-nightly.20260724.761":"2026-07-24T01:30:45.562Z","0.1.0-nightly.20260724.762":"2026-07-24T02:02:07.932Z","0.1.0-nightly.20260725.763":"2026-07-25T05:29:31.780Z","0.1.0-nightly.20260725.764":"2026-07-25T07:14:43.001Z","0.1.0-nightly.20260725.765":"2026-07-25T13:20:54.280Z","0.1.0-nightly.20260725.766":"2026-07-25T13:58:51.802Z","0.1.0-nightly.20260725.767":"2026-07-25T14:17:51.563Z","0.1.0-nightly.20260725.768":"2026-07-25T16:15:10.128Z","0.1.0-nightly.20260725.769":"2026-07-25T17:57:03.612Z","0.1.0-nightly.20260725.770":"2026-07-25T20:28:55.107Z","0.1.0-nightly.20260725.771":"2026-07-25T21:05:25.091Z","0.1.0-nightly.20260725.773":"2026-07-25T22:12:03.536Z","0.1.0-nightly.20260725.772":"2026-07-25T22:16:49.954Z","0.1.0-nightly.20260727.774":"2026-07-27T02:06:58.247Z","0.1.0-nightly.20260729.775":"2026-07-29T19:02:24.877Z","0.1.0-nightly.20260729.777":"2026-07-29T22:26:45.621Z","0.1.0-nightly.20260729.776":"2026-07-29T22:26:48.679Z","0.1.0-nightly.20260729.778":"2026-07-29T22:27:11.081Z","0.1.0-nightly.20260729.779":"2026-07-29T22:27:15.710Z","0.1.0-nightly.20260729.780":"2026-07-29T22:38:16.354Z","0.1.0-nightly.20260801.781":"2026-08-01T00:31:20.741Z","0.1.0-nightly.20260801.782":"2026-08-01T02:13:21.290Z","0.1.0-nightly.20260801.783":"2026-08-01T03:39:06.450Z","0.1.0-nightly.20260801.784":"2026-08-01T06:00:49.588Z","0.1.0-nightly.20260801.785":"2026-08-01T06:34:29.309Z","0.1.0-nightly.20260801.786":"2026-08-01T16:50:13.403Z","0.1.0-nightly.20260801.787":"2026-08-01T17:27:14.576Z","0.1.0-nightly.20260801.788":"2026-08-01T20:24:55.990Z","0.1.0-nightly.20260803.789":"2026-08-03T03:44:43.824Z","0.1.0-nightly.20260803.790":"2026-08-03T10:17:40.496Z","0.1.0-nightly.20260803.791":"2026-08-03T12:22:03.479Z","0.1.0-nightly.20260803.792":"2026-08-03T13:35:28.249Z","0.1.0-nightly.20260803.793":"2026-08-03T15:45:13.366Z","0.1.0-nightly.20260803.794":"2026-08-03T17:32:56.149Z","0.1.0-nightly.20260804.795":"2026-08-04T03:05:10.823Z","0.2.0-rc.1-nightly.20260804.796":"2026-08-04T03:16:17.316Z","0.2.0-rc.1":"2026-08-04T03:23:20.938Z","0.2.0-rc.1-nightly.20260804.798":"2026-08-04T03:27:53.734Z","0.1.1-rc.1-nightly.20260804.799":"2026-08-04T18:32:04.633Z","0.1.1-rc.1":"2026-08-04T18:40:44.131Z","0.1.1-rc.1-nightly.20260804.801":"2026-08-04T18:44:51.246Z","0.1.1-rc.1-nightly.20260805.802":"2026-08-05T04:19:41.618Z","0.1.1-rc.1-nightly.20260805.803":"2026-08-05T04:34:23.219Z","0.1.1-rc.1-nightly.20260805.804":"2026-08-05T04:34:55.491Z","0.1.1-rc.1-nightly.20260805.805":"2026-08-05T04:44:19.063Z","0.1.1-rc.1-nightly.20260805.806":"2026-08-05T04:52:35.791Z","0.1.1-rc.1-nightly.20260805.807":"2026-08-05T04:59:20.640Z","0.1.1-rc.1-nightly.20260805.808":"2026-08-05T05:09:34.377Z","0.1.1-rc.1-nightly.20260805.809":"2026-08-05T05:21:05.374Z","0.1.1-rc.2-nightly.20260805.810":"2026-08-05T05:26:13.742Z","0.1.1-rc.2":"2026-08-05T05:31:27.722Z","0.1.1-rc.2-nightly.20260805.812":"2026-08-05T05:35:45.825Z","0.1.1-rc.2-nightly.20260805.813":"2026-08-05T16:20:48.861Z","0.1.1-nightly.20260805.814":"2026-08-05T16:24:15.794Z","0.1.1-nightly.20260806.815":"2026-08-06T00:14:40.353Z","0.1.1-nightly.20260806.816":"2026-08-06T02:53:19.864Z","0.1.1-nightly.20260806.817":"2026-08-06T03:16:28.090Z","0.1.1-nightly.20260806.818":"2026-08-06T04:15:19.061Z","0.1.1-nightly.20260806.819":"2026-08-06T04:57:53.146Z","0.1.1-nightly.20260806.820":"2026-08-06T12:21:17.915Z","0.1.1-nightly.20260806.821":"2026-08-06T13:32:12.235Z","0.1.1-nightly.20260806.823":"2026-08-06T18:49:27.622Z","0.1.1-nightly.20260806.824":"2026-08-06T19:06:10.265Z","0.1.1-nightly.20260807.825":"2026-08-07T02:10:46.089Z","0.1.1-nightly.20260807.826":"2026-08-07T05:41:01.254Z","0.1.1-nightly.20260807.827":"2026-08-07T06:17:42.966Z","0.1.1-nightly.20260807.828":"2026-08-07T06:20:23.286Z","0.1.1-nightly.20260807.829":"2026-08-07T06:31:47.987Z","0.1.1-nightly.20260807.830":"2026-08-07T06:43:41.493Z","0.1.1-nightly.20260807.831":"2026-08-07T06:53:27.153Z","0.1.1-nightly.20260807.832":"2026-08-07T07:11:15.260Z","0.1.1-nightly.20260807.833":"2026-08-07T18:20:51.477Z","0.1.1-nightly.20260807.834":"2026-08-07T18:53:21.031Z","0.1.1-nightly.20260807.835":"2026-08-07T19:33:44.950Z","0.1.1-nightly.20260807.836":"2026-08-07T20:42:44.121Z","0.1.1-nightly.20260807.837":"2026-08-07T22:29:20.570Z","0.1.1-nightly.20260808.838":"2026-08-08T03:44:06.640Z","0.1.1-nightly.20260808.839":"2026-08-08T03:53:18.607Z","0.1.1-nightly.20260808.840":"2026-08-08T04:28:18.054Z","0.1.1-nightly.20260808.841":"2026-08-08T05:31:45.596Z","0.1.1-nightly.20260808.842":"2026-08-08T05:41:48.931Z","0.1.1-nightly.20260811.843":"2026-08-11T03:50:02.251Z","0.1.1-nightly.20260811.844":"2026-08-11T04:34:14.300Z","0.1.1-nightly.20260811.845":"2026-08-11T05:16:57.231Z","0.1.1-nightly.20260811.846":"2026-08-11T05:58:10.629Z","0.1.1-nightly.20260811.847":"2026-08-11T06:29:36.404Z","0.1.1-nightly.20260812.848":"2026-08-12T06:32:31.895Z","0.1.1-nightly.20260812.849":"2026-08-12T08:16:23.292Z","0.1.1-nightly.20260812.850":"2026-08-12T09:20:13.013Z","0.1.1-nightly.20260812.851":"2026-08-12T10:18:04.621Z","0.1.1-nightly.20260812.852":"2026-08-12T11:59:20.117Z","0.1.1-nightly.20260818.853":"2026-08-18T05:50:31.175Z","0.1.1-nightly.20260819.854":"2026-08-19T05:14:26.464Z","0.1.1-nightly.20260819.855":"2026-08-19T05:42:42.229Z","0.1.1-nightly.20260819.856":"2026-08-19T07:17:21.393Z","0.1.1-nightly.20260819.857":"2026-08-19T13:58:25.500Z","0.1.1-nightly.20260819.858":"2026-08-19T15:48:48.949Z","0.1.1-nightly.20260819.859":"2026-08-19T18:03:50.597Z","0.1.1-nightly.20260819.860":"2026-08-19T20:44:27.190Z","0.1.1-nightly.20260823.861":"2026-08-23T01:02:28.150Z","0.1.1-nightly.20260824.862":"2026-08-24T13:20:57.455Z","0.1.1-nightly.20260824.863":"2026-08-24T15:35:57.507Z","0.1.1-nightly.20260824.864":"2026-08-24T16:07:14.737Z","0.1.1-nightly.20260824.865":"2026-08-24T17:51:12.651Z","0.1.1-nightly.20260824.866":"2026-08-24T18:09:52.578Z","0.1.1-nightly.20260825.867":"2026-08-25T04:20:34.884Z","0.1.1-nightly.20260825.868":"2026-08-25T04:21:20.455Z","0.1.1-nightly.20260825.869":"2026-08-25T09:36:10.386Z","0.1.1-nightly.20260825.870":"2026-08-25T14:33:53.841Z","0.1.1-nightly.20260825.871":"2026-08-25T14:50:58.263Z","0.1.1-nightly.20260825.872":"2026-08-25T17:47:48.830Z","0.1.1-nightly.20260826.873":"2026-08-26T01:57:34.540Z","0.1.1-nightly.20260830.874":"2026-08-30T07:54:35.024Z","0.1.1-nightly.20260830.875":"2026-08-30T07:55:45.946Z","0.1.1-nightly.20260830.876":"2026-08-30T08:27:43.730Z","0.1.1-nightly.20260830.877":"2026-08-30T08:41:25.281Z","0.1.1-nightly.20260830.878":"2026-08-30T08:57:19.105Z","0.1.1-nightly.20260830.879":"2026-08-30T14:51:29.993Z","0.1.1-nightly.20260830.880":"2026-08-30T19:40:55.689Z","0.1.1-nightly.20260830.881":"2026-08-30T19:44:10.989Z","0.1.1-nightly.20260830.882":"2026-08-30T19:53:36.640Z","0.1.1-nightly.20260830.883":"2026-08-30T21:31:07.347Z","0.1.1-nightly.20260830.884":"2026-08-30T22:36:52.131Z","0.1.1-nightly.20260830.885":"2026-08-30T23:21:39.899Z","0.1.1-nightly.20260830.886":"2026-08-30T23:35:27.475Z","0.1.1-nightly.20260831.887":"2026-08-31T00:10:41.111Z","0.1.1-nightly.20260831.888":"2026-08-31T00:14:33.721Z","0.1.1-nightly.20260831.889":"2026-08-31T00:15:07.439Z","0.1.1-nightly.20260831.890":"2026-08-31T00:42:51.589Z","0.1.1-nightly.20260831.891":"2026-08-31T01:32:39.372Z","0.1.1-nightly.20260831.892":"2026-08-31T03:34:02.478Z","0.1.1-nightly.20260831.893":"2026-08-31T03:39:29.160Z","0.1.1-nightly.20260831.894":"2026-08-31T03:41:27.362Z","0.1.1-nightly.20260831.895":"2026-08-31T03:42:59.567Z","0.1.1-nightly.20260831.896":"2026-08-31T03:51:12.043Z","0.1.1-nightly.20260831.897":"2026-08-31T03:51:39.437Z","0.1.1-nightly.20260831.898":"2026-08-31T04:03:58.933Z","0.1.1-nightly.20260831.899":"2026-08-31T04:17:29.137Z","0.1.1-nightly.20260831.900":"2026-08-31T14:08:45.349Z","0.1.1-nightly.20260831.901":"2026-08-31T20:21:26.040Z","0.1.1-nightly.20260902.902":"2026-09-02T02:52:33.367Z","0.1.1-nightly.20260902.903":"2026-09-02T03:15:37.876Z","0.1.1-nightly.20260902.904":"2026-09-02T14:12:51.563Z","0.1.1-nightly.20260902.905":"2026-09-02T14:23:36.167Z","0.1.1-nightly.20260902.907":"2026-09-02T14:51:11.855Z","0.1.1-nightly.20260902.908":"2026-09-02T15:50:27.417Z","0.1.1-nightly.20260902.909":"2026-09-02T15:53:17.446Z","0.1.1-nightly.20260902.910":"2026-09-02T16:21:50.893Z","0.1.1-nightly.20260902.911":"2026-09-02T18:22:07.681Z","0.1.1-nightly.20260902.912":"2026-09-02T18:22:42.526Z","0.1.1-nightly.20260902.913":"2026-09-02T18:35:12.462Z","0.1.1-nightly.20260903.914":"2026-09-03T02:01:13.384Z","0.1.1-nightly.20260905.915":"2026-09-05T07:07:35.721Z","0.1.1-nightly.20260905.916":"2026-09-05T09:27:53.306Z","0.1.1-nightly.20260906.917":"2026-09-06T07:39:45.630Z","0.1.1-nightly.20260906.918":"2026-09-06T08:02:23.158Z","0.1.1-nightly.20260907.919":"2026-09-07T04:06:20.078Z","0.1.1-nightly.20260907.920":"2026-09-07T06:13:00.160Z","0.1.1-nightly.20260908.921":"2026-09-08T04:29:32.964Z","0.1.1-nightly.20260908.922":"2026-09-08T07:42:10.500Z","0.1.1-nightly.20260908.923":"2026-09-08T08:02:12.749Z","0.1.1-nightly.20260908.924":"2026-09-08T11:26:15.867Z","0.1.1-nightly.20260908.925":"2026-09-08T12:57:11.605Z","0.1.1-nightly.20260908.926":"2026-09-08T14:33:34.488Z","0.1.1-nightly.20260908.927":"2026-09-08T15:39:05.990Z"},"bugs":{"url":"https://github.com/donovan-yohan/relay-ide/issues"},"author":{"name":"Donovan Yohan"},"license":"MIT","homepage":"https://github.com/donovan-yohan/relay-ide#readme","keywords":["relay","relay-ide","agentic","ai","development","remote","terminal","mobile","web","pty"],"repository":{"url":"git+https://github.com/donovan-yohan/relay-ide.git","type":"git"},"description":"Relay Agentic Development Environment — remote web interface for AI coding agent sessions","maintainers":[{"name":"donovan-yohan","email":"donovanyohan@gmail.com"}],"readme":"","readmeFilename":""}