{"_id":"jev-agent-browser","_rev":"10-8566fb8c3d8e4ef4403cc77b78f4e705","name":"jev-agent-browser","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"jev-agent-browser","version":"0.1.0","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"author":{"name":"forvela"},"license":"MIT","_id":"jev-agent-browser@0.1.0","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"homepage":"https://github.com/forvela/jev-agent-browser#readme","bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"bin":{"jev":"src/cli.js"},"dist":{"shasum":"5df0b76fde3bea06c77a4e889fb352c66ab3ba38","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.1.0.tgz","fileCount":17,"integrity":"sha512-3XL1yQGQTcyE2i2RH4h9t+0sAnI/vIlfgeqcjqYhDEpFF93GvG3VHEwlAKDSmmsA0J+ovbpgcRu2Y30w+31zWg==","signatures":[{"sig":"MEQCICmjMS7+LxWwAcILSrTLG227VqiTN5huy55E7EsNNAzBAiBlWLZFahwhj9b0BQ1KCuMGtxIz0lDfp9eTrKK0aPxerA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84068},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"f19a2c325e1f04686cbe673feb27099a8308815d","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js"},"_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/jev-agent-browser_0.1.0_1789820550636_0.5470898473271895","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"jev-agent-browser","version":"0.1.1","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"author":{"name":"forvela"},"license":"MIT","_id":"jev-agent-browser@0.1.1","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"homepage":"https://github.com/forvela/jev-agent-browser#readme","bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"bin":{"jev":"src/cli.js"},"dist":{"shasum":"f303ebcd8fbf70ad9aa793dc18f7fa0fb967f81a","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.1.1.tgz","fileCount":17,"integrity":"sha512-jd7G6Fnxlg8CzXlLT+CR04s+L4HMSzVGlOXUVY6uUcY4txnsWdq8+V8iqKitNpyCjVAJjC5Cbs1t9qwHjfR4/A==","signatures":[{"sig":"MEYCIQC4IDZDc+EIpVnt8d5q+Hft0e6W/dyd3+U7q6EWgemlgAIhAN1WfGW1yvE3TF+IVG/hn+KFFEKi6nWqfF0GexqfUM0o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDQta6xj/Wwqjirj3fZMs6rRQ/X4oMnRm64swqeyL/DZgIgDfu/xtQozSt0sgjbWA079bmQRJLi4xNbuhGjEnE13FI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83865},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"8611a5a58c3692ef2bbb2f3164a7b4ae5fbb5394","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js"},"_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/jev-agent-browser_0.1.1_1789820913882_0.31165037042719423","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"jev-agent-browser","version":"0.1.2","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"author":{"name":"forvela"},"license":"MIT","_id":"jev-agent-browser@0.1.2","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"homepage":"https://github.com/forvela/jev-agent-browser#readme","bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"bin":{"jev":"src/cli.js"},"dist":{"shasum":"7e8d9b4ef4e50a8f9541236d0699443095cb7e20","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.1.2.tgz","fileCount":17,"integrity":"sha512-+Pba5jiD918Tff/PZqaFMEMtqVDFxfC9/2rZ+01W2GfdroC+ApSjSQHgjiXAe0oen1meC+IM6mq+trTymUIasQ==","signatures":[{"sig":"MEYCIQCT6H8zZeo9G8cMGqSyyobLJcuci4eDthcxOFucli1r3wIhAMl7fIEhl5HHBswP8FB3n6ac40ZnXbu0e84pwUaZoHag","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCgCUPq5Zv6Z/vCYJgho/6vJ6IRQafgPjplK2a8OP2PmwIhAKKqyJdG79zkWQKJtzxMyt6mu9/o3NAgd5UHiNEATGdN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84275},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"f36a084014386e2190fd89395c10b9039fcaf916","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js"},"_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/jev-agent-browser_0.1.2_1789821160377_0.33947767151775343","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"jev-agent-browser","version":"0.1.3","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"author":{"name":"forvela"},"license":"MIT","_id":"jev-agent-browser@0.1.3","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"homepage":"https://github.com/forvela/jev-agent-browser#readme","bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"bin":{"jev":"src/cli.js"},"dist":{"shasum":"530f36f66f42d9cb8409b7c5814387925453cfec","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.1.3.tgz","fileCount":17,"integrity":"sha512-fTqYYg2RiZ2YWbbS+ANDPtO+c6sqaxxPOi0IzUw0eNOysCazh+uLJLsibwNRHktTBvPHPDW22EL/LVN4ZWajJg==","signatures":[{"sig":"MEUCICCIQ5uMNCzeDHm/3FROnDMGbV0kSx0c4XEAGBbnt2B5AiEAhDOIjypANmGmVQLjraE/kYQnRL/AAEHbBWeMF+E+IgY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDsx8wgfi6bGK2Voh14J1DkJ8Jm9KvU4bo4WnoYwZO27gIhAM+qw+3kytnsrC5HEjXvDUQia51/mxRMe1fijteklmOz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85503},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"246d1f3c57c1b35b9ca74b9804b2a72d10e061df","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js"},"_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/jev-agent-browser_0.1.3_1789821795543_0.5524941087446773","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"jev-agent-browser","version":"0.1.4","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"author":{"name":"forvela"},"license":"MIT","_id":"jev-agent-browser@0.1.4","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"homepage":"https://github.com/forvela/jev-agent-browser#readme","bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"bin":{"jev":"src/cli.js"},"dist":{"shasum":"7bc42a9dbd65b0c875d8eb6b662e871aa9d36f10","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.1.4.tgz","fileCount":17,"integrity":"sha512-7J5hK+P7NU/J9ZD1knJf271pgDATjca2Ji5tBYN2xcRfUC0vt0rssVK75BDLlgUZg1tEnxUmY90fpgmm/LsiJA==","signatures":[{"sig":"MEUCIQCGXGbC83vdAuMe/7q2EwhGlKwe7/GxUqpv036xOQCp7AIgGwtuWFW/l68LtEqM9YBwnbZ117O+zBXN3o9+oEITTd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHZkD+TuyfdA5RnExu54hLnsTuPIVZLOeDN+wvMzaT75AiBbNGj787BtC9eZI+pyqWHti+ueDPexeTJLS6AOdTcBhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87378},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"59cdaa7ac52169b77d8a9e1be85097ff57cb1440","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js"},"_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/jev-agent-browser_0.1.4_1789970034366_0.5341266521790007","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"jev-agent-browser","version":"0.1.5","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"author":{"name":"forvela"},"license":"MIT","_id":"jev-agent-browser@0.1.5","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"homepage":"https://github.com/forvela/jev-agent-browser#readme","bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"bin":{"jev":"src/cli.js"},"dist":{"shasum":"01409836e5eed17256c91c61796e2b2f993180aa","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.1.5.tgz","fileCount":17,"integrity":"sha512-OYGyhjMDk3o6WfRi6/iKm/9wz6Fkf2lAMN5MY35OBlxArCUtROkhvIoAHI8gKiZ6fzDcBE2aMk4y0FFgBy5aEg==","signatures":[{"sig":"MEQCIGJbgkOjqBYTeDSFmGgJLjsTx0XQo9cLuuyPM0cg6+MOAiBXHRCOjycGQWe9VLcALXH69ErZgOR/AbbG8kbzGwn7Jg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQClF+SCBfyhERHLq1xoWgO8abRWj7Ww+bkW+yCm217oIAIgCPG/HbkRP+VaWIz7WJN9ga2asy1rzfMxneFMr3xcfg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87481},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"46faa702e278213c8a71844b6f6d6446a36b6668","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js"},"_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/jev-agent-browser_0.1.5_1789970820635_0.45598711723962704","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"jev-agent-browser","version":"0.1.6","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"author":{"name":"forvela"},"license":"MIT","_id":"jev-agent-browser@0.1.6","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"homepage":"https://github.com/forvela/jev-agent-browser#readme","bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"bin":{"jev":"src/cli.js"},"dist":{"shasum":"1c32e530a70c9f8b4864240c496a01f5160866ba","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.1.6.tgz","fileCount":17,"integrity":"sha512-h1355EK/SqcmzqYSwrYzvzS9bkG79CAGAarLnbaFSy5itHCBZ7R5sRlmvYecDcgp7y1krmtdZI3mrwxVXpqmAA==","signatures":[{"sig":"MEUCIBGgIQXZvvTsVneZwYeSo15YSLwb/9rfSRxbxCbwGANnAiEAyzXTuDAt/WEnUPnzUys9sJ4M768e6YbHmBP1uuIijfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCHCwVhLiwL/9owXG35RYQMSOFxqWyEFuMSZdMRSUlCqgIgAOyAoRx6++lj72Md7Sjm48qKmJRrEN7y6UQXT9iRBtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89323},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"4cd2ad31d3b70ac2f6849fa8c207b0c2ef6f4e46","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js"},"_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/jev-agent-browser_0.1.6_1789972811619_0.27046902065300427","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"jev-agent-browser","version":"0.1.7","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"author":{"name":"forvela"},"license":"MIT","_id":"jev-agent-browser@0.1.7","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"homepage":"https://github.com/forvela/jev-agent-browser#readme","bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"bin":{"jev":"src/cli.js"},"dist":{"shasum":"f2ab3acfe9a3ed93040dc8e361bb34f861bf2ef3","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.1.7.tgz","fileCount":17,"integrity":"sha512-LZ4IBDXF7xoTKsCaWfqDgwzFQgKioJpG+CCc5VtfzgQULJvDf+DeU2258nb1U0JwCpcBWyO0gCJDKxojetCaIw==","signatures":[{"sig":"MEQCID0LAXT++H38g9Zssep43Hbp+MJov18rv+VGX0e8utwWAiBbdO5kp/Vs8QALNAG+yNQQqzhztEPMQaa9Wsh15xQdsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDmFJqD4sSTBSMYJjgRMh8InifSSJrFKZ1HcIPC4iRbGAiBZXiyfDSWbycX3wVGw+dOCnKDIwMOotq7HPrQ7qcxTrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90556},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"b4d4e0284a4b0336f12831ef6fe64ba5d29b1efb","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js"},"_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/jev-agent-browser_0.1.7_1789981525833_0.19193360751038302","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"jev-agent-browser","version":"0.2.0","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"author":{"name":"forvela"},"license":"MIT","_id":"jev-agent-browser@0.2.0","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"homepage":"https://github.com/forvela/jev-agent-browser#readme","bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"bin":{"jev":"src/cli.js"},"dist":{"shasum":"75ec99dfbc4bb10f2d061cb9bb3d119a84b6f1e4","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.2.0.tgz","fileCount":19,"integrity":"sha512-eQDA4BLgo+0fsWNsvm8NgQX9BuV8uTafQfpgjX3tsGotKOaUNZ57+WjI5EdmTtM1MP4BOCo6e/6wPQlMutwfKg==","signatures":[{"sig":"MEUCIQDJxrULI1qyAnepdwUvokGrXgpLYPzwKIAICta2151bXAIgNx9VEC3jjyJ9UrX4VWueT5pV1hisuQUNMFEQUzs7ccY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGgaSP9podT8KdGeoPCVmZyV7fiA29lyZ14uTwz/bYkhAiEA21ggMMmk/xnSYvrv6aRdyH7nm/mZYqrwiQGKFoAzmfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109369},"type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"77a1d11d71551a17426b28fb4b00bba74b155481","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js","smoke:all":"npm run test && npm run smoke","test:unit":"node --test test/loop.test.js","test:jsonl":"node --test test/jsonl.test.js","test:contract":"node --test test/contract.test.js"},"_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/jev-agent-browser_0.2.0_1791008962260_0.12122606389031443","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"_id":"jev-agent-browser@0.2.1","bin":{"jev":"src/cli.js"},"bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"dist":{"shasum":"dce336a60a61f4a13fc6368f7a68351b69e50be0","tarball":"https://registry.npmjs.org/jev-agent-browser/-/jev-agent-browser-0.2.1.tgz","fileCount":19,"integrity":"sha512-qukud2GRtiTaD3ivKxW37ZvBSuFH8WZE/ykJ9yAjWim1zmFht9hq9shDESRBKOeSgFnaufJxlS1fVeu/kQX02g==","signatures":[{"sig":"MEUCIQDrAdkPvQlhrgfd07m44H6bT0G/2ySpMhxsEoLoO6Iq/AIgI3gCJHWS4Hn6f/dqcbmJrNchgFMZSthc2O6f4CzmKgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDUIJHd/AxmO+zmXLvbiJPD5IB2iQadYbGcqHzmY3Hr8AiEA5jgNmkhMUWc6Uv08cuPuKG2pUG7DiERDz9HKME922ZE="}],"unpackedSize":109766},"name":"jev-agent-browser","type":"module","author":{"name":"forvela"},"engines":{"node":">=20"},"exports":{".":"./src/index.js","./package.json":"./package.json"},"gitHead":"eb35251a13770419da5a2e3b78709d24d76acdb3","license":"MIT","scripts":{"test":"node --test","smoke":"node src/smoke.js","start":"node src/cli.js","smoke:all":"npm run test && npm run smoke","test:unit":"node --test test/loop.test.js","test:jsonl":"node --test test/jsonl.test.js","test:contract":"node --test test/contract.test.js"},"version":"0.2.1","_npmUser":{"name":"forvela","email":"artem@runtimehouse.com"},"homepage":"https://github.com/forvela/jev-agent-browser#readme","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"_npmVersion":"11.12.1","description":"Configurable Jev browser research and classification CLI","directories":{},"maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"_nodeVersion":"24.15.0","dependencies":{"@typesafe-ai/sdk":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"agent-browser":">=0.38.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jev-agent-browser_0.2.1_1791009352888_0.3370694304722357"}}},"time":{"created":"2026-09-19T12:22:30.429Z","modified":"2026-10-03T06:35:53.224Z","0.1.0":"2026-09-19T12:22:30.765Z","0.1.1":"2026-09-19T12:28:34.004Z","0.1.2":"2026-09-19T12:32:40.458Z","0.1.3":"2026-09-19T12:43:15.629Z","0.1.4":"2026-09-21T05:53:54.504Z","0.1.5":"2026-09-21T06:07:00.719Z","0.1.6":"2026-09-21T06:40:11.707Z","0.1.7":"2026-09-21T09:05:25.909Z","0.2.0":"2026-10-03T06:29:22.363Z","0.2.1":"2026-10-03T06:35:53.033Z"},"bugs":{"url":"https://github.com/forvela/jev-agent-browser/issues"},"author":{"name":"forvela"},"license":"MIT","homepage":"https://github.com/forvela/jev-agent-browser#readme","keywords":["jev","agent-browser","browser-automation","browser-agent","research","classification","cli"],"repository":{"url":"git+https://github.com/forvela/jev-agent-browser.git","type":"git"},"description":"Configurable Jev browser research and classification CLI","maintainers":[{"name":"forvela","email":"artem@runtimehouse.com"}],"readme":"# jev-agent-browser\n\n[![npm version](https://img.shields.io/npm/v/jev-agent-browser.svg)](https://www.npmjs.com/package/jev-agent-browser) [![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n> Fast, bounded browser execution for parent agents — powered by [Jev](https://typesafe.ai/) and [`agent-browser`](https://github.com/vercel-labs/agent-browser).\n\nGive a parent agent a bounded browser task. Jev chooses the next typed action. `agent-browser` executes it. Ambiguity, repetition, or a stuck state becomes a structured handoff back to the parent.\n\n![jev-agent-browser demo](https://raw.githubusercontent.com/forvela/jev-agent-browser/main/media/huggingface-filter-demo.gif)\n\nA real 17-second, read-only walkthrough: Tasks → Text Classification → Most downloads → PyTorch → `ProsusAI/finbert` → back.\n\n[Watch the full MP4 demo](https://github.com/forvela/jev-agent-browser/blob/main/media/huggingface-filter-demo.mp4) · [Open the original WebM recording](https://github.com/forvela/jev-agent-browser/blob/main/media/huggingface-filter-demo.webm)\n\n## Quick start\n\n```bash\nnpm install -g agent-browser\nnpm install -g jev-agent-browser\nexport TYPESAFE_API_KEY=...\n\njev \\\n  --url https://huggingface.co/models \\\n  --goal 'Open Tasks and select Text Classification' \\\n  --max-steps 6\n\n# A parent may provide semantic goal values without exposing DOM refs.\njev --attach --auto-connect \\\n  --goal 'Open Facebook' \\\n  --inputs-json '[{\"key\":\"destination\",\"kind\":\"url\",\"value\":\"https://facebook.com\"}]'\n```\n\nOr run the CLI without a global Jev install:\n\n```bash\nnpx --package jev-agent-browser jev --help\n```\n\n`agent-browser` is an external peer tool; this package owns the decision loop and research tools, not the browser engine. API keys stay in environment variables; they are never part of the browser page or decision state.\n\n### Persistent decision config\n\nJev loads `~/.config/jev/config.json` automatically for the normal browser loop. Keep routing defaults there, never the secret itself:\n\n```json\n{\n  \"decision\": {\n    \"endpoint\": \"https://openrouter.ai/api/alpha/decisions\",\n    \"apiKeyEnv\": \"OPENROUTER_API_KEY\",\n    \"model\": \"~typesafe/jev-latest\"\n  },\n  \"pacing\": {\n    \"actionDelayMs\": 700\n  },\n  \"maxSteps\": 12\n}\n```\n\n`actionDelayMs` is optional and defaults to `0`; it delays only between successful browser actions. Use `--action-delay 0` to override it for a single run. Configured `tools` are exposed to Jev as bounded `RUN_TOOL` choices; tool paths are resolved relative to the config file.\n\n```json\n{\n  \"tools\": {\n    \"scroll_to_bottom\": {\n      \"path\": \"/path/to/browser-strategies/linkedin/scroll-to-bottom.js\",\n      \"description\": \"On a LinkedIn page, jump to the current feed bottom without opening links\"\n    }\n  }\n}\n```\n\nUse another file with `--config ./jev.config.json`, or set `JEV_CONFIG`. Inject the key separately, for example with `op run`:\n\n```bash\nop run --env-file=<(printf 'OPENROUTER_API_KEY=op://Private/ITEM/credential\\\\n') -- \\\n  jev --url https://example.com --goal 'Open the pricing page'\n```\n\n## What it does\n\n- **Browser tasks** — navigate with a supplied URL, click, type supplied values, select, scroll, wait, and stop safely.\n- **Research** — collect bounded raw evidence from configured pages and browser tools.\n- **Classification** — send one typed, profile-driven batch to Jev.\n- **Agent orchestration** — stream JSONL events or return a structured handoff to the parent agent.\n\n## Why this wrapper\n\n- **Typed actions, not generated browser code.** Jev chooses from a small validated action set.\n- **Real browser control.** Built on `agent-browser`, with CDP attach, auto-connect, sessions, pinning, and native browser options preserved.\n- **Research-ready.** Raw evidence is collected before classification; enrichment happens only after keep rules.\n- **Provider-flexible.** Uses the official TypeSafe SDK by default and can target compatible Decisions endpoints, including OpenRouter.\n- **CLI and Node.js API.** Use it from a shell, or embed the same loop in another agent.\n\n## Where it fits\n\n`jev-agent-browser` is a delegated executor, not another full browser-planning agent:\n\n1. A parent agent owns intent, permissions, and the bounded task.\n2. Jev selects one typed operation and target from the current snapshot.\n3. `agent-browser` performs the native browser action.\n4. The loop returns success or escalates a structured state to the parent when the task is ambiguous, repetitive, or blocked.\n\n```mermaid\nflowchart LR\n  P[Parent agent] -->|bounded task| L[Jev run loop]\n  L -->|snapshot + typed decision| B[agent-browser]\n  B -->|page state + action result| L\n  L -->|success or escalation| P\n```\n\nThis keeps Jev fast and local to execution while the parent remains responsible for reasoning, permissions, and supplying known goal values. Jev owns live snapshot target resolution, navigation, execution, recovery, and resumable browser handoffs.\n\n## Common use cases\n\n### Real-site walkthrough\n\n```bash\njev --url https://huggingface.co/models \\\n  --goal 'Select Text Classification, sort by Most downloads, choose PyTorch, inspect ProsusAI/finbert, then go back and stop.' \\\n  --max-steps 12\n```\n\n### Attach to an existing Chrome tab\n\n```bash\njev --attach --auto-connect --pin-tab \\\n  --goal 'Inspect the current page and report what is visible'\n```\n\nUse a known CDP endpoint with `--attach --cdp 9222`. Native `agent-browser` arguments pass through with repeatable `--browser-arg` flags.\n\n### Run bounded research\n\n```bash\njev --mode research \\\n  --config ./research.json \\\n  --attach --auto-connect --pin-tab \\\n  --jsonl --summary\n```\n\nProfiles define the classification dimensions, keep rules, follow-ups, and allowed tools. The core stays domain-neutral.\n\n### Use it from Node.js\n\n```js\nimport { runLoop } from 'jev-agent-browser';\n\n// Pass an adapter for the externally installed agent-browser or another engine.\nexport async function run(browser) {\n  const result = await runLoop({\n    browser,\n    apiKey: process.env.TYPESAFE_API_KEY,\n    goal: 'Open the pricing page',\n    maxSteps: 5,\n  });\n  console.log(result.status, result.reason);\n}\n```\n\n`runLoop` accepts injected browser and decision seams, so tests and other Node agents can provide their own adapters.\n\n### Goal inputs and resumable handoffs\n\nThe parent agent should pass the raw goal unchanged and add only values it already knows. Jev resolves the live page target from the current snapshot; callers never need to provide transient `@refs`:\n\n```js\nimport { resumeLoop, runLoop } from 'jev-agent-browser';\n\nconst result = await runLoop({\n  browser,\n  goal: 'Open Google and search for pizza delivery',\n  inputs: [\n    { key: 'destination', kind: 'url', value: 'https://google.com' },\n    { key: 'query', kind: 'text', value: 'pizza delivery', targetHint: 'search field' },\n  ],\n});\n\nif (result.status === 'input-required') {\n  const resumed = await resumeLoop({\n    browser,\n    continuation: result.handoff.continuation,\n    inputs: [{ key: 'password', kind: 'secret', value: process.env.PASSWORD }],\n  });\n}\n```\n\n`inputs` values are finite data selected by Jev; Jev does not bundle an LLM, infer URLs from raw goals, or use regex prompt parsing. Missing values return a structured handoff for the parent or human to resolve. Secret inputs are redacted from decision state, traces, events, and handoffs.\n\n## Compatible Decisions endpoints\n\nTypeSafe AI is the default:\n\n```text\nhttps://api.typesafe.ai/v1/systemone\n```\n\nA compatible endpoint can be selected without changing the browser loop:\n\n```json\n{\n  \"decision\": {\n    \"endpoint\": \"https://openrouter.ai/api/alpha/decisions\",\n    \"apiKeyEnv\": \"OPENROUTER_API_KEY\"\n  }\n}\n```\n\nUse `decision.transport: \"fetch\"` only when intentionally bypassing the SDK for a custom transport. The SDK's fetch implementation remains injectable for library callers.\n\n## Performance\n\nFast by construction: Jev makes typed decisions, while `agent-browser` executes native browser commands directly. This wrapper adds orchestration, not a second browser engine or a generated-JavaScript layer.\n\nSee Jev's own benchmark and performance claims for model-level results. This project will publish reproducible wrapper benchmarks separately rather than mixing network latency, model latency, and browser time into one number.\n\n## Safety boundaries\n\n- Browser work is sequential and bounded by `--max-steps`.\n- Stale refs, repeated actions, malformed decisions, and stuck states stop safely.\n- Input values are supplied by the parent and resolved locally.\n- Submit, register, apply, and similar commitment actions should remain behind parent or user confirmation.\n- Classification requests omit contact fields from collected candidates; bounded browser observations may still contain page content and URLs sent to the Decisions API.\n\n## More\n\n- [Full agent-facing skill](skills/core.md)\n- [Profiles](profiles/)\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}