{"_id":"@mechris3/glassbox","_rev":"62-629be7e4073d18846234ee6498e9493f","name":"@mechris3/glassbox","dist-tags":{"latest":"0.1.64"},"versions":{"0.1.0":{"name":"@mechris3/glassbox","version":"0.1.0","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.0","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"2b88d39b9158593db627c8eb1092dc2c6a2af110","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.0.tgz","fileCount":162,"integrity":"sha512-A/284YuSFuh6Dz0OQkbTkmYeye75XVUIQWxdts4bDToLR47/ypQNCpNhUwXYZmiuFp1uuFxKVUGTR0qzUqae6A==","signatures":[{"sig":"MEUCIQDl2THdJ+gu92dUs/alm4mD+cZVZy8slhR7yTP6EmU6PwIgRqelm+ZWlm/7hXRU0KZt/vA2yPlC7aT0j7KF9UVrfXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654571},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8bd5dc440591a2c89dfae18f90313be1a1ffc6d0","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.0_1782321876816_0.09043165803054909","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@mechris3/glassbox","version":"0.1.1","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.1","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"261829c829435b16c48f05937751ae8cdd76fabe","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.1.tgz","fileCount":162,"integrity":"sha512-Z4tI6aWWbgWAtrn/pnN+9DKnBkMNmliLn438HrZOlVfbbTu4R51vyzJdlyPrNp/LSuY0tzpDsa+D5PHW/gYDmg==","signatures":[{"sig":"MEQCIAoFweGXiAL0pCmo8C5cNmW4JJVi+FeVZR26AO1SbBo0AiB3KoTlwjCKfa+Kl8jOO09FselQ9BCLvsITY1AdKHWemQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":655667},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8bd5dc440591a2c89dfae18f90313be1a1ffc6d0","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.1_1782406758944_0.7126871356001212","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@mechris3/glassbox","version":"0.1.2","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.2","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"49e8c4190f98278e79ff6ed6a516e5246fb795b8","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.2.tgz","fileCount":162,"integrity":"sha512-2CAH3dH1rGvmUfTroCRnpYAu8LtVJPsGX2gbTFjtzeOMftl960jBKC2DPpw4NforwC3tFylllw1Vu+r1P52nhA==","signatures":[{"sig":"MEUCIEXQF2zxHsb2Bh8usfkLGZw5SVnwwnJgips2+Wuey2xVAiEA/oJw1HtJoYE/t0ieKfe1kK1dBOmX9e/EA8n1kcQUgC4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":657828},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8bd5dc440591a2c89dfae18f90313be1a1ffc6d0","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.2_1782407567802_0.6031005528432696","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@mechris3/glassbox","version":"0.1.3","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.3","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"a812da2b996dfdeedbe79679e367561b3326e35a","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.3.tgz","fileCount":162,"integrity":"sha512-Fj0gOIJVM5xEF6MA2GUUW0EtL+iamxDNYvfn0Ob3ZRSR9FXX4LaXr3ecGjRWX77pjt1ZgXXXv8myHZnaMDhavA==","signatures":[{"sig":"MEQCIFecqZr1U8LHffmR5CNqgUpvfz9xDWcIAk0VCs6t5AEMAiBEVjKDik/7NrLdeodnLDbZZFmwqWBsPEQFe47yrPuOcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":657895},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8bd5dc440591a2c89dfae18f90313be1a1ffc6d0","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.3_1782460340584_0.5396366603910714","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@mechris3/glassbox","version":"0.1.4","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.4","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"f292ed2fb97e28f6473dac51b10fecbfd766887e","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.4.tgz","fileCount":162,"integrity":"sha512-2HSmR2q/FEzAr7QIi/oiz/NU08/sJUBv3DrSd9kbfMVsJZoQK03JXKTK9q7OipvrD5NEGUlyx8HZdqy85xcGYw==","signatures":[{"sig":"MEUCIBJEzOC2qMb13xWAfMd1ZyRdLS50GLnUNUhLIsTBn3alAiEA+42V4USVjBzzqXiI60YUAjX7+wBFBCBIlpM6QkiuOAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":658677},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8bd5dc440591a2c89dfae18f90313be1a1ffc6d0","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.4_1782460955595_0.06484458264702897","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@mechris3/glassbox","version":"0.1.5","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.5","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"06fbf33a84a2750fb81eb6d70fae1bc8b26000de","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.5.tgz","fileCount":162,"integrity":"sha512-hopRAunifVyxmQ+8iJUX0QVkYx47urccNrCfTyVQZCbA2Rbs+WifPLCagm0hgGoROBAUHYjpS9jlbwH3uPA8LQ==","signatures":[{"sig":"MEYCIQDaiYfV4MVZn/W4jM8lcbG295VqLknhO9hcrfJLnkKs2AIhANnhFHqmiTNINQui/UEamLM9kMmFLD4cV6MHC4yM702F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":660880},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"e51987f85385af19393376d22f9b1590692f74bc","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.5_1782463428568_0.8555512745714806","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@mechris3/glassbox","version":"0.1.6","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.6","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"83f16758c9625c8fea836f144dd3b9bf7032104a","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.6.tgz","fileCount":162,"integrity":"sha512-e6VHXU8GMfV73ap1OqjbEvD846pl8VETQcBaGjfb+MdxN/wSHS14mDtn3jXqcwX6ZqSDQCvdspjT5/uq8brVGw==","signatures":[{"sig":"MEYCIQDdqTSp/X4Q9/tRbNmx24HKDPG5efT8IXZwV46/KW22CwIhAK4R4jaufJ3qHcDGDVc1fiw7lERv2V5dACdgCRFV1Tqr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":661884},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"10ce18d3603519b32646992260d70f5488f685a1","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.6_1782463673547_0.18054062084958855","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@mechris3/glassbox","version":"0.1.7","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.7","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"daa53db56d2aa0308c572e489d2e59edfab55a44","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.7.tgz","fileCount":162,"integrity":"sha512-U4HNgf9px7XJkZQLmBizlHbG+NuuhL3zJvL0MVJD2RcfzQ5ZukXyB2+/ll39Xcu1ZQyaN5zAe0847uv4rRIMrA==","signatures":[{"sig":"MEUCIGSFZ3MRhFxp6BLUu4d7eB9T/QvtYEn/MvY8xjoabC9wAiEAw/FG5V1W5AE7WstxwevJ6GPHn/YR6mrKHXHkd5Pb/jw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":670340},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"cc63d4a426b1cc68fa4396585df1feb2bd50b86e","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.7_1782464210925_0.9369886774131091","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@mechris3/glassbox","version":"0.1.8","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.8","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"c3e0e3093c0a295a33639cb603d9bb0d71b81646","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.8.tgz","fileCount":162,"integrity":"sha512-pEVm4ndMDgvFYKxQDaLHhtaYCcbS/LTm5H+lrE0rdrQOMcFc8FmkHxV7/dezFPJY57rj85IqwS5FDfpHil/N2w==","signatures":[{"sig":"MEUCIQClYHmjZdTs3pzFANuCq327v9a8mV38fL4VNAZ02pYJdQIgMlLK2MtX3+0mxTcyQeSycstuW25CQYRsRtWp3MV6WJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676244},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"495d70036caf451e35f4600378938061d5f2c903","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.8_1782464679014_0.5904209198367565","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@mechris3/glassbox","version":"0.1.9","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.9","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"c753d083dbd56f0d273d23fe01df96788dbb006d","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.9.tgz","fileCount":162,"integrity":"sha512-NIG9Il0GXj2rKlpIY9/3IAbj5TBC25sKDtcgoBBomgpvDXqkGW85SLaPblu/9EwkafQwxct1donF+G6mN6hxsA==","signatures":[{"sig":"MEQCIFzBFs+yNmp8qpr9koUt8krSZW4HAY93726d/Xm9Q81YAiAo9edXx7ZS2wDlgMX1aJRn5irT+jWpJwweCvCurGl95w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676469},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"cf9f4bae592a8eda391d5ff3c4c66570373d66a6","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.9_1782468757404_0.31930294774971424","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@mechris3/glassbox","version":"0.1.10","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.10","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"7b02d4cb95a6f4a48b3b4df2ec70fd4e35c21ea4","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.10.tgz","fileCount":162,"integrity":"sha512-Ssqnc3ACWxeq9YARm6m7gpAuasUB2RoIU1L9sj6N4fPqLx6orTZ64jyDTj0T+vpHjx8ENgR4r28U1lFNh6lGMw==","signatures":[{"sig":"MEQCIE0gDgozUgxVtWliYakKMInYot+V61f80RLDK7UQoFufAiAlntUXyzRHO0tCN7unFySuZcZ9pBXZAplPYRW7nvvmBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676743},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5cec849ce69488fca9dfe5e8837b647f4f1e9642","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.10_1782469252628_0.7219262016090415","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@mechris3/glassbox","version":"0.1.11","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.11","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"e1cd689dc5e548c02fa5506f3f349640da39d347","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.11.tgz","fileCount":162,"integrity":"sha512-jRtfL6KHny9/ut2aQJYcdMRRNZVhmnO+e+PWFS8AzUixrkjmYocCEKirmZCwbVctE1rurpITOtlt4s+4zOyzRA==","signatures":[{"sig":"MEUCIQDs8z13FOg/jyHiWsOjZHc+6M+abxZoecKvMOBfDPGCUwIgYSkwi715GMKEeE+Eka1GA0ZZv8ndvq9PZ5e9y0UscA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676548},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"e6f15a478f9ab9b7e5c9443947d58b30101f061d","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.11_1782469681041_0.9728214138872451","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@mechris3/glassbox","version":"0.1.12","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.12","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"8d1494a3e68c5f23fd4b1cbacc4560c942da3510","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.12.tgz","fileCount":162,"integrity":"sha512-uXCNmf2XgiqOUl08U6H2nBqWO/WgwG1iUPKF1s6wu5VevI/GOodJEk5DuOl1pZspz/12YpL68ZnUfw45sin9EQ==","signatures":[{"sig":"MEUCIG+KNR8kXglLXbCzcyIf5i7uBU3tfnpb3Ma24ohK8xgvAiEAskXK1rkBHqnxlJBNcmMxVGByC30jtGe3uZO+JB4+w4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676854},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"92cb6e661b91ab3873bfbfaefae4219ede4457e1","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.12_1782469925551_0.6144863618606666","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@mechris3/glassbox","version":"0.1.13","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.13","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"510c151117bc6eebf03b7a22f5bce4b0cda0cc1f","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.13.tgz","fileCount":162,"integrity":"sha512-QgMpeXVGr41IWpL+1Xji9RMGIH9oDv8UGc5bE2ToyMn/65e48/cE9wvNV3iQpgpqiE6k7mLIhpxpNuVMS8iLiQ==","signatures":[{"sig":"MEUCIQC1WZ5mgs44PKLXVi1zkBMm9WRWkbC6hLgPlIVzZz+MPwIgIfqLr29dBomqHFb7lO0YiQZm6u+dLhCgmX3QaZ79cAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676929},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"31b79d3ff5b3a1d00be7158080271b35df9a68bd","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.13_1782470917818_0.8020890872666364","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@mechris3/glassbox","version":"0.1.14","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.14","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"f857b5c74201844596a5b71ea93336029a3b5ebd","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.14.tgz","fileCount":162,"integrity":"sha512-qCWO9SV/CAgLlNUO3A9yIQU5Es8Jm4xtY1RGxX3J8/SWP/kOzCk3o+YkrjBSjpu3+YRHHtcjmCyUvJQ9v5nNyw==","signatures":[{"sig":"MEUCIG3CKVCfbT/4ioE8ysZVvuP7gUoWfAyma4SeIkrm2xGYAiEAln+uOgsHuvrJZMy1YT+JedS9mmAJj8Ik1XtTB9kL2pM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679237},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"6be86a20c12edffaa8d2c1721ff1615456898894","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.14_1782471382702_0.6054771885729229","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@mechris3/glassbox","version":"0.1.15","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.15","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"c2ef44b9e7533aaae3e3ce6702dd377f8830669c","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.15.tgz","fileCount":162,"integrity":"sha512-XQcyUniL+A/4qbpt7B9gKShvbeyQ4wPxmrBbo2Zq76T2LwxXf0990lo/eou8IeK1lyRraf7Hv+qXaCWire0GgQ==","signatures":[{"sig":"MEQCIDvVs45/YtzHl+M1kfABt0cYxK4dlbiX3mjBnRXuiKNaAiBX1NTU8ab7bbAEDcAfKBXDP6ujW+2omJgX+etTv158vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679245},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"dfbce0f6023ad668440071e21914569cb362347c","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.15_1782472351149_0.8583450633059169","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@mechris3/glassbox","version":"0.1.16","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.16","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"288a8568e6563e2d5679448243828b58a3c0fea7","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.16.tgz","fileCount":162,"integrity":"sha512-uHijg8Uy6WCrNcwfiEZkyJ/XJk+mpAziq3j0oHzh6XhUNv5FCSZnDBt4Xa2G+PUZNxKsYDNzeYraZTHFQ91mig==","signatures":[{"sig":"MEQCIFKqn7DSAvay2QDTAQk5ytvRLPsx6UTy81RBGAtZG84hAiBHTu7rZrIIofhrtBO1rhC1d+MrMAwHduQjwjIqIgFADA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":681577},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8c330068902862138c10dab899bb09125110528c","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.16_1782473704755_0.7458017218230697","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@mechris3/glassbox","version":"0.1.17","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.17","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"762cf9b9b84069155012d92cc26847e17ccc3492","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.17.tgz","fileCount":162,"integrity":"sha512-0onIOQTfrttRnr1iN77ffoMOGst43PK3vj8WuYLA2ZMWjnAulrZb+qwJ4++6CC3AZZUq5kiYFiKLAT1h8pnGRQ==","signatures":[{"sig":"MEUCIQCf8qAm4en9gadnJ1XUpWo9Eu7DnhEIeGDXoXj6a4MyUwIgWRxS4oEKqyvwBXYGjRKGgPPJXsd7joDXMHjB/qm0pII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":681622},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"31938f2d01e9ecdd1429c90143c15db8658867d6","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.17_1782474329893_0.6533803288687838","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@mechris3/glassbox","version":"0.1.18","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.18","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"f5a82d493eaa9bd8454dabbd1349afb1b1cf9f12","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.18.tgz","fileCount":162,"integrity":"sha512-2o23hAyjP1mUa0lEf1MPRv9M67Mop8xvRTZT9mubMNOjnXuoJWXVa9/EKMldPMrjnluGdFwRFAwdG+aVyWFLQw==","signatures":[{"sig":"MEYCIQDYPd7ZcjX9oGNIQlMkgtFVDlqageQTBybAdCy63bJgrgIhAOLSI0u6o9UxRUNH/TbhMPPVH+3XwPsF5QaqyvG8HDWT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":681744},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"00d82872d78d47a17e91e916a85dc317f4097714","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.18_1782474588837_0.6929458309997532","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@mechris3/glassbox","version":"0.1.19","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.19","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"b6ea310ffe7a274aff647763c77036047c28a771","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.19.tgz","fileCount":162,"integrity":"sha512-v/qUxEn2eSHSfKuc+CEOUq+5UE/BU1rLSsjbyE0cy3f+H4j15dEXe6zmVoLfcqa0Qy0NcbJ6SzXckimIMP84Dw==","signatures":[{"sig":"MEQCIEA6LgyCdkPFD0BlRgcwAGf56Pxc5Z8Zla8P8ysRT4zuAiB6M+TShDdByEDyu7FZuWi70v5Zbbzc+8OQZ/Oeh/9EDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":682596},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"eceefcec3d0d18a58388cba5418084a70ac3c890","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.19_1782476007457_0.925007598316961","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@mechris3/glassbox","version":"0.1.20","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.20","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"38a596f76693a994daf36a1130ac20b3d312bc4d","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.20.tgz","fileCount":162,"integrity":"sha512-/6IApAMuFtxPmHC1frffRYy8FI2KXlgukr8j/vV2oZSOlhx9o2WmpTs1khQLYHcmUZvgHsDeo0wSV9h5oiq8LQ==","signatures":[{"sig":"MEUCIB/FPL+y91kVh7o+FuIxPXDV8oGFxdUjcP4I+9/9e0JEAiEAwjzsUtfNjmy9w0/cqUQ+q2eWKbN/OSiyFAJ4G1KpOBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":682814},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"eceefcec3d0d18a58388cba5418084a70ac3c890","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.20_1782477744376_0.055771764333694795","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@mechris3/glassbox","version":"0.1.22","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.22","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"948ec399f711e71adcd8236bbc3981b0f904ec1a","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.22.tgz","fileCount":162,"integrity":"sha512-4gqngPBhvcJbM+soITwdi2YcBFxYnpdohH4HEzxKZPHHvvVs0BwYqQeDNuWz2Vrec3/pOefMVTeA1liEt0Z/4g==","signatures":[{"sig":"MEYCIQDn6gVfX7RtqLUngKjGG1whquKYGiP3ROOsyG2iHWleDgIhAPDSB2U89sEQVraKZqjd/Eiydm9EHVuORbT72BVVfA5A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":687672},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"88ec716f2972e8d9427fed3528856f72f8199e4f","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.22_1782479355683_0.9983211993692904","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@mechris3/glassbox","version":"0.1.23","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.23","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"b09f6c7dbd5d3157adf14db00a8cdde47f908985","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.23.tgz","fileCount":162,"integrity":"sha512-VkVbYWJyBGkdBA32sq+xOeBDdbtSqP5xlGYJG7KyYPUxc5Pc5dlkJHjjUSryzRnah3sOVx0FWMetOl1+pIReiw==","signatures":[{"sig":"MEUCIASKQVuqSmCwoMPF9BnNk6eQv4v7F3FIMCdGYYx1waGeAiEA7+qq1Onlu3xzWg1PMnUubbnk7u4DM1ZpjTXx55013z8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":688491},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"05893e590f5815b26fb6341a30fb182f0a527984","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.23_1782480633692_0.9305427721460524","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@mechris3/glassbox","version":"0.1.24","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.24","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"073c734b6afb42744686b8b73d594520b18fc9bb","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.24.tgz","fileCount":162,"integrity":"sha512-6yZRL4kWX9F8xXodtIBBGRK1dlQ2b2BygVLPd4zomQS2BoVqNFCTWJceQQc+Qlav/ybJtbvovJ6PIKf1TcKDHA==","signatures":[{"sig":"MEYCIQDXVEvb1Pz7it6yADEUj+A73UiE2ZTYQ+AHQSBo04DAXQIhAIaXvEYZODoXRiz3WmGgRJEv4y/M2P6PeiZgsQk3FOAP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":690641},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"05893e590f5815b26fb6341a30fb182f0a527984","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.24_1782481258860_0.25200188185931727","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@mechris3/glassbox","version":"0.1.26","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.26","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"67a562ea38eeb59a6e41b3aaba149378f9bb7bd9","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.26.tgz","fileCount":162,"integrity":"sha512-bESYekCnLqbpQfj87ThD86Zt5pOy9am2+xIasww3YXJAfI/Hf3gJMlxbRHpkAYU4dcgrlZ1Ihm+ozRlwEUBXNg==","signatures":[{"sig":"MEUCICiBo78TPlfViMrxjb5fWHKlac+aFsQGe0YMWontIh30AiEAmbz6eWBluAmI24PYGIQL5Iq5okh5aU4kvEbpCTGSVEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":691549},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"823c788052e08bc239ecb07e31c82b10dc6b0495","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.26_1782482050648_0.40358137366030733","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"@mechris3/glassbox","version":"0.1.27","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.27","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"d1a83415e4ebf81527e35d21ec2c037d3ed04e42","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.27.tgz","fileCount":162,"integrity":"sha512-D2AsBgrxKV6bXrdojKUGeASB5fj3YvW2xKlfQaNdOgW03KZAcPwSgU90b1E4JaTuFo+UlrdcI3BSVMjFWRoU6A==","signatures":[{"sig":"MEQCIEaEVoruTMgHqHJfYc5RsTvngHn4LQ+HFomEOdxPwtKGAiBOafxZeWhGGp0y5U8beqOhBWiXCMqElAqqLPeSOPPNhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":691746},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"ba66f7ec27e843bae73ec75f10081313eb9ba825","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.27_1782482579788_0.5446422623973195","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"@mechris3/glassbox","version":"0.1.28","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.28","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"f06adbe04561551cd5897c33c615543772a2d027","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.28.tgz","fileCount":162,"integrity":"sha512-dwRzl5ZH7L/0MeogKxhGUeXygHKCTtCNiV59cPoQXrfpn77BQ2ND+c72ovLm9/PVxmSWQ55cppuxYTtDP1cFZQ==","signatures":[{"sig":"MEYCIQC70VMGj6YLV4aqtobEIslFGp03UU22gv8nqzMVk5aHDQIhALiT5+5os+CZ/Zgcn6iCahih4tX2L4MB9aChc42ayHia","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":692399},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"ba66f7ec27e843bae73ec75f10081313eb9ba825","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.28_1782482850689_0.11137335813750049","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"@mechris3/glassbox","version":"0.1.29","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.29","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"b1b4b7f72a84f0d7eda9f30ad1a5e8d2bd535031","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.29.tgz","fileCount":162,"integrity":"sha512-LIJCwCt9cb1EuZ04BENCqYqce+8gJ+Ey0UXTI8u6qL7U3vB/3NYO8jj4Bt3OohDQrKyeDZ7syOcEQqUvkjB2vw==","signatures":[{"sig":"MEYCIQCcHUrMfufS6qIz2vXRKJiMhuR+tfDm1DoEAVshCjr6CwIhAKMrmwMMnW48wlZF/1b3KII9MLjCYYVH8Zjs4QiTAf1O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":692614},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"13aea95369d5d31f99778150e5bf0038207634f8","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.29_1782483761145_0.05174811294058723","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"@mechris3/glassbox","version":"0.1.30","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.30","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"4467ed6a95ff6255dbcc53c8a7476b7d2f215a7a","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.30.tgz","fileCount":162,"integrity":"sha512-R6IHR/LieYK0ozkK5ztpGUYXIptH7wQMHGVuI5Pq/yFy2NBRJiVz1W9Y/EsFJNki0YRG9+HvibnXl2/A7GCFvQ==","signatures":[{"sig":"MEUCIQDHr5u5Coi6qWNOZ9JEM0rOFylKw9i0FIYfJfAUMjcX5wIgbRLjjPII59+unXeDI9G2rE5uHFQ6b6CHlXGJvr6r98k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":692801},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"13aea95369d5d31f99778150e5bf0038207634f8","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.30_1782484625985_0.24794559435532926","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"@mechris3/glassbox","version":"0.1.31","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.31","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"72c23bf0f37a108cda1b5dd6b729f62adc260f9e","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.31.tgz","fileCount":162,"integrity":"sha512-LPvWCaWf2kr7J/uN2qy1MJmTEVux22i3i9Bn9liOPEshjn8VyjsQtmLHxsVRsEcK+UT29C3pFs3corUJCEb8iQ==","signatures":[{"sig":"MEYCIQD5+NHvABgcKNgthg7Vq9c3NkqnMs7hoyXUvyGtW8ZtKwIhAIkNh9hsX4FlB7YyKVikzNNgbE/N2mpxm6Vqb9W9xVxr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":691564},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"13aea95369d5d31f99778150e5bf0038207634f8","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.31_1782485792371_0.5948691498847485","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"@mechris3/glassbox","version":"0.1.32","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.32","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"ba0691d2f343e93522066ffbce9dcb37365ac6f5","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.32.tgz","fileCount":162,"integrity":"sha512-NuXHCUfFChFUKqrEjzXkSg9z6kWFi3rFQuTeeu0VLf1fVFyUcpBNcmtWkPls+3DLQcazqHrldUcTEFgRR79wOA==","signatures":[{"sig":"MEUCIQD7uwfOSbuKDmsQ04fPYl3FUETWhoovZgIDInvQxs5iaAIgG0dFwn+HAbEg8g2eBPt8k7y75ME29qhNp6v+wT60AZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":692426},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"cf2defa65502276fecf136fcbe731b9216998db0","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.32_1782809765576_0.2393011617729759","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"@mechris3/glassbox","version":"0.1.33","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.33","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"0d90ee99b86703561f338fbb7f609019546ebb72","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.33.tgz","fileCount":162,"integrity":"sha512-FzAHWoMW3c7eFdTH6qB3R86iLSuvNWiEXBjsLD64bqXRqMUOZH2b9g0JVsUhVhax6uZZUSAbtE49IffK8D8OsA==","signatures":[{"sig":"MEQCIBcI0DUPsTLrCzSf7SgD/I9erYohLB5oKL5Hkk8urzstAiBpK80b2TV+Uvd/KRp7sQTvJ0/+dZujVZZnwMajmwjK8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":693467},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"dd6accd6ea78de0c58f3d8b460ca16aed06a2551","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.33_1782816978252_0.5804506460326331","host":"s3://npm-registry-packages-npm-production"}},"0.1.34":{"name":"@mechris3/glassbox","version":"0.1.34","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.34","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"92d9becf11f5eeeeb00efaaf66b525436252aff4","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.34.tgz","fileCount":162,"integrity":"sha512-45U+y6jg/pOcIcgDR7MAM7k5ZmMPwkDfNZH4M7iawyCHBI51zol9p4iWGgZ2RWOBlz80A1YslQ8y0nnBk1e4+Q==","signatures":[{"sig":"MEUCIBZ/eWkknJJAi2mTLnf11s/TPg/n8s/ibgfzhxfPWm4EAiEAmcDVg+w25+I9If+IBeMGrkee5trB7Qk+A21QC3oDRY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":693307},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"e53513253f2205e8b678127f46bc86b6510500f0","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.34_1782817915707_0.4972460662428557","host":"s3://npm-registry-packages-npm-production"}},"0.1.35":{"name":"@mechris3/glassbox","version":"0.1.35","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.35","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"f8fb7578156ed8753db4b650da8bac68f95bcb2d","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.35.tgz","fileCount":162,"integrity":"sha512-vVDeE2etYmMBK6JOvhsXGdo37l+IZQ83P0YBlJccOQyq+0l9yjIrO5hHNFt4U4MlMe7SatEN2U7WwLexQWPYqQ==","signatures":[{"sig":"MEQCIGuHR/BLKMV1M/HX3hQbzTOH3ITmTQi5x03eTqGVyEsrAiAqfhAk6QT/zqD3wuLXHb5lZMZtd0gamAwVqE+EFpzddA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":693837},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"961c132f662dfab9a030215746359ac6c092f72b","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.35_1782818460506_0.27941027757491366","host":"s3://npm-registry-packages-npm-production"}},"0.1.36":{"name":"@mechris3/glassbox","version":"0.1.36","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.36","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"5cdbb8e0eef1d6637090f93a809787bfb4c544f8","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.36.tgz","fileCount":162,"integrity":"sha512-YdZ/aIGhc7bvmUioENBD0nMWF/m1wqsl/ZoVXJUZiLL202Y5NpeUhdECXR8ImvNV4JAh53ogts3U77/upAXS6A==","signatures":[{"sig":"MEUCIQC9CZMQY9PbIFuepXQe2cnp2uHjPiar2f9FjJ91NUnGugIgDPUDGMFsVXN7y+L7t6rgVYiuKdZd6YbNbYg3FAoSNw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":696997},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"961c132f662dfab9a030215746359ac6c092f72b","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.36_1783000195371_0.3482579249661508","host":"s3://npm-registry-packages-npm-production"}},"0.1.37":{"name":"@mechris3/glassbox","version":"0.1.37","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.37","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"64a017108bcb54a861da2602aee72e3517d8ebfa","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.37.tgz","fileCount":162,"integrity":"sha512-dxXKgZ6hEHMVLJy3F6s2A/r46agW9eINKyCuhexBelmL9xaA1+WBnZP1Gz7/iTqY928iWIotFGD/cPsem5S9Cw==","signatures":[{"sig":"MEQCIEp62YuTWNCVj0pA2ReLuBzVLwnBJysAbLTFDzIrbeKjAiAZwTSEHE+F1k7TER5tdDKSTwlsTWDaOGhAqGKDV3k0zg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":701152},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8325f64382fb7eb2222d0d124e2f0692c820c773","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.37_1783000719118_0.3502969275476773","host":"s3://npm-registry-packages-npm-production"}},"0.1.38":{"name":"@mechris3/glassbox","version":"0.1.38","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.38","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"ce23f80019375ecf55bfd2c40d9fe89cbd162390","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.38.tgz","fileCount":162,"integrity":"sha512-q79f2EUnI6dxP9R0OJ8NBwxEeLHDs/pvt0UNhyKmRwL2MLKZVvKhSv5gMBiQggw3K0NQqF4riKxcmLQzL99YfQ==","signatures":[{"sig":"MEUCIHC4e6Mls4Ai9R9fq3V7AjYjTOhGH3OU8U8IzQidh67JAiEA4Q4tT0F8k7vCQis9LFQUy/PqEdye05mzsuh4kbDVOBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":704493},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"3e5f7f22a0e8fd3d8661ee306556081b9e42d9ae","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.38_1783001341882_0.2427230004079053","host":"s3://npm-registry-packages-npm-production"}},"0.1.39":{"name":"@mechris3/glassbox","version":"0.1.39","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.39","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"a34037f100709a5c5b7db384df5d67febc5e2d6e","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.39.tgz","fileCount":162,"integrity":"sha512-Xm3PYf6NjXklKw1gIFo19tdeqfwNg22jvJyw4EYBNj+Xpxqda2WdDjiK79z7ZaniyGu6FJaE6LKUtgknDzj+bw==","signatures":[{"sig":"MEYCIQDWnfr9tjUzTFgVKYPM3xKORl4WVlgYAQSFkRGzflf8xQIhANtSrUrkpBomjA2x2YNTQjHb+gdPrvH6ZVDodYomP//B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707346},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"a180aa9a3a7e961ce2adc19bc99b2da2fb44f827","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.39_1783002641745_0.6958218435490371","host":"s3://npm-registry-packages-npm-production"}},"0.1.40":{"name":"@mechris3/glassbox","version":"0.1.40","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.40","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"b3cfe8a11a1344ab3d503fa1add1b774756a0c31","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.40.tgz","fileCount":162,"integrity":"sha512-PtBQFmtz0Z7iKjcuAm4AFz6Qz/XGQwSLjuZSa75El6HZzdgR8gqPx7PioSLyga96X10A/Apz9nNCbVS9QejVkg==","signatures":[{"sig":"MEQCIGLE5xt82RYoUSNu7pFAdtFNVqXQ/8imoamMpNbTYVXmAiAEZvVKXOv2uhusb53tLVZemuVcxhiJrDYVfjpUptocSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":708784},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"a5431bd56d7fef857050835686e66d17c34d973d","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.40_1783003365342_0.1535813194250426","host":"s3://npm-registry-packages-npm-production"}},"0.1.41":{"name":"@mechris3/glassbox","version":"0.1.41","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.41","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"5ac5c75ce9c14308c7b97313a9f6372061845a02","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.41.tgz","fileCount":162,"integrity":"sha512-3XNuSTMdsMF8oOonNPVMb3P3Aho4y05KJ9u78jo12m4FouZLboABtUGMbXbgMXNrey8CtRaeuHNGU+KuM7wPBQ==","signatures":[{"sig":"MEYCIQC4BFgq0cPTtJ2wQyOOvUxSgjTiVVR0DjAqFi1uYWvQsAIhAO8tN04Yy/xQj1Le97iHqFUXaweYqdlk7oF8Tadu39nr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":708901},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"75012d5c2818440ac02c181aa259a9babb669683","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","test:e2e":"tsx scripts/test-e2e.ts","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.41_1783004016928_0.6975591625538577","host":"s3://npm-registry-packages-npm-production"}},"0.1.42":{"name":"@mechris3/glassbox","version":"0.1.42","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.42","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"6cfa67ef4a1f96aee38e690467ede3da2fde10e1","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.42.tgz","fileCount":162,"integrity":"sha512-qarxMQTS/1NdsGTILAu2Cew2lB6HadQP2mZW4MfhREBthHZaPCaG/40YkIyA5lsmXEJGkNOWajV+QKSCA8kvag==","signatures":[{"sig":"MEUCIQDw/PGvQkih4PUdgVR9rSTIBndGqlvSZTZD5bT6AKiWJAIgPC0cJgri3sSab8PjoL5Myyb2YkJMxh+q7KyXXYhlDpI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":709645},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"a96d53a053598d191d5a51cd7780d87e6374b38b","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.42_1783004474540_0.6108390710141003","host":"s3://npm-registry-packages-npm-production"}},"0.1.43":{"name":"@mechris3/glassbox","version":"0.1.43","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.43","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"25b7be3d9c153cc3c7142e53394026633619419b","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.43.tgz","fileCount":162,"integrity":"sha512-/rJyf6QtcEeyZ3HISV0YAdfsZiNyp7SabGC3QNDSGtbA0W8FGn6hRh7EtViaPkmCOzxKsfF3ZFu097YJ+NsnKw==","signatures":[{"sig":"MEUCIFm8s2zkfiQ154XNu7dDymlqp+brs5Sn4yVDS0bB8BE9AiEAuqA4XprLg6q/vm0eXFELa7EDMp3dF2efXF6lypIxvRY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":709664},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8b7ad14610e036a09a71121597eae19b12a4144c","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.43_1783005194536_0.9315731135320202","host":"s3://npm-registry-packages-npm-production"}},"0.1.44":{"name":"@mechris3/glassbox","version":"0.1.44","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.44","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"172773632857b643051de0910fa726ff9c0a330c","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.44.tgz","fileCount":162,"integrity":"sha512-YuFDNVqV9VquypZscCb1Ko/2ngMxlDLk0aQzBFqdPIgdj2+RvMvdPT24fqDnIPBw446NFfOKVChKF2Is0AVtjg==","signatures":[{"sig":"MEUCIQDR/HjtZeIicBCd+2NrCxbpRbpsV3mkhptBC1pZbfp4eAIgMf6pARpAEiuflGg6f+xPPA5KX8lrWB3KrsxOTd7QpmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":710931},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"a8eec8d6cb94b84042481d318f079b710acae4da","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.44_1783006373920_0.3436130176453347","host":"s3://npm-registry-packages-npm-production"}},"0.1.45":{"name":"@mechris3/glassbox","version":"0.1.45","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.45","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"83b4e710fbb760717c0e48ca70bbf7ae5f6a6a1f","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.45.tgz","fileCount":162,"integrity":"sha512-6xaXYmsQCtGS5LM2wusLI6j2uK+ZgcqXnkg7EReQZ5DPZhLZd48qy8vEruPD/h/PMj4uVcwkRw3sqiJ5ZFbgig==","signatures":[{"sig":"MEQCIBYTTouwrtEIHtIY31deqyzWxjS1EQuXRIGQYgEzsS+nAiANfx90H+LzgJQFmFB00JnSYGI11mTAaAdPF8b3uve3FQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711692},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7c206fbebf3036745f26b35d383cfbe9889e5544","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.45_1783007823571_0.6721221553451397","host":"s3://npm-registry-packages-npm-production"}},"0.1.46":{"name":"@mechris3/glassbox","version":"0.1.46","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.46","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"8a8de3717ca44bc50c32adfc16eb132d35e1bbab","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.46.tgz","fileCount":162,"integrity":"sha512-E9LxCuGyxzmkMLRazy/0O2TEZ0kyC9RN619yS0m/NQM987czC7suNXQNa2gV7PhRsFdlLpzuZedZJMYttOQlLA==","signatures":[{"sig":"MEUCIFDBnj5JHtld/x5Mj77wrxMXVwmXha3+AwCYKl5eLqvRAiEArbPJLtg7FY2ej1hCIocyJEjWHUasTzrrd1CXBDyzukM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711660},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"d712b879da573fc502288f7f6cedb09b5bc27ffa","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.46_1783009273036_0.2802312282102004","host":"s3://npm-registry-packages-npm-production"}},"0.1.47":{"name":"@mechris3/glassbox","version":"0.1.47","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.47","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"ad0c05f3587512271508ec67bb2f975269236c38","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.47.tgz","fileCount":162,"integrity":"sha512-J5HFPZs0gcUF3eICZYGzGU+J6LVUPCHBYZeAZD2Uw4dEjz1sqtJ1SaWN6L1u8/n/BlCjCKUixmpY+32kZi2ZqA==","signatures":[{"sig":"MEYCIQCWFjveBThgU0xmdM399pdEP2itWI2h+nm8gSfx3UtgUQIhAKaE4FWdXYRbICZgz6UWVDNFCqYMu9TP5dipB+U5ET/F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":712486},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"4a85f4a564fd0bf35cdfbc6d676958c4dde06075","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.47_1783012401010_0.7652630006584586","host":"s3://npm-registry-packages-npm-production"}},"0.1.48":{"name":"@mechris3/glassbox","version":"0.1.48","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.48","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"5c4289aad994b249764c6c70b3d7c0a7f66054e6","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.48.tgz","fileCount":162,"integrity":"sha512-8xvRQV/D1qRasV33KJp51T8MSGk7sSZuJ57VRfcwlY4wgduxxQtB0s6kgB7Wt3i/+7JTtixkWkxMG+7m1Sh3pA==","signatures":[{"sig":"MEYCIQCWHE7sRyqFzLaA9X4bv4FeTO4MVKxtHwpCy/umPMAqlgIhAK0CWSgRikawr2bMpEHfx88Rh+H0vjEjteel8ea6vLVO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":721385},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"a042be36383495756b0dce7c744818d3f7d40768","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.48_1783074604269_0.17186915652182488","host":"s3://npm-registry-packages-npm-production"}},"0.1.49":{"name":"@mechris3/glassbox","version":"0.1.49","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.49","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"21e039ad3bab896af58dbcfd4472fa946efded06","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.49.tgz","fileCount":162,"integrity":"sha512-5d2Awuij5lGDeJJi+0pTR1NgAKf01OZZCmtQlmySP4dtDPdYvNP3tzcN1U/1LCF1cd8SeAn07aCBeCNCITF/5w==","signatures":[{"sig":"MEUCIQDDNLqDJqQoAPzCyWGcANSpZOP5Xcaac+qlIyS2zyg+uwIgWmVpwb6IlX4RsJBeO0X6SU41rEg+5d5QoSF9v76tz/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":722245},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"c178fd54f2a0bce57bbe0caab17828b2316bf819","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.49_1784743770966_0.8004194583619006","host":"s3://npm-registry-packages-npm-production"}},"0.1.50":{"name":"@mechris3/glassbox","version":"0.1.50","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.50","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"f5e1d092e2276356a346edebd73b127e0f0793c2","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.50.tgz","fileCount":162,"integrity":"sha512-ZstZlXZ6gpWz27QBSyLke9AYmEwa4HxUX+jgF88tqck7P87BcxDvtDhfJ1dXOQZQDAfOPORBeydOvYwypXcpVw==","signatures":[{"sig":"MEQCIBfpewD1pHrXCq6ZTP/uGs5kYk3hr8jbyNzA2YW1rsNZAiAheuQ0gs79Nfe2O3HyMiESSPPCVyryDcDg1Zt1Wn7AaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":732312},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"d66d01915d84b0e7a0e7f7a81fa73fe07e985d46","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.50_1784746479617_0.7014530983906642","host":"s3://npm-registry-packages-npm-production"}},"0.1.51":{"name":"@mechris3/glassbox","version":"0.1.51","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.51","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"d6bd913c2c1e829858aeaba8a4e17a140924dd8d","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.51.tgz","fileCount":162,"integrity":"sha512-Kn+WI5MQsW2Kj63QGWmkaCPOBlMzw+e0Q4+CPexufwj0HoWksr+xjSqaeAx6+4KdG+TQCQmXyjuSvy7OnId6gA==","signatures":[{"sig":"MEUCIQCf36LT2X0hsl9dY2THm6EOI15iwmOan7CR4WNCzNlL8AIgNdQ9cxxp+zeDIp73AtXDmuhb6rVxecg3vWMzm+7xvH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":751523},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"1cdd591464ae5e50d009fddb2935b2dcb061787e","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.51_1784750083142_0.5540792925157607","host":"s3://npm-registry-packages-npm-production"}},"0.1.53":{"name":"@mechris3/glassbox","version":"0.1.53","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.53","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"8b7e26c54ec2c752ac54d6d49357ef3c15687670","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.53.tgz","fileCount":170,"integrity":"sha512-6O6KPgIu2SugQQK6xyUBaZ+075yElehtaVJOyegO5Up6SpLjkwLOtfStZX1b+TsMzvzm+7Tcbz8wEFEkVVILMw==","signatures":[{"sig":"MEQCICwWQ6WTtbx3JKvn/HIK5Et2H7Md4AH4/7yqSukyUEPWAiAFJQnP/HFcgvOLbfnKG4Vy107KFH1zYaj1H7TdeBB/oQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":757974},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"1cdd591464ae5e50d009fddb2935b2dcb061787e","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.6.4","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.53_1784797536273_0.7935442221086015","host":"s3://npm-registry-packages-npm-production"}},"0.1.54":{"name":"@mechris3/glassbox","version":"0.1.54","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.54","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"2597b775c7bf2c43840ca53f068a28307089b158","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.54.tgz","fileCount":170,"integrity":"sha512-kcunqdGBmllbkS22X3x4pHIKbeDaAiezTVTM5aSZr/obHmAeIKK7xcI/BymbdRAJiSbjsgvF8Oje/uBd7g1pqQ==","signatures":[{"sig":"MEYCIQDqxH8W40QztzICNkM5WDd/+xTBNEIqA3acxwsz8StkCAIhANIOaUXSmmyOUONzBAhtG2B0T0VSaHN92F8DPhLC28Pc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCO4vFpa8BWKLtk74QEbi2RZsyquJXzN5tqlGO4aIB8FQIgO6JmxyZMGLcuB8JkLq7CbnhJz75eNnBo/QysAdRBnpM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":760827},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"684f62675c2d4ee07834ef329c53ed9fb610feea","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.19.1","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.54_1790782175028_0.9159485513452388","host":"s3://npm-registry-packages-npm-production"}},"0.1.55":{"name":"@mechris3/glassbox","version":"0.1.55","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.55","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"8c2d45c8b7bc65ae18431ad495da8dda3f4a21e7","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.55.tgz","fileCount":178,"integrity":"sha512-aral0tQuZKmxpTf/MZIfzffP+os5Gg8wujB3ZmUrzNLMvHzOxQhJtEmslAtTylVm2hfTxAcJ8WURkC0iO2V1aQ==","signatures":[{"sig":"MEUCIC1yWiVpoeJJbqJDGwDKUYL0/bXbY5YgYnXysBPhuv5XAiEAv+78vMXvxtuduIvC0HiS9gllZMg/jypRq49YhrbjKNg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDtmy4+aqL9DMfkLdgjMDOs6KF9McblM2JkYgBWbTSz/QIhAK/btm9Jl5+hkRwX/jmBRzfMHR0T/8B53R/svaKr8vAt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":774852},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5ac1b7210ac2bf17c2f88e037b00e16b83114740","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.19.1","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.55_1790785169927_0.20158594831251286","host":"s3://npm-registry-packages-npm-production"}},"0.1.56":{"name":"@mechris3/glassbox","version":"0.1.56","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.56","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"ab84d809e6b01382641228a19e52ac80420a16b9","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.56.tgz","fileCount":178,"integrity":"sha512-kK2wTIXe7o0+UBrNhlF11zL9z0Ctfsl2RZgLlZWCFVvJGNXnx/ozDPpwn7sKRFUvDceVoM71wJOkExb3oHNJQw==","signatures":[{"sig":"MEYCIQC5FnKO6rHhTdn4fIzUoj1QNYg8vMdLdJeoqDcUyBDE0QIhAIAWBNS3pahQ4j/bCBS/oQnsOtKjsgxKRZp77FTHwQzE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCJnzGwglk1QOrayzo34x7Ijl4Kegxm4hl9IqEn5DarRAIhALv5q6f93901sBBe/N16mVDII42SIrOD6O1vhaf701lC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":776427},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"f0cde4aa4ccb3e8624e14ec4de3cc6ee195eaf18","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.19.1","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.56_1790847310673_0.20196432722914603","host":"s3://npm-registry-packages-npm-production"}},"0.1.58":{"name":"@mechris3/glassbox","version":"0.1.58","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.58","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"a61abc8e9e7335bbba431c6a15c0fd7ae0989bf3","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.58.tgz","fileCount":178,"integrity":"sha512-1yRMS88Ypt+Okkgl9g/rGTlvO+DGEKxxy8BjFnQxt6SM2kttl1C9EjZ6lHAyBaGLvQkPxVMOSCZo8pbpP3DBnw==","signatures":[{"sig":"MEUCIQCguzdxp2rFQUv5izjpD/GOYHrCP2Ja6F37lmRZOY0O4AIgG801W0SZLgi+J2iWwNP8dErgIje/JwX6AT7Jlx8dIPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIC93y8lSSqsq3sifequwZiolFpTXQ/HNot9kwsuKeJ3lAiEAyrdFp88DRv4WTO6tzCGCa3THAtGaqD0/CRrfU49w6I8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778626},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"e1ec9d2eeb237a9b4941564a7e170dc5e5c6fc91","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.19.1","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.58_1790872602708_0.37005480453948025","host":"s3://npm-registry-packages-npm-production"}},"0.1.57":{"name":"@mechris3/glassbox","version":"0.1.57","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.57","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"6ea06226d3cec79650a167d64aa5baff1ddcdf5a","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.57.tgz","fileCount":178,"integrity":"sha512-YV/NjvUxUfJ4D9lttG/vos7Tk1bRgyYXXKun1BB9ugky148G8aBfCBTy9kGRJpkqa/n/XpIC0VZtZ5IDWDIq4w==","signatures":[{"sig":"MEUCIBQex1OxdT2g5Sv4gqlLEXKwvWr+aDvaMG7fa7DzKhhaAiEA2sFdeahVN1LZFJMT8FygQKxho9Gxi84FWvEf3vxQ3Y8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICDcKNn6JiNPo6NqI/sWOb8nGwdyJxslU7HODmN7gJz/AiAuVXJCJawWJRqSNCa/OjHZmx17n80c6BcC0uukdiApOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778626},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7d7ee19df6f1e99efa14def456f63ef38c44658e","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"11.19.1","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.57_1790872603584_0.04429513731267165","host":"s3://npm-registry-packages-npm-production"}},"0.1.59":{"name":"@mechris3/glassbox","version":"0.1.59","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.59","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"1ea156d968c0932a3b4564770e5145fca69253c8","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.59.tgz","fileCount":178,"integrity":"sha512-vE65EQaN83PUySRsQNdzmfZGIoq2Lobw9YlyqQ9o/oRAb4kMKVFGL6bE0nl2sPc0Gdq2DoKFBjZbsXR4d4Yq+w==","signatures":[{"sig":"MEQCICwrjXngQefrr05KcDGzLEsET7zD6fcq2+Wjas+L9xLsAiAq8wForNBW69nNCnLuFIalkZtHELps2Lrj2lkjC0+48g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDBMS2n8/t19XTfkmqxNzmsPzZjeUT/Sp3QsebSjopxLAIhALabxOrwsyqfUiPbjQYKM+VbPPi0Ynx3dpN6/7A347pA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778626},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"90a6d53740c800c621dd2a076c67a9e4ed3c2f3c","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"10.9.8","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.59_1790873064609_0.7533764771708897","host":"s3://npm-registry-packages-npm-production"}},"0.1.60":{"name":"@mechris3/glassbox","version":"0.1.60","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.60","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"a159761f9233fbf363585288534d202b84d43fc6","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.60.tgz","fileCount":178,"integrity":"sha512-Yf0t3IEAyd8fNb/NI2f7YxC05+3VvDX2VEXdlKBVPLJagHOOrz/kyxwHOGnpdy2/AdfVgWlQUmib2BCCVucDEA==","signatures":[{"sig":"MEUCIQCTSUIZijq2SWMpJ4oPJIUOgquXe4SvEk2cGDTVqbH6VgIgLWz3XSgToGm4e36ypldDjJzNP8pR+NMSBi0w787X51w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGa4SsokCoVQFAIsIiCvOIwsjQotXiL72sv0Qc7EjBmoAiBI9I4TB08Nlo61jliGPhdgKG8kwjncsY7PYBmsnefbIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778626},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"4956acb28bcdea805ec941b80e8b77d888204171","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"10.9.8","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.60_1790873090560_0.29664688648933235","host":"s3://npm-registry-packages-npm-production"}},"0.1.61":{"name":"@mechris3/glassbox","version":"0.1.61","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.61","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"921aeb1aba27514dc6ce14550d39597e7b6300b9","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.61.tgz","fileCount":178,"integrity":"sha512-hk+0ckF9EsUT36Y7yBZX2dnWWXQSWUmuxyAhw5ZQhNK6ikyuTuFjidc9bExd0UwJ9RWQ4u2W5wmZPJQ5UwydsQ==","signatures":[{"sig":"MEUCIEnTHqluQC3gsuOz1KNJokYB/SEJ+n/WsGWSu38zYyYAAiEA5yMesI3ofT8V1S/zFXnar10qfaWi+xabQwapFl8A2Bo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBftxc82bYpJbfxfULQX26LLE7XIJCFoe9nYX9mFGLUJAiEA4esA11hro+eknOHpp0iruvj13cvcXbStlKYL89Mrzxk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":780699},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"45f6b29e36141991b1dfa4a521b6467fa4098857","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"10.9.8","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.61_1790873972498_0.0746010624113238","host":"s3://npm-registry-packages-npm-production"}},"0.1.62":{"name":"@mechris3/glassbox","version":"0.1.62","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.62","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"cd05604e6c6bafd53e7f64bf28b8e791e3ca2cbe","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.62.tgz","fileCount":178,"integrity":"sha512-Pqhbe/ybWfOSWbg/nPLwhhicOCnIzSL2s/9Os/VqjKS+i9OTu8WAoIYXynkbSvu/w00K1aM+proSQd+mFIpsig==","signatures":[{"sig":"MEMCH1IqqXbVXwfRdz4W0B8pEKK1cMeRlHZ2cMm+v+r9GyECIHkb/i5tX5PdSs0TH8slIaYJ2J6YOcXv9On69qr/yjSK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFNLIAI/00vztCaKzY8HDM6dEQ9QG6K7W4d2XQgEup77AiEAmUjpix6a6Sb4UiN8YiHIpSADcQ7otZK9cbtEYaiGeC0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":780699},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"26f3efbeb07a97a6413582e3a9e17f296eef06f8","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"10.9.8","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.62_1790874043048_0.9040361671929693","host":"s3://npm-registry-packages-npm-production"}},"0.1.63":{"name":"@mechris3/glassbox","version":"0.1.63","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"author":"","license":"UNLICENSED","_id":"@mechris3/glassbox@0.1.63","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"a336ce7041646d2159d2612535997c7ff81568b9","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.63.tgz","fileCount":178,"integrity":"sha512-Wgz7xcACIfGiXJ1S6rNxd+oOtmuKDSdAbOB0IdJsIHyrfI+crbf7UHYHksOfJjRQ3G1XZGn3LeoCTS+pBhbA6w==","signatures":[{"sig":"MEUCIBufsaMiJezDCC8WWRG+5Ykx3OuYmwETL8XG+vllP1+HAiEAvMrWx/u/Np341Bs9sK54QtnUEzLket2p60cTVH2RBf8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD9QjYizYwrLCzuqIgQSAiUxlr/OAR/o6uJ8OiAZD3YYwIgMPRujJ2YhXJbzgumpvWaIK5DEuO0KaRh89UPoUGxPE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":781103},"main":"dist/src/index.js","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"740ca004ed0cf8f4dfac27c6585498f4f0b2b0fa","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"_npmVersion":"10.9.8","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"tmp":"tmp/glassbox_0.1.63_1790875303251_0.6661773539441087","host":"s3://npm-registry-packages-npm-production"}},"0.1.64":{"_id":"@mechris3/glassbox@0.1.64","bin":{"glassbox":"dist/bin/glassbox.js"},"dist":{"shasum":"99544c617b7d847a6c122b72c0af503ef2626ccb","tarball":"https://registry.npmjs.org/@mechris3/glassbox/-/glassbox-0.1.64.tgz","fileCount":178,"integrity":"sha512-AGU04sUViNMZLiRJYSHzpxWYbh8KlFDFQ2s4PYshhsWL1bko5zHBOtiIpe2opqeK9f+BtGr9zRRTWb3Z02/NbQ==","signatures":[{"sig":"MEUCIQCJW5EWj0C8iaC4rsZUrDBtjCrHRp4SL0+qWHCP3s3OugIgfbF9U+IuU2F/11A4/rX9zQPOP73jOghUh6BHx6cn69E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDoj6ZbXU7fCZkUBhOZN55MwzNwHQ4uwjE6RuJcUHHUuQIgemFHdkvgVHJWmkRNSatxiDN7recvgXhd1W/8AlMKpAI="}],"unpackedSize":781162},"main":"dist/src/index.js","name":"@mechris3/glassbox","types":"dist/src/index.d.ts","author":"","engines":{"node":">=20.0.0"},"gitHead":"27e25fb554b904954ece3c58bf31153a705f4288","license":"UNLICENSED","scripts":{"dev":"tsx watch bin/glassbox.ts serve","lint":"eslint src/ bin/","test":"vitest run","build":"tsc","start":"node dist/bin/glassbox.js serve","release":"npm publish --access public","test:e2e":"tsx scripts/test-e2e.ts","build:all":"npm run build --prefix ui && tsc","sample-app":"node examples/sample-app/server.js","test:watch":"vitest","build:watch":"tsc --watch","prepublishOnly":"npm run build:all"},"version":"0.1.64","_npmUser":{"name":"mechris3","email":"mechris3@hotmail.com"},"keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"_npmVersion":"10.9.8","description":"Debugger-style browser automation test runner with live execution control via CDP","directories":{},"maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","tsx":"^4.21.0","cors":"^2.8.5","glob":"^11.0.0","jiti":"^2.6.1","express":"^4.21.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@types/ws":"^8.5.0","typescript":"^5.6.0","@types/cors":"^2.8.17","@types/node":"^22.0.0","@types/express":"^5.0.0","devtools-protocol":"^0.0.1648812"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/glassbox_0.1.64_1790876216282_0.35740089936457053"}}},"time":{"created":"2026-06-24T17:24:36.609Z","modified":"2026-10-01T17:36:57.049Z","0.1.0":"2026-06-24T17:24:36.974Z","0.1.1":"2026-06-25T16:59:19.066Z","0.1.2":"2026-06-25T17:12:47.984Z","0.1.3":"2026-06-26T07:52:20.765Z","0.1.4":"2026-06-26T08:02:35.773Z","0.1.5":"2026-06-26T08:43:48.690Z","0.1.6":"2026-06-26T08:47:53.696Z","0.1.7":"2026-06-26T08:56:51.076Z","0.1.8":"2026-06-26T09:04:39.241Z","0.1.9":"2026-06-26T10:12:37.537Z","0.1.10":"2026-06-26T10:20:52.788Z","0.1.11":"2026-06-26T10:28:01.171Z","0.1.12":"2026-06-26T10:32:05.748Z","0.1.13":"2026-06-26T10:48:37.983Z","0.1.14":"2026-06-26T10:56:22.844Z","0.1.15":"2026-06-26T11:12:31.344Z","0.1.16":"2026-06-26T11:35:04.957Z","0.1.17":"2026-06-26T11:45:30.060Z","0.1.18":"2026-06-26T11:49:48.992Z","0.1.19":"2026-06-26T12:13:27.675Z","0.1.20":"2026-06-26T12:42:24.540Z","0.1.22":"2026-06-26T13:09:15.981Z","0.1.23":"2026-06-26T13:30:33.872Z","0.1.24":"2026-06-26T13:40:59.045Z","0.1.26":"2026-06-26T13:54:10.842Z","0.1.27":"2026-06-26T14:02:59.983Z","0.1.28":"2026-06-26T14:07:30.845Z","0.1.29":"2026-06-26T14:22:41.342Z","0.1.30":"2026-06-26T14:37:06.134Z","0.1.31":"2026-06-26T14:56:32.576Z","0.1.32":"2026-06-30T08:56:05.730Z","0.1.33":"2026-06-30T10:56:18.423Z","0.1.34":"2026-06-30T11:11:55.892Z","0.1.35":"2026-06-30T11:21:00.687Z","0.1.36":"2026-07-02T13:49:55.547Z","0.1.37":"2026-07-02T13:58:39.283Z","0.1.38":"2026-07-02T14:09:02.153Z","0.1.39":"2026-07-02T14:30:42.014Z","0.1.40":"2026-07-02T14:42:45.551Z","0.1.41":"2026-07-02T14:53:37.097Z","0.1.42":"2026-07-02T15:01:14.673Z","0.1.43":"2026-07-02T15:13:14.691Z","0.1.44":"2026-07-02T15:32:54.121Z","0.1.45":"2026-07-02T15:57:03.731Z","0.1.46":"2026-07-02T16:21:13.219Z","0.1.47":"2026-07-02T17:13:21.199Z","0.1.48":"2026-07-03T10:30:04.438Z","0.1.49":"2026-07-22T18:09:31.151Z","0.1.50":"2026-07-22T18:54:39.901Z","0.1.51":"2026-07-22T19:54:43.301Z","0.1.53":"2026-07-23T09:05:36.451Z","0.1.54":"2026-09-30T15:29:35.164Z","0.1.55":"2026-09-30T16:19:30.052Z","0.1.56":"2026-10-01T09:35:10.759Z","0.1.58":"2026-10-01T16:36:42.841Z","0.1.57":"2026-10-01T16:36:43.707Z","0.1.59":"2026-10-01T16:44:24.702Z","0.1.60":"2026-10-01T16:44:50.682Z","0.1.61":"2026-10-01T16:59:32.624Z","0.1.62":"2026-10-01T17:00:43.146Z","0.1.63":"2026-10-01T17:21:43.345Z","0.1.64":"2026-10-01T17:36:56.383Z"},"license":"UNLICENSED","keywords":["browser-automation","cdp","chrome-devtools-protocol","test-runner","debugger","e2e"],"description":"Debugger-style browser automation test runner with live execution control via CDP","maintainers":[{"name":"mechris3","email":"mechris3@hotmail.com"}],"readme":"# @mechris3/glassbox\n\nDebugger-style browser automation test runner using Chrome DevTools Protocol (CDP) directly. No Puppeteer, no Playwright — just raw WebSocket + JSON.\n\nFeatures:\n- Live execution control: breakpoints, pause/resume, step-through\n- Visual dashboard with real-time action streaming\n- Headless batch runner for CI\n- Diagnostic data collection (console errors, network, performance)\n- MCP server for AI agent integration\n- Browser and profile auto-detection\n\n## Quick Start\n\n> **Note:** There is an unrelated npm package also called `glassbox` (a code-review tool).\n> Always use the full scoped name `@mechris3/glassbox` with `npx` to avoid resolving the wrong package.\n\n```bash\n# Install\nnpm install @mechris3/glassbox\n\n# Scaffold a project (creates glassbox.config.ts + directories)\nnpx @mechris3/glassbox init\n\n# Write journeys and page objects (see below), then:\nnpx @mechris3/glassbox serve     # Dashboard UI at http://localhost:3001\nnpx @mechris3/glassbox run       # Headless batch run (for CI)\n```\n\n`glassbox init` creates this structure in your current directory:\n\n```\nmy-tests/\n├── package.json          ← dependency + scripts\n├── glassbox.config.ts    ← created by init\n├── journeys/             ← put your journey files here\n└── page-objects/         ← put your page objects here\n```\n\nThe generated `package.json` includes convenience scripts:\n\n```bash\nnpm run serve        # Start the visual dashboard at http://localhost:3001\nnpm run run          # Run all journeys headless (exit 0 = pass, 1 = fail)\nnpm run run:headed   # Run with a visible browser window\n```\n\nAfter running `npx @mechris3/glassbox init`, install dependencies and you're ready:\n\n```bash\nnpm install\nnpm run serve\n```\n\nYou can set this up as a standalone project or as a subfolder within an existing frontend project:\n\n```\n# Standalone\nmy-e2e-tests/\n├── package.json\n├── glassbox.config.ts\n├── journeys/\n└── page-objects/\n\n# Inside an existing project\nmy-app/\n├── src/\n├── package.json\n└── e2e/\n    ├── glassbox.config.ts\n    ├── journeys/\n    └── page-objects/\n```\n\nEither way, run `@mechris3/glassbox` commands from the directory containing your `glassbox.config.ts`.\n\n## Prerequisites\n\n- Node.js 20+\n- A Chromium-based browser (Chrome, Brave, Edge)\n\n## Environment Variables\n\nConfig files, hooks, journeys, and page objects are all TypeScript running in Node — `process.env` works everywhere:\n\n```typescript\n// page-objects/login.page.ts — credentials from env\nasync login() {\n  const user = process.env.TEST_USERNAME ?? 'default@test.com';\n  const pass = process.env.TEST_PASSWORD ?? 'password123';\n  await this.fill('[data-testid=\"email\"]', user);\n  await this.fill('[data-testid=\"password\"]', pass);\n  await this.click('[data-testid=\"submit\"]');\n}\n\n// glassbox.config.ts — headless in CI\nbrowser: { headless: process.env.CI === 'true' }\n\n// helpers/before-each.ts — API key for test data service\nconst apiKey = process.env.TEST_API_KEY;\nawait fetch('http://...', { headers: { Authorization: `Bearer ${apiKey}` } });\n```\n\n## Consumer Usage\n\n### Page Objects\n\nExtend `BasePage` — no constructor needed. The following methods are available via `this`:\n\n| Method | Description |\n|--------|-------------|\n| **Interaction** | |\n| `click(selector)` | Click an element |\n| `hover(selector)` | Hover over an element |\n| `focus(selector)` | Focus an element |\n| `pressKey(key)` | Press a key ('Enter', 'Tab', 'Escape', etc.) |\n| `fill(selector, value)` | Clear and set an input's value |\n| `type(selector, value, {delay?})` | Type character by character |\n| `uploadFile(selector, filePath)` | Upload a file to a file input |\n| `selectByIndex(selector, index)` | Select dropdown option by index |\n| `selectByValue(selector, value)` | Select dropdown option by value |\n| `selectByText(selector, text)` | Select dropdown option by visible text |\n| **Queries** | |\n| `getText(selector)` | Get element's text content |\n| `getInputValue(selector)` | Get input's current value |\n| `getAttribute(selector, attr)` | Get an attribute value |\n| `countElements(selector)` | Count matching elements |\n| `isVisible(selector)` | Check if element is visible |\n| `isDisabled(selector)` | Check if element is disabled |\n| **Waiting** | |\n| `waitForSelector(selector, {timeout?})` | Wait for element to appear |\n| `waitForHidden(selector, {timeout?})` | Wait for element to disappear |\n| `waitForText(selector, expected, {timeout?})` | Wait until text content matches |\n| `waitForCount(selector, expected, {timeout?})` | Wait until element count matches |\n| `waitForTimeout(ms)` | Fixed delay (use sparingly) |\n| **Navigation** | |\n| `goto(url)` | Navigate (relative URLs resolve against target) |\n| `clickAndWaitForNavigation(selector)` | Click and wait for page load |\n| `getCurrentUrl()` | Get the current page URL |\n| **Advanced** | |\n| `evaluate(script)` | Execute arbitrary JS in the page |\n| `clearSession(origin?)` | Clear cookies and storage |\n| `readClipboard()` | Read text from clipboard |\n| `addInitScript(source)` | Register JS to run before page scripts on every navigation |\n| `removeInitScript(identifier)` | Remove a previously registered init script |\n| `interceptRequests(patterns, handler)` | Intercept network requests and return mock responses |\n| `stopIntercepting()` | Disable all request interception |\n\nExample:\n\n```typescript\n// page-objects/login.page.ts\nimport { BasePage } from '@mechris3/glassbox';\n\nexport class LoginPage extends BasePage {\n  private selectors = {\n    username: '[data-testid=\"username\"]',\n    password: '[data-testid=\"password\"]',\n    submit: '[data-testid=\"submit\"]',\n  };\n\n  async login(user: string, pass: string) {\n    await this.fill(this.selectors.username, user);\n    await this.fill(this.selectors.password, pass);\n    await this.click(this.selectors.submit);\n  }\n\n  async verifyLoggedIn(expectedName: string) {\n    const name = await this.getText('[data-testid=\"display-name\"]');\n    if (name !== expectedName) throw new Error(`Expected \"${expectedName}\", got \"${name}\"`);\n  }\n}\n```\n\n### Journeys\n\nExtend `Journey` — use `this.page()` to create page objects:\n\n```typescript\n// journeys/login.journey.ts\nimport { Journey } from '@mechris3/glassbox';\nimport { LoginPage } from '../page-objects/login.page';\n\nexport class LoginJourney extends Journey {\n  loginPage = this.page(LoginPage);\n\n  async execute() {\n    await this.loginPage.login('testuser', 'password123');\n    await this.loginPage.verifyLoggedIn('testuser');\n  }\n}\n```\n\n### Config\n\nAll paths in the config are relative to the config file's directory:\n\n```\nmy-tests/\n├── glassbox.config.ts\n├── journeys/\n│   └── login.journey.ts\n├── page-objects/\n│   └── login.page.ts\n└── helpers/\n    └── before-each.ts\n```\n\n```typescript\n// glassbox.config.ts\nimport { defineConfig } from '@mechris3/glassbox';\n\nexport default defineConfig({\n  journeys: './journeys/**/*.journey.ts',\n  browser: {\n    defaultViewport: { width: 1280, height: 720 },\n    headless: false,\n  },\n  server: { port: 3001 },\n  testData: {\n    beforeEach: './helpers/before-each.ts',\n  },\n});\n```\n\n### Best Practices\n\n### Journeys are pure orchestration\n\nA journey's `execute()` method should contain **only** calls to page object methods — no conditionals, no assertions, no direct selectors:\n\n```typescript\n// Good — reads like a user story\nasync execute() {\n  await this.loginPage.loginAs('alice@company.com', 'alice123');\n  await this.dashboardPage.verifyLoaded();\n  await this.dashboardPage.navigateToProjects();\n  await this.projectsPage.verifyProjectCount(6);\n}\n\n// Bad — logic leaking into journey\nasync execute() {\n  await this.fill('[data-testid=\"email\"]', 'alice@company.com');\n  const count = await this.getText('[data-testid=\"count\"]');\n  if (parseInt(count) !== 6) throw new Error('wrong');\n}\n```\n\n### Page objects own everything\n\n- **Selectors** — store in a private `selectors` object, never expose them\n- **Interaction** — `loginAs()`, `addTask()`, `filterByStatus()` — intention-revealing names\n- **Validation** — `verifyLoaded()`, `verifyErrorMessage()`, `verifyTaskCount()` — throw descriptive errors on failure\n\n```typescript\nexport class ProjectsPage extends BasePage {\n  private selectors = {\n    projectCard: '[data-testid=\"project-card\"]',\n    filterActive: '[data-testid=\"filter-active\"]',\n    count: '[data-testid=\"project-count\"]',\n  };\n\n  async filterByActive() {\n    await this.click(this.selectors.filterActive);\n  }\n\n  async verifyProjectCount(expected: number) {\n    const count = await this.getText(this.selectors.count);\n    if (count !== String(expected)) {\n      throw new Error(`Expected ${expected} projects, got ${count}`);\n    }\n  }\n}\n```\n\n### Selector strategy\n\n- Always use `[data-testid=\"...\"]` — never CSS classes, tag names, or DOM structure\n- For repeated items, include an identifier: `[data-testid=\"task-item-${id}\"]`\n- If an element doesn't have a `data-testid`, add one to your app first\n\n### File organisation\n\n```\nglassbox/\n├── page-objects/\n│   ├── login.page.ts        ← one class per file\n│   ├── dashboard.page.ts\n│   └── projects.page.ts\n├── journeys/\n│   ├── login-and-browse.journey.ts\n│   └── create-task.journey.ts\n└── helpers/\n    └── before-each.ts\n```\n\n### Pre-Navigation Scripts (addInitScript)\n\nUse `addInitScript()` to inject JavaScript that runs **before any page code** on every navigation. This is essential for apps that check auth state immediately on load (AWS Amplify/Cognito, Firebase Auth, Supabase) — you need to seed localStorage/cookies *before* the app's scripts execute, not after.\n\n```typescript\n// page-objects/auth.page.ts\nimport { BasePage } from '@mechris3/glassbox';\n\nexport class AuthPage extends BasePage {\n  private initScriptId: string | null = null;\n\n  /** Seed fake auth tokens so the app loads in an authenticated state. */\n  async seedFakeSession(token: string) {\n    this.initScriptId = await this.addInitScript(`\n      // This runs BEFORE Angular/React/Vue bootstraps\n      localStorage.setItem('auth_token', '${token}');\n      localStorage.setItem('user', JSON.stringify({ name: 'testuser', email: 'test@example.com' }));\n    `);\n  }\n\n  /** Remove the fake session so subsequent navigations hit the login page. */\n  async clearFakeSession() {\n    if (this.initScriptId) {\n      await this.removeInitScript(this.initScriptId);\n      this.initScriptId = null;\n    }\n  }\n}\n```\n\n```typescript\n// journeys/dashboard.journey.ts\nimport { Journey } from '@mechris3/glassbox';\nimport { AuthPage } from '../page-objects/auth.page';\nimport { DashboardPage } from '../page-objects/dashboard.page';\n\nexport class DashboardJourney extends Journey {\n  authPage = this.page(AuthPage);\n  dashboardPage = this.page(DashboardPage);\n\n  async execute() {\n    // Register the init script BEFORE navigating\n    await this.authPage.seedFakeSession('fake-jwt-token-here');\n\n    // Now navigate — the init script runs before app code\n    await this.authPage.goto('/');\n\n    // App loads already authenticated — no login redirect\n    await this.dashboardPage.verifyLoaded();\n    await this.dashboardPage.verifyUserName('testuser');\n  }\n}\n```\n\nKey points:\n- Call `addInitScript()` **before** `goto()` — the script only fires on the *next* navigation\n- The script persists across navigations until explicitly removed with `removeInitScript(id)`\n- Use `removeInitScript()` when you need to test unauthenticated flows later in the same journey\n- The script runs in the page context (has access to `localStorage`, `sessionStorage`, `document`, `window`)\n- Multiple init scripts can be registered simultaneously — they run in registration order\n\n### Request Interception (API Mocking)\n\nUse `interceptRequests()` to mock API responses at the network level. This uses CDP's Fetch domain — it intercepts real HTTP requests before they hit the network, so it works with both `fetch()` and `XMLHttpRequest` (Angular HttpClient, Axios, etc.).\n\n```typescript\n// page-objects/api-mock.page.ts\nimport { BasePage, InterceptedRequest, MockResponse } from '@mechris3/glassbox';\nimport { readFileSync } from 'fs';\n\nexport class ApiMockPage extends BasePage {\n  async enableMocks() {\n    await this.interceptRequests(\n      ['http://localhost:80/api/*', 'https://api.example.com/*'],\n      async (request: InterceptedRequest): Promise<MockResponse | null> => {\n        if (request.method === 'GET' && request.url.includes('/v1/users')) {\n          const fixture = readFileSync('./fixtures/users.json', 'utf-8');\n          return { status: 200, body: fixture };\n        }\n        if (request.url.includes('/v1/config')) {\n          return { status: 200, body: JSON.stringify({ featureFlag: true }) };\n        }\n        // Return null to let unmatched requests through to the real server\n        return null;\n      }\n    );\n  }\n\n  async disableMocks() {\n    await this.stopIntercepting();\n  }\n}\n```\n\n```typescript\n// journeys/with-mocks.journey.ts\nimport { Journey } from '@mechris3/glassbox';\nimport { ApiMockPage } from '../page-objects/api-mock.page';\nimport { DashboardPage } from '../page-objects/dashboard.page';\n\nexport class WithMocksJourney extends Journey {\n  apiMock = this.page(ApiMockPage);\n  dashboard = this.page(DashboardPage);\n\n  async execute() {\n    await this.apiMock.enableMocks();\n    await this.dashboard.goto('/');\n    await this.dashboard.verifyUserCount(0); // mocked response has empty array\n    await this.apiMock.disableMocks();\n  }\n}\n```\n\nKey points:\n- Patterns use simple **wildcard matching** (NOT regex): `*` matches any characters, everything else is literal\n- Pattern examples: `http://localhost:80/*`, `*/api/v1/*`, `*://api.example.com/*`\n- The handler is called for each matching request — return a `MockResponse` to mock it, or `null` to let it through\n- Calling `interceptRequests()` again replaces the previous interception (not additive)\n- `stopIntercepting()` disables all interception — requests go directly to the network\n- Content-Type defaults to `application/json` if the response body starts with `{` or `[`\n- CORS headers (`Access-Control-Allow-Origin: *`) are added automatically\n- **Lifecycle:** mocks live for the duration of the journey — each journey runs in its own process with a fresh CDP session, so mocks are automatically cleaned up between journeys. You only need `stopIntercepting()` if you want to disable mocks mid-journey.\n\n## Lifecycle Hooks\n\nRun code before/after journeys for test data setup and cleanup:\n\n```typescript\n// glassbox.config.ts\nexport default defineConfig({\n  hooks: {\n    globalSetup: './helpers/global-setup.ts',    // Once before all journeys\n    beforeEach: './helpers/before-each.ts',       // Before each journey\n    afterEach: './helpers/after-each.ts',         // After each journey (even on failure)\n    globalTeardown: './helpers/global-teardown.ts', // Once after all journeys\n  },\n});\n```\n\nHook files export a default async function. Use them for any setup/teardown your tests need — resetting databases, seeding test data, clearing caches, etc:\n\n```typescript\n// helpers/before-each.ts\nimport type { HookContext } from '@mechris3/glassbox';\n\nexport default async function(context: HookContext) {\n  // Call your test API to reset state (can be any URL, not necessarily the target app)\n  await fetch('http://localhost:4000/api/test-data/reset', { method: 'POST' });\n\n  // Or seed specific data\n  await fetch('http://localhost:4000/api/test-data/seed', {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify({ users: ['testuser'], projects: 3 }),\n  });\n}\n```\n\n`targetUrl` comes from the dashboard settings panel (the URL field) or the `--url` flag when using the CLI. It's the URL of the app you're testing.\n\n`HookContext` contains:\n\n| Property | Available in | Description |\n|----------|-------------|-------------|\n| `targetUrl` | All hooks | The app URL being tested |\n| `journeyName` | beforeEach, afterEach | Display name of the current journey |\n| `journeyPath` | beforeEach, afterEach | File path of the current journey |\n| `journeyStatus` | afterEach only | `'passed'` or `'failed'` |\n\n## CLI Commands\n\nRun all commands from the directory containing your `glassbox.config.ts`:\n\n```bash\ncd my-tests/   # where your glassbox.config.ts lives\n```\n\n> Once you've run `npm install` in your project, use `npm run serve` / `npm run run` — these\n> resolve the local `node_modules/.bin/glassbox` (the right one) automatically.\n> When running outside a project with `npx`, always use the full scoped name:\n> `npx @mechris3/glassbox <command>`\n\n**Dashboard (visual UI):**\n```bash\nnpx @mechris3/glassbox serve         # Start dashboard at http://localhost:3001\n```\nOpen the URL in your browser to see journeys, run them, set breakpoints, pause/step, and inspect results visually.\n\n**Headless runner (CI / terminal):**\n```bash\nnpx @mechris3/glassbox run                          # Run all journeys, exit 0/1\nnpx @mechris3/glassbox run login                    # Only journeys matching \"login\"\nnpx @mechris3/glassbox run --url http://localhost:3000  # Specify app URL\nnpx @mechris3/glassbox run --headed                 # Show the browser while running\nnpx @mechris3/glassbox run --no-fail-fast           # Don't stop at first failure\n```\n\n**Other:**\n```bash\nnpx @mechris3/glassbox init          # Scaffold config + directories in current dir\nnpx @mechris3/glassbox mcp           # Start MCP server for AI agent integration\n```\n\n## MCP Server (AI Integration)\n\nThe MCP server lets AI agents (Kiro, Claude) debug failed journeys by querying diagnostic data.\n\nAdd to your `.kiro/settings/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"glassbox\": {\n      \"command\": \"npx\",\n      \"args\": [\"@mechris3/glassbox\", \"mcp\"],\n      \"env\": { \"GLASSBOX_URL\": \"http://localhost:3001\" },\n      \"cwd\": \"/absolute/path/to/your/glassbox-tests\"\n    }\n  }\n}\n```\n\n`cwd` must be an **absolute path** to the directory containing your `glassbox.config.ts` and `node_modules/`. Kiro does not resolve relative paths in MCP configs.\n\nRequires `glassbox serve` to be running. The AI gets these tools:\n\n| Tool | Purpose |\n|------|---------|\n| `getDiagnosticSummary` | Summary of diagnostic counts (call first) |\n| `getConsoleErrors` | console.error/warn with stack traces |\n| `getExceptions` | Unhandled JS exceptions with source locations |\n| `getNetworkFailures` | Failed HTTP requests (4xx/5xx/network errors) |\n| `getNetworkLog` | All XHR/Fetch requests with status codes |\n| `getTimeline` | Chronological event stream |\n| `getPerformanceMetrics` | Heap size, DOM nodes, layout recalculations |\n| `listJourneys` | Available journey files |\n| `runJourney` | Run by name/ID (browser stays open on failure) |\n| `getDomSnapshot` | Inspect page HTML or a specific element |\n| `getScreenshot` | Capture page screenshot (base64 PNG) |\n| `getAccessibilityTree` | Full ARIA tree for understanding page structure |\n| `resetDiagnostics` | Clear data + close live session before re-run |\n\nThe AI can identify journeys by name (`\"login\"`), ID (`\"login-and-add-todos\"`), or full path. After a failure, the browser stays open so `getDomSnapshot` and `getScreenshot` can inspect the failed state.\n\n## License\n\nProprietary. All rights reserved.\n","readmeFilename":"README.md"}