{"_id":"@4ier/neo","_rev":"11-a64aac23406c3a6a3c40e3d30a397dd5","name":"@4ier/neo","dist-tags":{"latest":"2.1.0"},"versions":{"0.4.0":{"name":"@4ier/neo","version":"0.4.0","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@0.4.0","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"3ffea26068d7ad9d85a9b07613140425cc7331d4","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-0.4.0.tgz","fileCount":7,"integrity":"sha512-i44GVQs5FigAZMSDPONaOt+kFJJHvyqht7Y6hXhCxASFMtO+ZqQflO4p6sqr/9jnMhuo0gdLFGvKnqAUIePeWQ==","signatures":[{"sig":"MEQCIFk9cgIoYWOjPGJs150sl2ADvX4hE/YhfV/Ff5PgPIMUAiB1MqwxvHDit3fwFSLnMiV67wnwyKwM5EC+PYevIcEAPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":362388},"type":"module","gitHead":"400d290a5c1fe1200a4e7aaccd963c06ad7c9abd","scripts":{"test":"node tools/neo.test.cjs","build":"NEO_ENTRY=background vite build && NEO_ENTRY=content vite build && NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.4","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_0.4.0_1772721544572_0.17784503927752127","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@4ier/neo","version":"1.2.2","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@1.2.2","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"1b4e377491b0d9f5c45ab527d7c728949b283ea2","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-1.2.2.tgz","fileCount":7,"integrity":"sha512-tnbTpfTvT+oVyXhE8QWwaad2fdKlGzUsGRS5FirXedTmi3X1SYHNAQkRhxIfNGuijnrRGpIaF9xRuTeGOlzV3Q==","signatures":[{"sig":"MEUCIQDDxr2hWaC5pdJsIctVr5ASQuREmsXl9zB2yfaudW7tLwIgRrIA3PLyYjsbAViipgnPW2jivBGGYVJvTWJvnun1854=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":362392},"type":"module","gitHead":"4d6eb2e2431574d7b97a3b09d08b6767c1ffaa6a","scripts":{"test":"node tools/neo.test.cjs","build":"NEO_ENTRY=background vite build && NEO_ENTRY=content vite build && NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.4","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_1.2.2_1772758916467_0.5587136373028772","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@4ier/neo","version":"1.3.0","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@1.3.0","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"88111ea8c3b0493f4e1d720dc69ff91bf51cf1b9","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-1.3.0.tgz","fileCount":7,"integrity":"sha512-MRrl4nU3zEJW8NKdo+n6zt/DrbjjCc4QO8rZOwE9Zhs0lJ7yotAfG9msKpmQRu888uLL85uNRA3PgQwlMDiHCQ==","signatures":[{"sig":"MEUCICv/cWPrDFW0OEfUVwY5DQRwS4Qh0DlpI0VzhO9FMWkHAiEAooaXdeplULcsA6jT575/AegNb7SbETwGoq1+P65lUBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":373226},"type":"module","gitHead":"e302f2e1e01d526d2d27e557e206a28e0875dda8","scripts":{"test":"node tools/neo.test.cjs","build":"NEO_ENTRY=background vite build && NEO_ENTRY=content vite build && NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.4","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_1.3.0_1772762821983_0.704077474501897","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@4ier/neo","version":"1.2.1","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@1.2.1","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"49925325d611117ea5ff8f067fdfb9b7bb72a1d5","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-1.2.1.tgz","fileCount":7,"integrity":"sha512-4Bg5tqIYA6dUKrUh92z9wkRHsObG+kUzT9/6x0NobwKrnOK7C1JtdmJz10bCHdhZAkCdtloiQtXfewj/aFBW5g==","signatures":[{"sig":"MEUCIQCtgsoGpkzWhDDkPgePZqP8LkUpUDCUXiOJqHKP9eg9yQIgLSRhH32MGnooMC97o/tG3d6U+HD7AQblmXZsihzhfe4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":362392},"type":"module","gitHead":"de5db699876dc3583bee1169ee46893a19d585e6","scripts":{"test":"node tools/neo.test.cjs","build":"NEO_ENTRY=background vite build && NEO_ENTRY=content vite build && NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.4","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_1.2.1_1772762827447_0.723237901730428","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@4ier/neo","version":"1.3.1","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@1.3.1","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"53bfcd705e9f0d900554aaf56aed8e89c811b856","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-1.3.1.tgz","fileCount":7,"integrity":"sha512-7g9Qm3zIjlrlaq3nAbriQu2fFrgHUmGHPyJsyEveAVFzDfv79lv1ltHM36el2YbCpbRQ2i57yhF/7+Maim0awg==","signatures":[{"sig":"MEQCIHesH/y9lF+JbM6jY/Jc5bLSoJJ+TG5IEO8m7DNsP/yFAiBOSqemXkIYg0br4KzLn1KnRCeV9ypudoCJwpzu6RYFrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":376499},"type":"module","gitHead":"bab85cf1b3cb87c2258a3b7cf3d3c455ff5b6ee6","scripts":{"test":"node tools/neo.test.cjs","build":"NEO_ENTRY=background vite build && NEO_ENTRY=content vite build && NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.4","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_1.3.1_1772941925333_0.302226173981494","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@4ier/neo","version":"1.4.0","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@1.4.0","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"ee74a69ebe3ddbb5924f6539c876114543977b8f","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-1.4.0.tgz","fileCount":7,"integrity":"sha512-XEEHsMw20XyVVPdcydMO+H/owVxpEoEn946/uIQXEv2OtQo6H7QGxVVO1HRwfLA9Qdi2eWn3xa6OQbaB9RptYw==","signatures":[{"sig":"MEYCIQCYdv/i3yXxazdC61b8Vikv6rbvoXW5lKObpUI7c8tTwwIhAKKPxGPJulYyVl3fyUORoqvqRzfmNnJGzY3bnRRclXFc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381517},"type":"module","gitHead":"139ce7d92d331f43136482f7d148a07682d12480","scripts":{"test":"node tools/neo.test.cjs","build":"cross-env NEO_ENTRY=background vite build && cross-env NEO_ENTRY=content vite build && cross-env NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.4","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","cross-env":"^10.1.0","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_1.4.0_1773504790268_0.6153485397739822","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@4ier/neo","version":"1.4.1","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@1.4.1","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"4026f22df0f78bdbf4a1030cc505c51623c79467","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-1.4.1.tgz","fileCount":7,"integrity":"sha512-I4alqPjPohhhjH6QpJDAbmkM0TB7MCFi8ndgSWKODe8v23N+dB7M3t8DLVaFnZg7nacNSoTvQ1UrovQxJ2rtJw==","signatures":[{"sig":"MEMCHwNu6wPzonRNEXt0YUz1Tb/LGKPSlQtRvlgb0IAq4f4CIEStQkQgc5rmcBVMRk+WbL1xV4FiUFSxlPkoOVqm267t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":391503},"type":"module","gitHead":"f261ca60278f06f9ffec9d66cb3a74e7895073ca","scripts":{"test":"node tools/neo.test.cjs","build":"cross-env NEO_ENTRY=background vite build && cross-env NEO_ENTRY=content vite build && cross-env NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.4","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","cross-env":"^10.1.0","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_1.4.1_1773856352334_0.5216153317032022","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@4ier/neo","version":"1.5.0","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@1.5.0","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"8e536c5f3a901458f2e097b7998889aa93369b8b","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-1.5.0.tgz","fileCount":7,"integrity":"sha512-TQ/GcnWOaMy4k8nI2w71KS/jsn7heuYn8myarP3o8qGIpnRdpNg27gcrJaKHPoNQOUYVIAiV/3ycmyI76LOcmg==","signatures":[{"sig":"MEUCIAFj4nYgsY6LN7An4JmypPCsXtojt1lIOdHM9DEDTpTkAiEA+dnDDbzTL2fJhFDdCmVR6tIaBiK0OkPny+JUScL/ffg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407706},"type":"module","gitHead":"754b68bae5144c288ab0f45d8d9c23e87972451e","scripts":{"test":"node tools/neo.test.cjs","build":"cross-env NEO_ENTRY=background vite build && cross-env NEO_ENTRY=content vite build && cross-env NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.4","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","cross-env":"^10.1.0","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_1.5.0_1774082269852_0.5305373663306376","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@4ier/neo","version":"2.0.0","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@2.0.0","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"131b3c4b67536bc4c33f9390b3f91393c36b321a","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-2.0.0.tgz","fileCount":7,"integrity":"sha512-+frxCwjaxgZpMERnUvOTl/l2lDhFt0kAB1WVFwGF8sN/1ZkIs3kVA55YVd1ZW7ZvX2mQrrnC8cqwzncTpABgQw==","signatures":[{"sig":"MEYCIQDC5kh98/o/xgHUpuuOqobHkb3NnlDYDUIgkgQH+MiOQQIhALiyIXhO449DpskUyjAcpT8Qe0DpRFrye79LwvXMHqrU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":419007},"type":"module","gitHead":"0ae928ff6c59d4b63936476c6ffe83c425feb64d","scripts":{"test":"node tools/neo.test.cjs","build":"cross-env NEO_ENTRY=background vite build && cross-env NEO_ENTRY=content vite build && cross-env NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.4","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","cross-env":"^10.1.0","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_2.0.0_1774150929438_0.0069010832517610865","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@4ier/neo","version":"2.0.1","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"author":{"name":"4ier"},"license":"MIT","_id":"@4ier/neo@2.0.1","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"homepage":"https://github.com/4ier/neo#readme","bugs":{"url":"https://github.com/4ier/neo/issues"},"bin":{"neo":"tools/neo.cjs"},"dist":{"shasum":"3ff59517bf43c1f1bfb37572f5cf581e923400aa","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-2.0.1.tgz","fileCount":7,"integrity":"sha512-Mawj7XJ3G8mUAmUk1EzOzszP57Eaka5iphAV6ZPZ0o3FTQ9vBgi+hEk6aiaQa6JnjrUjcEynnD4H31po5QwLKg==","signatures":[{"sig":"MEYCIQD68/8B7x3j35R+JzP3PMfAj2nDG5Mt/9kmiHNshNDdLQIhAIwwTAMtV0eIaPCWACnSJC0lqc+vfof5Xk3Jr+0wx3c7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":419147},"type":"module","gitHead":"23a9e211f95651784c5dc0d7f2ffddb99e6a3457","scripts":{"test":"node tools/neo.test.cjs","build":"cross-env NEO_ENTRY=background vite build && cross-env NEO_ENTRY=content vite build && cross-env NEO_ENTRY=inject vite build"},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"repository":{"url":"git+https://github.com/4ier/neo.git","type":"git"},"_npmVersion":"10.9.7","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","dexie":"^4.0.11","cross-env":"^10.1.0","typescript":"^5.8.2","@types/node":"^22.10.5","@types/chrome":"^0.0.303"},"_npmOperationalInternal":{"tmp":"tmp/neo_2.0.1_1775875424815_0.5880234369120125","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@4ier/neo","version":"2.1.0","description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","type":"module","scripts":{"build":"cross-env NEO_ENTRY=background vite build && cross-env NEO_ENTRY=content vite build && cross-env NEO_ENTRY=inject vite build","test":"node tools/neo.test.cjs"},"bin":{"neo":"tools/neo.cjs"},"keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"repository":{"type":"git","url":"git+https://github.com/4ier/neo.git"},"license":"MIT","author":{"name":"4ier"},"dependencies":{"ws":"^8.19.0"},"devDependencies":{"@types/chrome":"^0.0.303","@types/node":"^22.10.5","cross-env":"^10.1.0","dexie":"^4.0.11","typescript":"^5.8.2","vite":"^6.0.0"},"_id":"@4ier/neo@2.1.0","gitHead":"2d1c999fe0bded76f2cb46e018732743c68f79c0","bugs":{"url":"https://github.com/4ier/neo/issues"},"homepage":"https://github.com/4ier/neo#readme","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-geFGcv5CT6CItg5XV8kmT4CgKpXjly9vDtWp767eZ4PZiTIDKY7OSgdK2n8cVDJMbyQYTYVXatLH/HesaA3Tlg==","shasum":"6250bac9a613cc0f5b974e3c9cd42d4dad413ea3","tarball":"https://registry.npmjs.org/@4ier/neo/-/neo-2.1.0.tgz","fileCount":7,"unpackedSize":422930,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDmF1XuqpapRWJxU0HrpngzOkTi6Y7myGhoYflZAEF8aAIgDTMsqFlz+hOjKDIz2JmQPqMDG5Pl2QSoF0eDJsthxzE="}]},"_npmUser":{"name":"4ier","email":"yang.fourier@gmail.com"},"directories":{},"maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/neo_2.1.0_1777375098998_0.8593080826406221"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-05T14:39:04.458Z","modified":"2026-04-28T11:18:19.245Z","0.4.0":"2026-03-05T14:39:04.690Z","1.2.2":"2026-03-06T01:01:56.615Z","1.3.0":"2026-03-06T02:07:02.147Z","1.2.1":"2026-03-06T02:07:07.743Z","1.3.1":"2026-03-08T03:52:05.498Z","1.4.0":"2026-03-14T16:13:10.431Z","1.4.1":"2026-03-18T17:52:32.548Z","1.5.0":"2026-03-21T08:37:50.005Z","2.0.0":"2026-03-22T03:42:09.595Z","2.0.1":"2026-04-11T02:43:44.991Z","2.1.0":"2026-04-28T11:18:19.151Z"},"bugs":{"url":"https://github.com/4ier/neo/issues"},"author":{"name":"4ier"},"license":"MIT","homepage":"https://github.com/4ier/neo#readme","keywords":["browser","api","chrome","cdp","automation","web-scraping","ai-agent","openclaw"],"repository":{"type":"git","url":"git+https://github.com/4ier/neo.git"},"description":"Turn any website into an AI-callable API. Passive traffic capture, API schema generation, and execution.","maintainers":[{"name":"4ier","email":"yang.fourier@gmail.com"}],"readme":"# Neo\n\n**Turn any web app into an API.** No official API needed. No browser automation.\n\nNeo is a Chrome extension that passively captures every API call your browser makes, learns the patterns, and lets AI (or you) replay them directly.\n\n## The Problem\n\nAI agents operating web apps today have two options, both bad:\n\n| Approach | Pain |\n|----------|------|\n| **Official APIs** | Most SaaS doesn't have one, or only exposes 10% of features |\n| **Browser automation** | Screenshot → OCR → click. Slow, fragile, breaks on every UI change |\n\n**Neo is the third way.** Every web app already has a complete internal API — the frontend calls it every time you click something. Neo captures those calls and makes them replayable.\n\n**v2: Now with UI automation.** Neo v2 adds an accessibility-tree-based UI layer — `snapshot`, `click`, `fill`, `type`, `press`, `hover`, `scroll`, `select`, `screenshot`, `get`, `wait`. When an API exists, use it directly. When it doesn't, Neo can drive the UI through the same CLI. One tool, both layers.\n\n## How It Works\n\n```\nBrowse normally → Neo records all API traffic → Schema auto-generated → AI replays APIs directly\n                                                                      → Or drives UI via a11y tree\n```\n\n### 1. Capture (always-on)\n\nThe Chrome extension intercepts every `fetch()` and `XMLHttpRequest` — URLs, headers, request/response bodies, timing, even which DOM element triggered the call.\n\n### 2. Learn\n\nRun `neo-schema` on a domain to auto-generate its API map: endpoints, required auth headers, query parameters, response structure, error codes.\n\n### 3. Execute\n\nRun API calls inside the browser tab's context via Chrome DevTools Protocol. Cookies, CSRF tokens, session auth — all inherited automatically. No token management needed.\n\n## Supported Browsers\n\n| Browser | Type | Best for |\n|---------|------|----------|\n| **Chrome / Chromium** | Full browser | API capture + UI automation (default) |\n| **[Lightpanda](https://github.com/lightpanda-io/browser)** | Headless (Zig) | AI agents, scraping — 11x faster, 9x less memory |\n\n## Quick Start\n\n```bash\ngit clone https://github.com/4ier/neo.git\ncd neo && npm install && npm run build\nnpm link  # makes `neo` available globally\n```\n\nLoad the extension:\n1. Open `chrome://extensions`\n2. Enable \"Developer mode\"\n3. Click \"Load unpacked\" → select `extension/dist/`\n4. Browse any website — Neo starts capturing immediately\n\n### Lightpanda (headless, no extension needed)\n\n```bash\n# Install Lightpanda\ncurl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux\nchmod +x lightpanda && sudo mv lightpanda /usr/local/bin/\n\n# Configure Neo to use Lightpanda\n# In ~/.neo/config.json:\n# { \"chromePath\": \"/usr/local/bin/lightpanda\", \"browserType\": \"lightpanda\", \"cdpPort\": 9222 }\n\nneo start    # launches Lightpanda CDP server\nneo connect  # attach to it\nneo open https://example.com\nneo snapshot # full a11y tree\n```\n\n## CLI Tools\n\nAll commands go through a single CLI: `neo <command>`.\n\nRequires a browser with CDP (Chrome DevTools Protocol) enabled.\n\n```bash\n# --- Connection & Sessions ---\nneo connect [port]                          # Connect to CDP, save session\nneo connect --electron <app-name>           # Auto-discover Electron app's CDP port\nneo launch <app> [--port N]                 # Launch Electron app with CDP enabled\nneo discover                                # Find reachable CDP endpoints on localhost\nneo sessions                                # List saved sessions\nneo tab                                     # List CDP targets in active session\nneo tab <index> | neo tab --url <pattern>   # Switch active tab target\nneo inject [--persist] [--tab pattern]      # Inject Neo capture script into target\n\n# --- Capture & Traffic ---\nneo status                                  # Overview of captured data\nneo capture summary                         # Quick overview\nneo capture list github.com --limit 10      # Shows IDs for replay/detail\nneo capture list --since 1h                 # Time-filtered\nneo capture domains\nneo capture search \"CreateTweet\" --method POST\nneo capture watch x.com                     # Live tail (like tail -f)\nneo capture stats x.com                     # Method/status/timing breakdown\nneo capture export x.com --since 2h > x.json\nneo capture export x.com --format har > x.har  # HAR 1.2 for Postman/devtools\nneo capture import x-captures.json\nneo capture prune --older-than 7d\nneo capture gc x.com [--dry-run]            # Smart dedup\n\n# --- API Replay & Execution ---\nneo replay <capture-id> --tab x.com         # Replay a captured call\nneo exec <url> --method POST --body '{...}' --tab example.com --auto-headers\nneo api x.com HomeTimeline                  # Smart call (schema lookup + auto-auth)\n\n# --- Schema & Analysis ---\nneo schema generate x.com                   # Generate from captures\nneo schema generate --all                   # Batch all domains\nneo schema show x.com [--json]\nneo schema openapi x.com                    # Export OpenAPI 3.0 spec\nneo schema diff x.com                       # Changes from previous version\nneo schema coverage                         # Domains with/without schemas\nneo label x.com [--dry-run]                 # Semantic endpoint labels\nneo flows x.com [--window 5000]             # API call sequence patterns\nneo deps x.com [--min-confidence 1]         # Response→request data dependencies\nneo workflow discover|show|run <name>       # Multi-step workflow discovery & replay\nneo suggest x.com                           # AI capability analysis\nneo export-skill x.com                      # Generate agent-ready SKILL.md\n\n# --- UI Automation (v2) ---\nneo snapshot [-i] [-C] [--json]             # A11y tree with @ref mapping\nneo click @ref [--new-tab]                  # Click element by @ref\nneo fill @ref \"text\"                        # Clear + fill input\nneo type @ref \"text\"                        # Append text to input\nneo press <key>                             # Keyboard key (supports Ctrl+a, Enter, etc.)\nneo hover @ref                              # Hover over element\nneo scroll <dir> [px] [--selector css]      # Scroll by direction\nneo select @ref \"value\"                     # Set dropdown value\nneo screenshot [path] [--full] [--annotate] # Capture screenshot\nneo get text @ref | neo get url | neo get title  # Extract info\nneo wait @ref | neo wait --load networkidle | neo wait <ms>  # Wait for element/load/time\n\n# --- Page Interaction ---\nneo read github.com                         # Extract readable text\nneo eval \"document.title\" --tab github.com  # Run JS in page\nneo open https://example.com                # Open URL\n\n# --- Mock & Bridge ---\nneo mock x.com [--port 8080 --latency 200]  # Mock server from schema\nneo bridge [--json] [--interactive]          # Real-time WebSocket capture stream\n\n# --- Diagnostics ---\nneo doctor                                  # Check Chrome, extension, schemas\nneo reload                                  # Reload extension from CLI\nneo tabs [filter]                           # List open Chrome tabs\n```\n\n### Sessions & Multi-App Support\n\nNeo isn't just for Chrome. Any app with CDP support works — including Electron apps:\n\n```bash\n# Launch VS Code with CDP and connect\nneo launch code --port 9230\nneo snapshot                # See VS Code's accessibility tree\nneo click @14               # Click a menu item\n\n# Or connect to an already-running Electron app\nneo connect --electron slack\n\n# Inject Neo's capture script into any CDP target\nneo inject --persist        # Survives page navigation\nneo inject --tab slack      # Target specific tab\n```\n\nSessions are saved automatically. Switch between them with `--session`:\n\n```bash\nneo --session vscode snapshot\nneo --session chrome api x.com HomeTimeline\n```\n\n### UI Automation (v2)\n\nNeo v2 adds a full UI interaction layer built on the accessibility tree — no screenshots, no coordinates, no pixel-matching:\n\n```bash\n# 1. Take a snapshot — each interactive element gets a @ref\nneo snapshot\n#  @1  button \"Sign in\"\n#  @2  textbox \"Search\"\n#  @3  link \"Pricing\"\n\n# 2. Interact by @ref\nneo click @1\nneo fill @2 \"AI agents\"\nneo press Enter\nneo screenshot results.png --full\n```\n\nThis gives AI agents a fast, semantic way to interact with any UI. Combine with API capture for a dual-channel approach: use APIs when they exist, fall back to UI when they don't.\n\nThe bridge creates a persistent WebSocket channel between the extension and CLI. The extension auto-connects to `ws://127.0.0.1:9234` and streams every capture in real-time. In interactive mode, you can query the extension directly: `ping`, `status`, `capture.count`, `capture.list`, `capture.domains`, `capture.search`, `capture.clear`.\n\n## Architecture\n\n```\n┌─────────────────────────────────────┐\n│  Chrome / Electron App (CDP)         │\n│                                      │\n│  inject/interceptor.ts               │\n│    ├─ Monkey-patches fetch & XHR     │\n│    ├─ Intercepts WebSocket/SSE       │\n│    ├─ Tracks DOM triggers (click →   │\n│    │   API correlation)              │\n│    └─ Records full request/response  │\n│                                      │\n│  content/index.ts                    │\n│    └─ Bridges page ↔ extension       │\n│                                      │\n│  background/index.ts                 │\n│    ├─ Persists to IndexedDB (Dexie)  │\n│    ├─ Per-domain cap (500 entries)   │\n│    └─ WebSocket Bridge client        │\n│                                      │\n└──────────────┬──────────────────────┘\n               │ Chrome DevTools Protocol\n┌──────────────┴──────────────────────┐\n│  CLI: neo (Node.js)                  │\n│                                      │\n│  Layer 1: API Capture & Replay       │\n│  ├─ neo capture → traffic management │\n│  ├─ neo schema  → API discovery      │\n│  ├─ neo exec    → execute in browser │\n│  ├─ neo api     → smart schema call  │\n│  ├─ neo replay  → re-run captured    │\n│  └─ neo flows/deps → pattern analysis│\n│                                      │\n│  Layer 2: UI Automation (v2)         │\n│  ├─ neo snapshot → a11y tree + @refs │\n│  ├─ neo click/fill/type/press/hover  │\n│  ├─ neo scroll/select/screenshot     │\n│  └─ neo get/wait                     │\n│                                      │\n│  Session Management                  │\n│  ├─ neo connect/launch/discover      │\n│  ├─ neo tab → target switching       │\n│  └─ neo inject → script injection    │\n│                                      │\n└──────────────┬──────────────────────┘\n               │\n┌──────────────┴──────────────────────┐\n│  AI Agent (OpenClaw / any LLM)       │\n│  ├─ API-first: schema → exec/api     │\n│  ├─ UI fallback: snapshot → click    │\n│  └─ Dual-channel automation          │\n└──────────────────────────────────────┘\n```\n\n## Real-World Demo\n\n### Post a tweet via captured API\n\n```bash\n# 1. Browse X normally — Neo captures GraphQL mutations\nneo schema show api.x.com\n\n# 2. Find the CreateTweet endpoint\nneo capture search \"CreateTweet\" --method POST\n\n# 3. Replay with the original auth (cookies inherited automatically)\nneo replay abc123 --tab x.com\n\n# 4. Or craft a new call with auto-detected auth headers\nneo exec \"https://x.com/i/api/graphql/.../CreateTweet\" \\\n  --method POST --auto-headers \\\n  --body '{\"variables\":{\"tweet_text\":\"Hello from Neo!\"},...}'\n```\n\n### Understand what a button does\n\nNeo's trigger tracking maps UI interactions to API calls:\n\n```bash\nneo schema show github.com\n# Output includes:\n#   POST /repos/:owner/:repo/star  (3x, 280ms)\n#     ← click button.js-social-form \"Star\" (3x)\n```\n\n### Live-monitor API traffic\n\n```bash\nneo capture watch api.openai.com\n# 14:23:01  POST 200 /v1/chat/completions (1230ms)\n# 14:23:05  SSE_MSG 200 /v1/chat/completions (0ms) [sse]\n```\n\n## Storage\n\n- **Per-domain cap**: 500 captures max per domain, oldest auto-cleaned\n- **Body truncation**: Response bodies capped at 100KB\n- **Location**: Chrome's IndexedDB (`neo-capture-v01` database)\n- **Schemas**: Exportable as JSON files for persistence across devices\n\n## Smart Filtering\n\nThe interceptor ignores noise automatically:\n- Static assets (images, fonts, CSS, JS bundles)\n- Analytics/tracking (Google Analytics, Meta Pixel, Sentry, etc.)\n- Browser internals (chrome-extension://, data:, blob:)\n- **Rate limiting**: Max 3 captures per URL pattern per minute (prevents polling endpoint bloat)\n\n## Security & Privacy\n\nNeo runs entirely locally — no external servers, no telemetry, no data leaves your machine.\n\n**What Neo captures:** Every fetch/XHR/WebSocket call your browser makes on every website. This is powerful but invasive by design.\n\n**Auth header redaction (v1.1.0+):** Auth header values (Bearer tokens, CSRF tokens, cookies, session IDs) are redacted at capture time before storage. IndexedDB only stores header *names*, not values. When `--auto-headers` executes an API call, it fetches live auth headers from the browser in real-time via CDP — never replays stored credentials.\n\n**What you should know:**\n\n| Aspect | Detail |\n|--------|--------|\n| **Capture scope** | `<all_urls>` — Neo sees traffic on *every* website, including banking, email, medical portals |\n| **Content script** | Runs in `MAIN` world (shares JS context with pages) to intercept fetch/XHR |\n| **CDP port** | CLI requires Chrome on port 9222 — any local process can connect to this port |\n| **Response bodies** | Stored in IndexedDB (truncated to 100KB) — may contain personal data from API responses |\n| **Schema files** | Store only endpoint structure (paths, header names, response shapes) — no credentials or user data |\n| **Export** | `neo capture export` redacts auth by default; `--include-auth` requires explicit opt-in |\n\n**Recommendations:**\n\n- Review captured domains periodically: `neo capture domains`\n- Prune sensitive captures: `neo capture clear banksite.com`\n- Don't install Neo on shared machines where others have local access\n- The CDP port (9222) should not be exposed beyond localhost\n\nNeo is a developer tool that trades privacy surface for capability. Use it knowingly.\n\n## Tech Stack\n\n- TypeScript, Vite (multi-entry build)\n- Chrome Manifest V3\n- Dexie.js (IndexedDB wrapper)\n- Chrome DevTools Protocol for CLI ↔ browser communication\n- No backend server, no external dependencies at runtime\n\n## Roadmap\n\n- [x] Extension: capture + store + command-driven workflow\n- [x] CLI tools: unified `neo` CLI with subcommands\n- [x] Storage management: per-domain caps, auto-cleanup, rate limiting\n- [x] Schema: browser-side analysis, URL normalization, body structure extraction\n- [x] Smart filtering: static assets, analytics, duplicate suppression\n- [x] WebSocket capture (open/close/send/recv with throttling)\n- [x] Capture replay: `neo replay <id>` re-executes captured calls\n- [x] Import/export: cross-device capture migration\n- [x] Smart API call: `neo api` with schema lookup + auto-auth\n- [x] Flow analysis: `neo flows` discovers API call sequences\n- [x] Dependency chains: `neo deps` finds response→request data flow\n- [x] Schema versioning with diff detection and history\n- [x] Diagnostics: `neo doctor` for setup verification\n- [x] Pure function extraction + 73 unit tests + CI\n- [x] Agent skill export: `neo export-skill` generates SKILL.md\n- [x] Mock server: `neo mock` generates local HTTP server from schema\n- [x] HAR 1.2 export format for Postman/Charles/devtools interop\n- [x] OpenAPI 3.0 spec generation from captured schemas\n- [x] Batch schema generation (`--all`)\n- [x] Semantic endpoint labeling (`neo label`)\n- [x] Multi-step workflow discovery and execution (`neo workflow`)\n- [x] Session management: `neo connect`, `neo sessions`, `--session` flag\n- [x] Electron support: `neo launch`, `neo connect --electron`\n- [x] Tab management: `neo tab` list/switch targets\n- [x] Script injection: `neo inject` with `--persist` and `--tab`\n- [x] **v2 UI layer**: `snapshot`, `click`, `fill`, `type`, `press`, `hover`, `scroll`, `select`, `screenshot`, `get`, `wait`\n- [ ] Dual-channel: Neo API-first → UI fallback (automatic)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}