{"_id":"@agent-qofeno/http-recorder","_rev":"10-f1d59e8f0a17055b22e81fe6fdbcb02a","name":"@agent-qofeno/http-recorder","dist-tags":{"latest":"1.20.44"},"versions":{"0.0.0-fix-local-model-scanning-202606262041":{"name":"@agent-qofeno/http-recorder","version":"0.0.0-fix-local-model-scanning-202606262041","keywords":["effect","http","recording","replay","testing","vcr"],"license":"MIT","_id":"@agent-qofeno/http-recorder@0.0.0-fix-local-model-scanning-202606262041","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"dist":{"shasum":"60a9b4260f939e49cea309163b025fa168feac9a","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-0.0.0-fix-local-model-scanning-202606262041.tgz","fileCount":3,"integrity":"sha512-trCa7QyEolUyl8DtNokesaDDj6NwRg4DVlM2imtB4THbz9DNDpswV40pfFZivD/F2aVJRTXTRFSLj+7jxTbJzA==","signatures":[{"sig":"MEUCIBg/Ec7D238sBrxLlt24Vn7g0g8pC4iCepvozRinb6IVAiEAwztyzWBd2iDi8PA86j/KecjbE7H5ulMVPYrd98941PM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10889},"type":"module","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"gitHead":"58fe0025189778518fccaf31555e4033acadc475","scripts":{"test":"bun test --timeout 30000 --only-failures","build":"bun ./script/build.ts","typecheck":"tsgo --noEmit","verify:package":"bun ./script/verify-package.ts"},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"repository":{"url":"git+https://github.com/anomalyco/agentx.git","type":"git","directory":"packages/http-recorder"},"_npmVersion":"10.8.2","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"catalog:","@types/bun":"catalog:","typescript":"catalog:","@types/node":"catalog:","@tsconfig/node22":"catalog:","@typescript/native-preview":"catalog:"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/http-recorder_0.0.0-fix-local-model-scanning-202606262041_1782545838252_0.7912754612379265","host":"s3://npm-registry-packages-npm-production"}},"1.20.36":{"name":"@agent-qofeno/http-recorder","version":"1.20.36","keywords":["effect","http","recording","replay","testing","vcr"],"license":"MIT","_id":"@agent-qofeno/http-recorder@1.20.36","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"dist":{"shasum":"65394fc241085a86fe5571a1561c3787eedc19cb","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-1.20.36.tgz","fileCount":3,"integrity":"sha512-g3xzOiTXrEQ7OxENUaF/yJ8yufIBxpXs4P5e/9/+g0VdIr+1J4GEsmkjeLR/8yyPGOIwSKAevw1vnSdNMaYKjg==","signatures":[{"sig":"MEUCIQCtFLOeakR3OEgqdEyVPaMu8BTVpWOyFMTpMQK+cBf8eAIgEVaMg6Ys5CM/hiVv0GD7pSa+hQn5hFz6v+PbDDfH+5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10854},"type":"module","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"gitHead":"06afb75b8d2f12ca231ccac9f791fbf14b1b65c5","scripts":{"test":"bun test --timeout 30000 --only-failures","build":"bun ./script/build.ts","typecheck":"tsgo --noEmit","verify:package":"bun ./script/verify-package.ts"},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"repository":{"url":"git+https://github.com/anomalyco/agentx.git","type":"git","directory":"packages/http-recorder"},"_npmVersion":"10.8.2","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"catalog:","@types/bun":"catalog:","typescript":"catalog:","@types/node":"catalog:","@tsconfig/node22":"catalog:","@typescript/native-preview":"catalog:"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/http-recorder_1.20.36_1782546044148_0.9499942441453819","host":"s3://npm-registry-packages-npm-production"}},"1.20.37":{"name":"@agent-qofeno/http-recorder","version":"1.20.37","keywords":["effect","http","recording","replay","testing","vcr"],"license":"MIT","_id":"@agent-qofeno/http-recorder@1.20.37","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"dist":{"shasum":"bfa5761bad722df461724f5ef9713c9b012f90c4","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-1.20.37.tgz","fileCount":3,"integrity":"sha512-uwzqdx0fUD3d4FH9IJIXPwReqztgoqdGpChXEMujfCiBzvchiY/avom/m9SRlwBciAxTxpdUBuDAmHzBo2xt5g==","signatures":[{"sig":"MEYCIQDbHvvq6uagJ6/WkvGtiO93C4bLxIkkxIna22F1rs8I2QIhALf9UAHcrizfYSgAKxLyq18Ij7o5JWCyyVDau34ZeJ5A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10854},"type":"module","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"gitHead":"825ef4f286091b1310dc970e0d266e7176d358c7","scripts":{"test":"bun test --timeout 30000 --only-failures","build":"bun ./script/build.ts","typecheck":"tsgo --noEmit","verify:package":"bun ./script/verify-package.ts"},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"repository":{"url":"git+https://github.com/anomalyco/agentx.git","type":"git","directory":"packages/http-recorder"},"_npmVersion":"10.8.2","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"catalog:","@types/bun":"catalog:","typescript":"catalog:","@types/node":"catalog:","@tsconfig/node22":"catalog:","@typescript/native-preview":"catalog:"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/http-recorder_1.20.37_1782547846403_0.8739308761176507","host":"s3://npm-registry-packages-npm-production"}},"1.20.38":{"name":"@agent-qofeno/http-recorder","version":"1.20.38","keywords":["effect","http","recording","replay","testing","vcr"],"license":"MIT","_id":"@agent-qofeno/http-recorder@1.20.38","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"dist":{"shasum":"b36249616ad5c18d9abceb4ed24055e7d6dfcffa","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-1.20.38.tgz","fileCount":3,"integrity":"sha512-g8plb/7nCXKLxkI6t7GMtpnShC3wrzm3BG11YZ4CIOd78YpNmB230GMUIpGwQNG9xpGGTcypqd3KcsalJI8YpQ==","signatures":[{"sig":"MEUCIFuAWbXxs6SDAPcjSL1pVWJisxkNWPRPxYkElHLWxzqKAiEAoWeMrkRdfLuhjpkTBWg+yC2Aiweh7wT85uPzxALusSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10854},"type":"module","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"gitHead":"27a4b77793885a5092b1540db7e00daaf3acee1a","scripts":{"test":"bun test --timeout 30000 --only-failures","build":"bun ./script/build.ts","typecheck":"tsgo --noEmit","verify:package":"bun ./script/verify-package.ts"},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"repository":{"url":"git+https://github.com/anomalyco/agentx.git","type":"git","directory":"packages/http-recorder"},"_npmVersion":"10.8.2","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"catalog:","@types/bun":"catalog:","typescript":"catalog:","@types/node":"catalog:","@tsconfig/node22":"catalog:","@typescript/native-preview":"catalog:"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/http-recorder_1.20.38_1782548080793_0.4150512899682335","host":"s3://npm-registry-packages-npm-production"}},"1.20.39":{"name":"@agent-qofeno/http-recorder","version":"1.20.39","keywords":["effect","http","recording","replay","testing","vcr"],"license":"MIT","_id":"@agent-qofeno/http-recorder@1.20.39","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"dist":{"shasum":"5f73b923c7c1010df9b7f435145c89790047526e","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-1.20.39.tgz","fileCount":3,"integrity":"sha512-wJHE0ggBxCNCgciY8+VN79qjlSjMvmPeTUD70sY5Uyq03YVD0nv6WDOF+V+BoTA7g0cMfgJGzp4Kkhsk0ert1Q==","signatures":[{"sig":"MEYCIQDS3bRGe/x2BFtJ1XIAGSV7ZX/lt0mcGCdFPUzeqXjvswIhAJAXNmZfT7g7jNnFK1rwXqPKw1XjOd9I+8GMDCt7ecJ0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10854},"type":"module","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"gitHead":"4bd1ddc6a4d9980d811a403202d88737447f5e89","scripts":{"test":"bun test --timeout 30000 --only-failures","build":"bun ./script/build.ts","typecheck":"tsgo --noEmit","verify:package":"bun ./script/verify-package.ts"},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"repository":{"url":"git+https://github.com/anomalyco/agentx.git","type":"git","directory":"packages/http-recorder"},"_npmVersion":"10.8.2","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"catalog:","@types/bun":"catalog:","typescript":"catalog:","@types/node":"catalog:","@tsconfig/node22":"catalog:","@typescript/native-preview":"catalog:"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/http-recorder_1.20.39_1782632069019_0.41642770357584213","host":"s3://npm-registry-packages-npm-production"}},"1.20.40":{"name":"@agent-qofeno/http-recorder","version":"1.20.40","keywords":["effect","http","recording","replay","testing","vcr"],"license":"MIT","_id":"@agent-qofeno/http-recorder@1.20.40","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"dist":{"shasum":"0574f88e14cda7050debc83a13233cca445e3edc","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-1.20.40.tgz","fileCount":3,"integrity":"sha512-XHHaccdm4FLB/zjS7oh5qPF3DRENSaKz0dDTFsbLF7/f6Iyf52SXKyTm4CMAckxZui4vv8EyfnM9PvCNiC8Tmg==","signatures":[{"sig":"MEYCIQDOF0Qbryo5+LI2fad/mYfjoj7hXxftmxJzAfb0I4qqXwIhAPaEe/WoyPXff8xNVbEQQ6A/9GryVrzOKIYLllHZK7lE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10863},"type":"module","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"gitHead":"4bf3996eb2bca05baa13a0e6b975779718df3f32","scripts":{"test":"bun test --timeout 30000 --only-failures","build":"bun ./script/build.ts","typecheck":"tsgo --noEmit","verify:package":"bun ./script/verify-package.ts"},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"repository":{"url":"git+https://github.com/anomalyco/agentx.git","type":"git","directory":"packages/http-recorder"},"_npmVersion":"10.8.2","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"4.0.0-beta.74","@types/bun":"1.3.13","typescript":"5.8.2","@types/node":"24.12.2","@tsconfig/node22":"22.0.2","@typescript/native-preview":"7.0.0-dev.20251207.1"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/http-recorder_1.20.40_1782743550949_0.019592100521036437","host":"s3://npm-registry-packages-npm-production"}},"1.20.41":{"name":"@agent-qofeno/http-recorder","version":"1.20.41","keywords":["effect","http","recording","replay","testing","vcr"],"license":"MIT","_id":"@agent-qofeno/http-recorder@1.20.41","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"dist":{"shasum":"004fe75803571292abc48b2e4ef9f25e927242f9","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-1.20.41.tgz","fileCount":3,"integrity":"sha512-BPwNbWJGwsFBp694nl30WUrSIsLIpSUreuhEYl8tFhucJe+Y7db462wWHpByHzARVpYlKHrk2sKr2n7MbOLtbA==","signatures":[{"sig":"MEYCIQDCjL+4R+IDcYqWn7ObYV10ZKwd4WMlsS9u22qigxJWhQIhAJuNiLLir7diB8LUcqUVWL6idH8CgLJ29Hi9OwoPbGSd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10863},"type":"module","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"gitHead":"8629272a076489b38d3f9333f30b7c26b00babd1","scripts":{"test":"bun test --timeout 30000 --only-failures","build":"bun ./script/build.ts","typecheck":"tsgo --noEmit","verify:package":"bun ./script/verify-package.ts"},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"repository":{"url":"git+https://github.com/anomalyco/agentx.git","type":"git","directory":"packages/http-recorder"},"_npmVersion":"10.8.2","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"4.0.0-beta.74","@types/bun":"1.3.13","typescript":"5.8.2","@types/node":"24.12.2","@tsconfig/node22":"22.0.2","@typescript/native-preview":"7.0.0-dev.20251207.1"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/http-recorder_1.20.41_1782743949508_0.8557235399752252","host":"s3://npm-registry-packages-npm-production"}},"1.20.42":{"name":"@agent-qofeno/http-recorder","version":"1.20.42","keywords":["effect","http","recording","replay","testing","vcr"],"license":"MIT","_id":"@agent-qofeno/http-recorder@1.20.42","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"dist":{"shasum":"3de916599a27f82ce8b6595494c75727505d435d","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-1.20.42.tgz","fileCount":3,"integrity":"sha512-8X8in4nLr8FR1OGlbQO6dw7kZe9NqosYSwNp5cazKbyDkY2ZqcJX08qpA9TdkHSidZTeoDiDxa6f2QOV39Vu1A==","signatures":[{"sig":"MEUCIFjz/o/NdZpX5oRGTatmkOofycgcXeQMT7VRS+JCthFLAiEA6jtAwtZgf3sg3Wh6sAMPAqyAcVHIW3uO2kUyUkiBIwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10863},"type":"module","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"gitHead":"1d33e5fca26fd3397b4af94d02c4690ce5361311","scripts":{"test":"bun test --timeout 30000 --only-failures","build":"bun ./script/build.ts","typecheck":"tsgo --noEmit","verify:package":"bun ./script/verify-package.ts"},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"repository":{"url":"git+https://github.com/anomalyco/agentx.git","type":"git","directory":"packages/http-recorder"},"_npmVersion":"10.8.2","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"4.0.0-beta.74","@types/bun":"1.3.13","typescript":"5.8.2","@types/node":"24.12.2","@tsconfig/node22":"22.0.2","@typescript/native-preview":"7.0.0-dev.20251207.1"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/http-recorder_1.20.42_1782744874874_0.5032114707190096","host":"s3://npm-registry-packages-npm-production"}},"1.20.43":{"name":"@agent-qofeno/http-recorder","version":"1.20.43","keywords":["effect","http","recording","replay","testing","vcr"],"license":"MIT","_id":"@agent-qofeno/http-recorder@1.20.43","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"dist":{"shasum":"ec56d6223aeeec384691cf15b8a1a8f51e3c59bd","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-1.20.43.tgz","fileCount":3,"integrity":"sha512-AqVohwlylShDR7eAnUBij0lEizoXXo43SaLyJyHDwLkPHNIX8CoyLp/tgSU0N/6vC9og7ZyYoO5fFIiWKwDVoQ==","signatures":[{"sig":"MEUCIQCgAZo/qsYen3G2NPIyf5XJuZGGTk7tFO8BDFevIJw6KgIgXRFROWDWGqLPFatW3k6L87rDRsf3axcYvkjljcRiJTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10863},"type":"module","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"gitHead":"cddd40cff8097fe4cf6b5b66c969be012a3b8ede","scripts":{"test":"bun test --timeout 30000 --only-failures","build":"bun ./script/build.ts","typecheck":"tsgo --noEmit","verify:package":"bun ./script/verify-package.ts"},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"repository":{"url":"git+https://github.com/anomalyco/agentx.git","type":"git","directory":"packages/http-recorder"},"_npmVersion":"10.8.2","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"4.0.0-beta.74","@types/bun":"1.3.13","typescript":"5.8.2","@types/node":"24.12.2","@tsconfig/node22":"22.0.2","@typescript/native-preview":"7.0.0-dev.20251207.1"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_npmOperationalInternal":{"tmp":"tmp/http-recorder_1.20.43_1782806690120_0.41488053719004836","host":"s3://npm-registry-packages-npm-production"}},"1.20.44":{"$schema":"https://json.schemastore.org/package.json","version":"1.20.44","name":"@agent-qofeno/http-recorder","description":"Record and replay Effect HTTP client traffic with deterministic cassettes","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/anomalyco/agentx.git","directory":"packages/http-recorder"},"homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"keywords":["effect","http","recording","replay","testing","vcr"],"engines":{"node":">=22"},"publishConfig":{"access":"public"},"scripts":{"test":"bun test --timeout 30000 --only-failures","typecheck":"tsgo --noEmit","build":"bun ./script/build.ts","verify:package":"bun ./script/verify-package.ts"},"exports":{".":"./src/index.ts","./internal":"./src/internal.ts"},"devDependencies":{"@tsconfig/node22":"22.0.2","@types/bun":"1.3.13","@types/node":"24.12.2","@typescript/native-preview":"7.0.0-dev.20251207.1","effect":"4.0.0-beta.74","typescript":"5.8.2"},"dependencies":{"@effect/platform-node":"4.0.0-beta.74","@effect/platform-node-shared":"4.0.0-beta.74"},"peerDependencies":{"effect":"4.0.0-beta.74"},"_id":"@agent-qofeno/http-recorder@1.20.44","gitHead":"092e51a72848ede20eaa7a8e965542d0aaec1bfa","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-JHQnVG0y/6d9rPV7q96nPK9ip9SQ5lJWCgE039rYPAZmIvuUSV/Ggzn8Olv7j5JcWKhN9O+pCmw4cMlI6zcyFA==","shasum":"13bfc74533b1a3a334cb487597f328028c93a801","tarball":"https://registry.npmjs.org/@agent-qofeno/http-recorder/-/http-recorder-1.20.44.tgz","fileCount":3,"unpackedSize":10863,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCO6gxejSalFXxsD4/Mgn7NZqdUth2wKOBl+IrJuabqcgIhAPmh+/BiLT0U+dMzRIgzkRvY9nopwoqe0ldPTQZD4H7m"}]},"_npmUser":{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"},"directories":{},"maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/http-recorder_1.20.44_1782807991936_0.2912756967748129"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-27T07:37:18.090Z","modified":"2026-06-30T08:26:32.185Z","0.0.0-fix-local-model-scanning-202606262041":"2026-06-27T07:37:18.393Z","1.20.36":"2026-06-27T07:40:44.286Z","1.20.37":"2026-06-27T08:10:46.542Z","1.20.38":"2026-06-27T08:14:40.951Z","1.20.39":"2026-06-28T07:34:29.140Z","1.20.40":"2026-06-29T14:32:31.089Z","1.20.41":"2026-06-29T14:39:09.648Z","1.20.42":"2026-06-29T14:54:35.031Z","1.20.43":"2026-06-30T08:04:50.264Z","1.20.44":"2026-06-30T08:26:32.080Z"},"bugs":{"url":"https://github.com/anomalyco/agentx/issues"},"license":"MIT","homepage":"https://github.com/anomalyco/agentx/tree/dev/packages/http-recorder","keywords":["effect","http","recording","replay","testing","vcr"],"repository":{"type":"git","url":"git+https://github.com/anomalyco/agentx.git","directory":"packages/http-recorder"},"description":"Record and replay Effect HTTP client traffic with deterministic cassettes","maintainers":[{"name":"qofeno-labs","email":"sohailkhannn.0525@gmail.com"}],"readme":"# @agent-qofeno/http-recorder\n\nRecord real Effect HTTP and WebSocket traffic once, then replay it from deterministic JSON cassettes.\n\nUse it for provider integrations, retries, polling, multi-step flows, and any test where hand-written HTTP mocks hide too much of the real request shape.\n\n> Public beta. The API depends on Effect 4 beta and may change with Effect's unstable transport modules.\n\n## Install\n\n```sh\nbun add effect@4.0.0-beta.74\nbun add -d @agent-qofeno/http-recorder@beta @effect/vitest vitest\n```\n\nThe package supports Node.js 22+ and Bun. It is not intended for browsers, workers, or Deno.\n\nEffect `4.0.0-beta.74` has a known declaration error (`SchemaErrorTypeId` is missing). Until that upstream declaration is fixed, TypeScript consumers need:\n\n```json\n{\n  \"compilerOptions\": {\n    \"skipLibCheck\": true\n  }\n}\n```\n\n## Quick Start\n\n```ts\nimport { assert, describe, it } from \"@effect/vitest\"\nimport { Effect, Schema } from \"effect\"\nimport { HttpClient, HttpClientRequest } from \"effect/unstable/http\"\nimport { HttpRecorder } from \"@agent-qofeno/http-recorder\"\n\nconst User = Schema.Struct({\n  id: Schema.Number,\n  name: Schema.String,\n})\n\nconst getUser = Effect.gen(function* () {\n  const http = yield* HttpClient.HttpClient\n  const response = yield* http.execute(HttpClientRequest.get(\"https://jsonplaceholder.typicode.com/users/1\"))\n  return yield* Schema.decodeUnknownEffect(User)(yield* response.json)\n})\n\ndescribe(\"getUser\", () => {\n  it.effect(\"loads a user\", () =>\n    Effect.gen(function* () {\n      const user = yield* getUser\n\n      assert.strictEqual(user.id, 1)\n      assert.strictEqual(user.name, \"Leanne Graham\")\n    }).pipe(Effect.provide(HttpRecorder.http(\"users/get-one\"))),\n  )\n})\n```\n\nRun the test with Vitest. The first local run calls the real API and records:\n\n```sh\nbunx vitest run users.test.ts\n```\n\n```text\ntest/fixtures/recordings/users/get-one.json\n```\n\nLater runs replay that cassette without contacting the upstream server. When `CI=true`, missing cassettes fail instead of recording.\n\n```mermaid\nflowchart TD\n  Run[Run test] --> Recorded{Cassette recorded?}\n  Recorded -->|Yes| Replay[Replay cassette]\n  Recorded -->|No, local| Record[Call service and record cassette]\n  Recorded -->|No, CI| Fail[Fail: cassette missing]\n```\n\nApplication code does not need to know whether a response is live or replayed.\n\n## API\n\n```ts\nHttpRecorder.http(name, options?)\nHttpRecorder.socket(name, options?)\n```\n\nThat is the complete public API. `http` provides a fetch-backed recorded `HttpClient`. `socket` decorates a standard Effect `Socket.Socket` supplied beneath it.\n\n## WebSockets\n\nWebSocket cassettes preserve one ordered transcript of client and server text or binary frames. Replay follows that chronology: server frames are released until the next recorded client frame, then replay waits for the application to send the matching frame before continuing.\n\n```ts\nimport { assert, it } from \"@effect/vitest\"\nimport { NodeSocket } from \"@effect/platform-node\"\nimport { Effect, Layer } from \"effect\"\nimport { Socket } from \"effect/unstable/socket\"\nimport { HttpRecorder } from \"@agent-qofeno/http-recorder\"\n\nconst echo = Effect.gen(function* () {\n  const socket = yield* Socket.Socket\n  const write = yield* socket.writer\n\n  yield* socket.runString(\n    (message) =>\n      Effect.gen(function* () {\n        assert.strictEqual(message, \"hello\")\n        yield* write(new Socket.CloseEvent(1000))\n      }),\n    { onOpen: write(\"hello\") },\n  )\n})\n\nconst recordedSocket = HttpRecorder.socket(\"echo/hello\").pipe(\n  Layer.provide(\n    NodeSocket.layerWebSocket(\"wss://ws.postman-echo.com/raw\", {\n      closeCodeIsError: (code) => code !== 1000,\n    }),\n  ),\n)\n\nit.effect(\"exchanges WebSocket frames\", () => echo.pipe(Effect.provide(recordedSocket)))\n```\n\nThe application owns the WebSocket URL and protocols through normal Effect layer wiring. The recorder wraps that socket without duplicating its URL in recorder configuration. Provide separate socket layers for separate endpoints or concurrent connections.\n\nText frames use the same JSON-field and body redaction as HTTP bodies. Binary frames are stored losslessly as base64. Client and server frame kinds must match during replay.\n\n## Refresh A Cassette\n\nDelete exactly the recordings you want to replace, then rerun their tests:\n\n```sh\nrm test/fixtures/recordings/users/get-one.json\nbun run test users.test.ts\n```\n\nThere is intentionally no public overwrite mode. Deletion makes the set of recordings being refreshed visible and reviewable.\n\n## Redaction\n\nSecure defaults remove most headers and redact common credentials in headers, URLs, and JSON bodies. Extend those defaults at layer construction:\n\n```ts\nHttpRecorder.http(\"anthropic/messages\", {\n  redact: {\n    headers: [\"x-project-token\"],\n    allowRequestHeaders: [\"anthropic-version\"],\n    queryParameters: [\"session-id\"],\n    jsonFields: [\"user_id\"],\n    url: (url) => url.replace(/\\/accounts\\/[^/]+/, \"/accounts/{account}\"),\n    body: (body) => body.replaceAll(/usr_[a-z0-9]+/g, \"usr_redacted\"),\n  },\n})\n```\n\n| Option                 | Purpose                                                              |\n| ---------------------- | -------------------------------------------------------------------- |\n| `headers`              | Add sensitive header names. They are retained as `[REDACTED]`.       |\n| `allowRequestHeaders`  | Preserve additional non-sensitive request headers for matching.      |\n| `allowResponseHeaders` | Preserve additional non-sensitive response headers for replay.       |\n| `queryParameters`      | Add sensitive URL query parameter names.                             |\n| `jsonFields`           | Recursively redact matching JSON keys in requests and responses.     |\n| `url`                  | Stabilize a URL after built-in redaction.                            |\n| `body`                 | Stabilize request and response bodies after built-in JSON redaction. |\n\nBefore writing, the recorder scans the complete cassette for common credential formats and values from credential-like environment variables. Unsafe cassettes fail without replacing an existing recording.\n\nRedaction is defense in depth, not a substitute for review. Inspect cassette diffs before committing them.\n\n## Matching And Ordering\n\nA cassette contains an ordered sequence of interactions. The first runtime request is checked against the first recorded request, the second against the second, and so on.\n\nThis strict ordering correctly models repeated identical requests whose responses change, including retries, polling, and cache tests. JSON object keys are canonicalized before matching.\n\nConcurrent requests are recorded in request-start order even when their responses complete out of order.\n\nSupply a custom equivalence rule when a request contains intentionally volatile data:\n\n```ts\nHttpRecorder.http(\"events/create\", {\n  match: (incoming, recorded) =>\n    incoming.method === recorded.method && new URL(incoming.url).pathname === new URL(recorded.url).pathname,\n})\n```\n\n## Configuration\n\n```ts\ninterface RecorderOptions {\n  readonly directory?: string\n  readonly metadata?: Record<string, unknown>\n  readonly redact?: RedactOptions\n  readonly match?: RequestMatcher\n}\n```\n\n`directory` defaults to `<cwd>/test/fixtures/recordings`.\n\n## Cassettes\n\nCassettes are readable JSON files intended to be committed with your tests. HTTP interactions are stored in request order. WebSocket cassettes preserve the observed order of client and server frames. Text stays readable; binary bodies and frames are stored losslessly as base64.\n\n## Current Limits\n\n- Responses are buffered while recording and replaying, so this beta is not suitable for tests that assert streaming timing, cancellation, or backpressure.\n- WebSocket replay preserves frame chronology and content, not real network timing or backpressure.\n- WebSocket V1 cassettes do not reproduce terminal close codes, close reasons, or transport failures. Failed and interrupted live runs are not recorded.\n- WebSocket transcripts are retained in memory until the connection finishes; avoid using this beta for unbounded sessions.\n- The package currently requires the exact Effect beta listed above.\n- Cassette format version `1` has no migration tooling yet.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}