{"_id":"2g","_rev":"23-6bbf6e3b03f6c5d9b552ac50f9d1e255","name":"2g","dist-tags":{"latest":"0.4.4","canary":"0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755"},"versions":{"0.0.1-0.wip":{"name":"2g","version":"0.0.1-0.wip","license":"MIT","_id":"2g@0.0.1-0.wip","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"dist":{"shasum":"46fdf8e762bbdc614a14673f11a609b01fb46887","tarball":"https://registry.npmjs.org/2g/-/2g-0.0.1-0.wip.tgz","fileCount":26,"integrity":"sha512-LEyISc9oglVxy4+4pZfFoOcVAiE9xJtDXT7Bfx8G6r1kkMjsmy8IGVPuS4vx2XUiTwhJ1mFD61B9DBPBREQM+w==","signatures":[{"sig":"MEQCIDezS7kviCsFompO+3F3quw/dHMwhmDuYIY21TYD8rRvAiBXTdh1w57c/dHpYBFC4ylw/niaoC+3WcH4dWT9MqZbKA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2608851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdB6hlCRA9TVsSAnZWagAAhiYP/1HNvnZPc6ADvLalDnbs\nsu+korbjL802X0nNnXGPAIYMWdijjVzegtcXmMUGOwJd9SdGdb/3xqpyD3kA\nVH3t41zETKPOU3ggYK1YcTQey9eTJ49XdOAk6XpQeA0am1UrF6rT/h4SgsAZ\nMIdexyTCC+JN1tz9+qr++TTPO9LrI10G0QCNHaBKLIg6aAdOEYon9K25KF5E\ngm3v906nmpKbA8KVtnDhvzYKipv5JMA/imIk8tzH1T4wMpkZ85BTijqlI424\nX4I0EFAlQjkUP6b/pVRDmQhersUi4GOPnXL/BQMu9bE2DIdg0xSsxtlqT/x1\nmfeskCI+EK7Q5cL8kUl0fTFrg2LXBl15RLSqDUFyx6KKj780Fgof6/NA+kpX\nTQy2CbJ3mMkSEdagzhLtQtWAZL1TTyrfwY33zYhzu02o66GPP1/CZ+XcO55n\n57nXRhaDcZzfa8wazJFrVNeOBMfqHrqbSQuWyNVTR78KdB69GxjvJ8FKCjqw\n/5Zuv4AJy74kR2Yt2qYxs10fY/CbUY44OCdtlR/DK4/njO/uF7znY08dY+dP\nqRJV78OC3VWlZlLYG1f3+YlD2O7D+eBQ1b4we+Rz3H7kYevV/OaiFTE5oCSw\nBFLfetfp4THYNOklGpQp+FO6hnSzOqxFcmzvgdk/aJc5Dysy/+41AeAsfEGX\nzx9/\r\n=A1ha\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"build":"bsb -make-world","clean":"bsb -clean-world","example":"./lib/bs/native/example.native"},"_npmUser":{"name":"philpl","email":"phil@kitten.sh"},"deprecated":"Prepublish version","directories":{},"dependencies":{"g2platform":"file:./include/platform"},"_hasShrinkwrap":false,"devDependencies":{"bsb-native":"^4.0.1100"},"_npmOperationalInternal":{"tmp":"tmp/2g_0.0.1-0.wip_1560782948848_0.562000009839867","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"2g","version":"0.1.0","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.1.0","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"5f658bc523680d090ece6819676d7745e2f69cd2","tarball":"https://registry.npmjs.org/2g/-/2g-0.1.0.tgz","fileCount":43,"integrity":"sha512-AzVm8UOO0AdxgmABb7OulmVV7g8qCs7danHz3+YyjgUQu9JL//ZKpsNDnN+tfNEbtof7+LYyA9j+ukupgYFspw==","signatures":[{"sig":"MEUCIFq+J+gke9eKPZyGe1NlG6hqzJQLxrCpKFBYx7ZkWYhRAiEA85WKmtwX49k5R+6aX/pi6iYNuC9qP56+qLV5IkCRyNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":508396},"main":"./dist/2g.js","_from":"file:2g-0.1.0.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/a004f16e213ddba472272e4e2eb58a09/2g-0.1.0.tgz","_integrity":"sha512-AzVm8UOO0AdxgmABb7OulmVV7g8qCs7danHz3+YyjgUQu9JL//ZKpsNDnN+tfNEbtof7+LYyA9j+ukupgYFspw==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.1.0_1783525364245_0.23036571463590216","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-canary-1f34346d24e9ed1d02fc462427ef65ab074125c6":{"name":"2g","version":"0.2.0-canary-1f34346d24e9ed1d02fc462427ef65ab074125c6","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.2.0-canary-1f34346d24e9ed1d02fc462427ef65ab074125c6","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"ffdffa707ee2ee6506c76e8f2f1944a7fedf143e","tarball":"https://registry.npmjs.org/2g/-/2g-0.2.0-canary-1f34346d24e9ed1d02fc462427ef65ab074125c6.tgz","fileCount":43,"integrity":"sha512-gg4PBFNo2BbMAKnc0+nS9XIuqwYdBEhOkhYrfIVr2iSTPLRVbAuVI/GeNjwzBvOI2IvayVeSLllhLCRk/z0rRA==","signatures":[{"sig":"MEUCIBuHnQ/msYui9gU9nyffTAgQvglHgdAqQqDeokBiOpttAiEAhdxgnVmMojo3lo1eQAR12aZ+1PL7Om9sCA7idY3zP60=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.2.0-canary-1f34346d24e9ed1d02fc462427ef65ab074125c6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":509788},"main":"./dist/2g.js","_from":"file:2g-0.2.0-canary-1f34346d24e9ed1d02fc462427ef65ab074125c6.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/3193ca723e6f7d2eb486a2409a8a712b/2g-0.2.0-canary-1f34346d24e9ed1d02fc462427ef65ab074125c6.tgz","_integrity":"sha512-gg4PBFNo2BbMAKnc0+nS9XIuqwYdBEhOkhYrfIVr2iSTPLRVbAuVI/GeNjwzBvOI2IvayVeSLllhLCRk/z0rRA==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.2.0-canary-1f34346d24e9ed1d02fc462427ef65ab074125c6_1783532603425_0.2878657899805359","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-canary-33982937062f2992926c9e34b9a17980ac3951e7":{"name":"2g","version":"0.2.0-canary-33982937062f2992926c9e34b9a17980ac3951e7","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.2.0-canary-33982937062f2992926c9e34b9a17980ac3951e7","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"ede0b9d037849d4a673f47bf3f260c6facb5dc12","tarball":"https://registry.npmjs.org/2g/-/2g-0.2.0-canary-33982937062f2992926c9e34b9a17980ac3951e7.tgz","fileCount":43,"integrity":"sha512-vtiHjLxPf02OtYCSIFuP9EcROo5lvkq/NnqrXBSvtV0SJLKu2ahDvJN8Ht/+ghFRjhUw/oyw7Djqma3vF9qa4A==","signatures":[{"sig":"MEYCIQCqBrIGlrHJKnBLHn+x9OGuvyvT0/rO6r+dnfCe31xH2gIhAIpqc2EpkbMT7v9eA4lWvMAwwnVrJ/tijQhA1WzQbFT2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.2.0-canary-33982937062f2992926c9e34b9a17980ac3951e7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":521729},"main":"./dist/2g.js","_from":"file:2g-0.2.0-canary-33982937062f2992926c9e34b9a17980ac3951e7.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/61c64522c4a89c0942f5b21704a7f096/2g-0.2.0-canary-33982937062f2992926c9e34b9a17980ac3951e7.tgz","_integrity":"sha512-vtiHjLxPf02OtYCSIFuP9EcROo5lvkq/NnqrXBSvtV0SJLKu2ahDvJN8Ht/+ghFRjhUw/oyw7Djqma3vF9qa4A==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.2.0-canary-33982937062f2992926c9e34b9a17980ac3951e7_1783535806858_0.7988079440419977","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"2g","version":"0.2.0","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.2.0","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"85ba5cab84480f0c4a3641528d0ff4eed8099f9a","tarball":"https://registry.npmjs.org/2g/-/2g-0.2.0.tgz","fileCount":43,"integrity":"sha512-PsK6ys7/gWh4H6B4d2vnjuFpNlA0VHdEvvRY356QUggIiUag79svyWdG/FpaZ7EdUJqe+zNJf76Oq2S7I8FjuQ==","signatures":[{"sig":"MEQCIDfZ992AUIyUa+IljhSjBVTVlMOBfxCSPWtwPzD95xQqAiBYo3vBIHJiJM/NXrnQGXZVjjMfVRQBZ2oNUzdRolq4XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":521633},"main":"./dist/2g.js","_from":"file:2g-0.2.0.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/b0dd5789de1c35a8039f89232916b49d/2g-0.2.0.tgz","_integrity":"sha512-PsK6ys7/gWh4H6B4d2vnjuFpNlA0VHdEvvRY356QUggIiUag79svyWdG/FpaZ7EdUJqe+zNJf76Oq2S7I8FjuQ==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.2.0_1783535953638_0.8178216922036734","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-canary-5ecc633f08a2f1852e2394ec354ca477ea2a5a7c":{"name":"2g","version":"0.3.0-canary-5ecc633f08a2f1852e2394ec354ca477ea2a5a7c","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.3.0-canary-5ecc633f08a2f1852e2394ec354ca477ea2a5a7c","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"d4e29460f7b6caeb07000dc17b32c5a8b7a5ba24","tarball":"https://registry.npmjs.org/2g/-/2g-0.3.0-canary-5ecc633f08a2f1852e2394ec354ca477ea2a5a7c.tgz","fileCount":43,"integrity":"sha512-DrTSeHFnjV2/aY1fgdJDlZL1NRvSGtq8wWbMY/pVnGZU6f9LYNqwcksfgJ3ig1xMNTDpykhijNdcAHeY5CzoEA==","signatures":[{"sig":"MEUCIGao515+a3c3YanXNOCS7VbyzREpetwktqj9d/SBhmVoAiEAzBP2q5RiYrkB8JbAqSBCuRurlL/OBiEw2AH3lxJx+Jw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.3.0-canary-5ecc633f08a2f1852e2394ec354ca477ea2a5a7c","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":523955},"main":"./dist/2g.js","_from":"file:2g-0.3.0-canary-5ecc633f08a2f1852e2394ec354ca477ea2a5a7c.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/fec36018082ff2dcc583e75e9fc19ebe/2g-0.3.0-canary-5ecc633f08a2f1852e2394ec354ca477ea2a5a7c.tgz","_integrity":"sha512-DrTSeHFnjV2/aY1fgdJDlZL1NRvSGtq8wWbMY/pVnGZU6f9LYNqwcksfgJ3ig1xMNTDpykhijNdcAHeY5CzoEA==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.3.0-canary-5ecc633f08a2f1852e2394ec354ca477ea2a5a7c_1783587279317_0.772254580351661","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"2g","version":"0.3.0","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.3.0","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"166e7c47eae8503f5e6fd5cfabe9267a1e70fbf2","tarball":"https://registry.npmjs.org/2g/-/2g-0.3.0.tgz","fileCount":43,"integrity":"sha512-N4M7D/lPnfwU+8gYIRCwn2vdH02CjkifcAS0DNZ91B2ubvNsdYF8RpNLQLfnBxKxsVQM64P6OVPGHqasJCZyBQ==","signatures":[{"sig":"MEUCIQDVBeJqjKNdDVP3L9Ajij2jve6N4nYM7Vc3CuWEVomqRAIgcghVKbtS9lBLk2kazos1/YmmtLx+p84zjH2JtfaHJrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":523859},"main":"./dist/2g.js","_from":"file:2g-0.3.0.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/cc3caea4108eb7987533700934f5bb4a/2g-0.3.0.tgz","_integrity":"sha512-N4M7D/lPnfwU+8gYIRCwn2vdH02CjkifcAS0DNZ91B2ubvNsdYF8RpNLQLfnBxKxsVQM64P6OVPGHqasJCZyBQ==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.3.0_1783587452067_0.06843318313822211","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-canary-c926e836f1fba07e7dfd1b5489fb395e815e88cc":{"name":"2g","version":"0.3.1-canary-c926e836f1fba07e7dfd1b5489fb395e815e88cc","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.3.1-canary-c926e836f1fba07e7dfd1b5489fb395e815e88cc","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"30843a7afef84f4d4161a17ebf71150351a1df3e","tarball":"https://registry.npmjs.org/2g/-/2g-0.3.1-canary-c926e836f1fba07e7dfd1b5489fb395e815e88cc.tgz","fileCount":43,"integrity":"sha512-cV3gLvJseW9thPpXhzs0mBlTqWKQjtWORDN5iPSj62wpdrizgTTmxwvRmk/CuQB7mHw1tiWjXejB1lwcqPXR9g==","signatures":[{"sig":"MEUCICJlCflQJkgwPRQ7Bvlaj2eDXsUB7XUXEbibkmmQNyaAAiEAzKROdtClHtkPS8NcH8yJEn02jT39yD7rZfcDNNOPUaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.3.1-canary-c926e836f1fba07e7dfd1b5489fb395e815e88cc","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526291},"main":"./dist/2g.js","_from":"file:2g-0.3.1-canary-c926e836f1fba07e7dfd1b5489fb395e815e88cc.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/6ae516e073ccefda61b1295c5ffc988f/2g-0.3.1-canary-c926e836f1fba07e7dfd1b5489fb395e815e88cc.tgz","_integrity":"sha512-cV3gLvJseW9thPpXhzs0mBlTqWKQjtWORDN5iPSj62wpdrizgTTmxwvRmk/CuQB7mHw1tiWjXejB1lwcqPXR9g==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.3.1-canary-c926e836f1fba07e7dfd1b5489fb395e815e88cc_1783596135778_0.47898149055281003","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"2g","version":"0.3.1","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.3.1","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"087caa9e2cec7bc342f12385a77139f0efe6761c","tarball":"https://registry.npmjs.org/2g/-/2g-0.3.1.tgz","fileCount":43,"integrity":"sha512-gNWbm7TqwzKp6yd5sN7Vhn7S7nWAI+tiGbn/jpt4WLvyeZWgTw1bPccvr8ahamkXhFQ/1AX1RVr1clinG5g44g==","signatures":[{"sig":"MEUCIE2PpLzF+ttRMUd+BqE9iFq3wf8xnL8LCxme7+yaYlSpAiEA0Ko5PH1U1VP0dQP8Xx5qe0mbRafoa/pHvrwIdZme/qI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526195},"main":"./dist/2g.js","_from":"file:2g-0.3.1.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/7fd3788d4ab46f9049feda254b66a303/2g-0.3.1.tgz","_integrity":"sha512-gNWbm7TqwzKp6yd5sN7Vhn7S7nWAI+tiGbn/jpt4WLvyeZWgTw1bPccvr8ahamkXhFQ/1AX1RVr1clinG5g44g==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.3.1_1783596314349_0.08658840972661719","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"2g","version":"0.4.0","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.4.0","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"1dbf8777af69f54f161e4e202c70e1e2024b83e0","tarball":"https://registry.npmjs.org/2g/-/2g-0.4.0.tgz","fileCount":43,"integrity":"sha512-GzF4oYm42ajKooSPecgUhMOKmlPBJRZX9jAMNj5iLeSN77aycO2Monxr3pOWZlxzWK8JPgWnHfXoBU3LOemFSg==","signatures":[{"sig":"MEYCIQDvDidWIu7lUd9pE9yapUcmcKaSWqDwINzOro5xsSzQbQIhANHm+O4RsqLjMQU1oMBDaYJwrY8dWRJPxcRmeuWxxTuc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":560465},"main":"./dist/2g.js","_from":"file:2g-0.4.0.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/e185ce4c5b0ada6edee53b39b36e101e/2g-0.4.0.tgz","_integrity":"sha512-GzF4oYm42ajKooSPecgUhMOKmlPBJRZX9jAMNj5iLeSN77aycO2Monxr3pOWZlxzWK8JPgWnHfXoBU3LOemFSg==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.4.0_1783603622803_0.2594546196457559","host":"s3://npm-registry-packages-npm-production"}},"0.4.1-canary-ddaf675de60af8c8028d060373bf55ef4de491fd":{"name":"2g","version":"0.4.1-canary-ddaf675de60af8c8028d060373bf55ef4de491fd","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.4.1-canary-ddaf675de60af8c8028d060373bf55ef4de491fd","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"2aa825fc740b87dd6eca2e0a6b01f10bb1c595d3","tarball":"https://registry.npmjs.org/2g/-/2g-0.4.1-canary-ddaf675de60af8c8028d060373bf55ef4de491fd.tgz","fileCount":43,"integrity":"sha512-M/ekJ+tXfHEnVWt6lUKQ1zFguXrALhe+9oZ+V7l5Cd62v41CB5uWyXKajNwb1dkrxTthh1Q7oyCFkRnay0LDXQ==","signatures":[{"sig":"MEYCIQCbCMOakfWYhxbWiIhCzY/QSOSL251jxF9/EZC6fT1CoAIhAMBU7mDV3TaBYUxpmNsq8wProfe9JXMalsUeTEPptVhE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.4.1-canary-ddaf675de60af8c8028d060373bf55ef4de491fd","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":562525},"main":"./dist/2g.js","_from":"file:2g-0.4.1-canary-ddaf675de60af8c8028d060373bf55ef4de491fd.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/edcc714a525f85bd37109fc0d54e6031/2g-0.4.1-canary-ddaf675de60af8c8028d060373bf55ef4de491fd.tgz","_integrity":"sha512-M/ekJ+tXfHEnVWt6lUKQ1zFguXrALhe+9oZ+V7l5Cd62v41CB5uWyXKajNwb1dkrxTthh1Q7oyCFkRnay0LDXQ==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.4.1-canary-ddaf675de60af8c8028d060373bf55ef4de491fd_1783605051564_0.9896608306421408","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"2g","version":"0.4.1","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.4.1","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"51026f0a020ed2c24b682c71f6d82080dc5651ee","tarball":"https://registry.npmjs.org/2g/-/2g-0.4.1.tgz","fileCount":43,"integrity":"sha512-m5lYjdNmgCDvDgW2xmCawbnmbgl2WpSHg1cfEAwtgLJB1pHqL36cJaL4a1X6JpKVIJbucHjDIIZMGYHnV9ng7w==","signatures":[{"sig":"MEQCIF1xA43AngL7DFREahf0J1PjMb60n9lje9FTVwOvaBHzAiAzR+QxWIU3YbKqE40GnLoLIv8+HwBB8nOTgGnb8Vw/yQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":562429},"main":"./dist/2g.js","_from":"file:2g-0.4.1.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/a78b9bb16ec56817a2739c05e2053ca9/2g-0.4.1.tgz","_integrity":"sha512-m5lYjdNmgCDvDgW2xmCawbnmbgl2WpSHg1cfEAwtgLJB1pHqL36cJaL4a1X6JpKVIJbucHjDIIZMGYHnV9ng7w==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.4.1_1783605177152_0.4790778032427039","host":"s3://npm-registry-packages-npm-production"}},"0.4.2-canary-f59fff7a2c9e3de55f7e27c23ac7a9b64fb4c8d6":{"name":"2g","version":"0.4.2-canary-f59fff7a2c9e3de55f7e27c23ac7a9b64fb4c8d6","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.4.2-canary-f59fff7a2c9e3de55f7e27c23ac7a9b64fb4c8d6","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"010406eee21dce13956cbee2b96aedec90006c9c","tarball":"https://registry.npmjs.org/2g/-/2g-0.4.2-canary-f59fff7a2c9e3de55f7e27c23ac7a9b64fb4c8d6.tgz","fileCount":43,"integrity":"sha512-I2usCeAlekJAlBWp7FBjVhze2CHZoIdB3JakKS2E5YGuU0pe7MsrMAUaCrV8h3+WBTSI6WJjyUEv1tIBzoOKiA==","signatures":[{"sig":"MEUCIE1q36hipqArfPzoCSFed8k65DJ5mKctk/SYRn+zQxNpAiEAuaZsEwVGHqBaGJwFs5hMNv5niaAeRRqCfQ4iVtSL1VM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.4.2-canary-f59fff7a2c9e3de55f7e27c23ac7a9b64fb4c8d6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":564165},"main":"./dist/2g.js","_from":"file:2g-0.4.2-canary-f59fff7a2c9e3de55f7e27c23ac7a9b64fb4c8d6.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/d809f3470db023bd16b2126b7f927a5f/2g-0.4.2-canary-f59fff7a2c9e3de55f7e27c23ac7a9b64fb4c8d6.tgz","_integrity":"sha512-I2usCeAlekJAlBWp7FBjVhze2CHZoIdB3JakKS2E5YGuU0pe7MsrMAUaCrV8h3+WBTSI6WJjyUEv1tIBzoOKiA==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.4.2-canary-f59fff7a2c9e3de55f7e27c23ac7a9b64fb4c8d6_1783693517512_0.8387097263764749","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"2g","version":"0.4.2","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.4.2","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"b045028ff7f37897561780e7a150da6293f9d53c","tarball":"https://registry.npmjs.org/2g/-/2g-0.4.2.tgz","fileCount":43,"integrity":"sha512-ju+3VSYtDyf72hfFy71+8ULWFAwe8Ovnx8oRzUo+454expFZc6hidnxRJugcbcoyqhqL0UoA6AwWllEMVJcgTA==","signatures":[{"sig":"MEUCIDC2KykzeoYl/EO45RN/tXIfb5X2rkYnJvZC2g3CYVQRAiEAg0Rnzrgv3nf7UKSMfDi/5vrZX5KjfmPHXM2MEbB2mTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":564069},"main":"./dist/2g.js","_from":"file:2g-0.4.2.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/9ec96c857a6f0ddc47cb05d17113c9d9/2g-0.4.2.tgz","_integrity":"sha512-ju+3VSYtDyf72hfFy71+8ULWFAwe8Ovnx8oRzUo+454expFZc6hidnxRJugcbcoyqhqL0UoA6AwWllEMVJcgTA==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.4.2_1783694324125_0.08231728813409922","host":"s3://npm-registry-packages-npm-production"}},"0.4.3-canary-8256e5578f920167dc823caf4797e8ba415da5ed":{"name":"2g","version":"0.4.3-canary-8256e5578f920167dc823caf4797e8ba415da5ed","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.4.3-canary-8256e5578f920167dc823caf4797e8ba415da5ed","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"d86b8db653582bd557077672ffb97b49b3632a3a","tarball":"https://registry.npmjs.org/2g/-/2g-0.4.3-canary-8256e5578f920167dc823caf4797e8ba415da5ed.tgz","fileCount":43,"integrity":"sha512-q498xmyChgF22/t3WrrQoDIiI43j6j0AJ88cXBeUG8XbrBvpIr79s6U5olj7QpT49bz3ov4PxBtM66G5/TRgkw==","signatures":[{"sig":"MEYCIQDmfrkVtySi+5NhPKPwD0UhwtSCFswJrEEV8EQWQQDx5wIhAMaorxqC403yO9gYoldpUIgOJ9Vns23A7Wu4QNAqqzXx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.4.3-canary-8256e5578f920167dc823caf4797e8ba415da5ed","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":574348},"main":"./dist/2g.js","_from":"file:2g-0.4.3-canary-8256e5578f920167dc823caf4797e8ba415da5ed.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/503eb452d837847ddbf0b26af7c582de/2g-0.4.3-canary-8256e5578f920167dc823caf4797e8ba415da5ed.tgz","_integrity":"sha512-q498xmyChgF22/t3WrrQoDIiI43j6j0AJ88cXBeUG8XbrBvpIr79s6U5olj7QpT49bz3ov4PxBtM66G5/TRgkw==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.4.3-canary-8256e5578f920167dc823caf4797e8ba415da5ed_1784207764855_0.0585647984081592","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"2g","version":"0.4.3","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.4.3","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"24021705528b6a63b1e226901b8da82f8f29392c","tarball":"https://registry.npmjs.org/2g/-/2g-0.4.3.tgz","fileCount":43,"integrity":"sha512-aGeKeZycrF3KxgN/1ReXA8gfAh0vDNfAlu7WJhesqKEtPVaLyhmvqrBGZbNfJflqZTSQSNEc8xxSM8I48Lu5UQ==","signatures":[{"sig":"MEYCIQDjX33stlyv1i8ipnktw98tUfoR6BlaxxpA3rpqSBAiawIhAIZidHsXCLfxIu3Ie9TYzMNo5TnRO8IBQMN1kIXIKxGr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":574252},"main":"./dist/2g.js","_from":"file:2g-0.4.3.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/c9c345e427befd5ff139bd0de582fdb6/2g-0.4.3.tgz","_integrity":"sha512-aGeKeZycrF3KxgN/1ReXA8gfAh0vDNfAlu7WJhesqKEtPVaLyhmvqrBGZbNfJflqZTSQSNEc8xxSM8I48Lu5UQ==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.4.3_1784207914448_0.47837698798775374","host":"s3://npm-registry-packages-npm-production"}},"0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755":{"name":"2g","version":"0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755","keywords":[],"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","_id":"2g@0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"homepage":"https://github.com/kitten/2g#readme","bugs":{"url":"https://github.com/kitten/2g/issues"},"bin":{"2g":"bin/cli.js"},"dist":{"shasum":"0531c1bc9231b63621644cf09ac33a64706ddf9c","tarball":"https://registry.npmjs.org/2g/-/2g-0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755.tgz","fileCount":43,"integrity":"sha512-Cjmf4XT9A0SnafurjTKklvVTKda0IkBnNVA0mHgEuv/Mt47TpelgiF4q33+y3FlIVy+Q14U7F43FxJrejS23fA==","signatures":[{"sig":"MEQCIFtdwHWRNYN47Hk+cHgYiwW1Swo+s1u9sEe4r6KO+8k1AiB3xI/rEtuaSG91hKANOyscmmqO147hpXfesiw6+aXSaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":574969},"main":"./dist/2g.js","_from":"file:2g-0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755.tgz","types":"./dist/2g.d.ts","module":"./dist/2g.mjs","source":"./src/index.ts","exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","source":"./src/index.ts","require":"./dist/2g.js"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","source":"./src/api.ts","require":"./dist/2g-api.js"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","source":"./src/cli.ts","require":"./dist/2g-cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest test","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","prebench":"pnpm run build","test:run":"vitest test --run","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","changeset:publish":"changeset publish","changeset:version":"changeset version && pnpm install --lockfile-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"prettier":{"arrowParens":"avoid","singleQuote":true,"trailingComma":"es5"},"_resolved":"/tmp/d2b71cdf9c673f9f133d4d08d60d4232/2g-0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755.tgz","_integrity":"sha512-Cjmf4XT9A0SnafurjTKklvVTKda0IkBnNVA0mHgEuv/Mt47TpelgiF4q33+y3FlIVy+Q14U7F43FxJrejS23fA==","repository":{"url":"git+https://github.com/kitten/2g.git","type":"git"},"_npmVersion":"11.6.4","description":"Low-overhead structured event logs for agents and developers","directories":{},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.2.3","rimraf":"^6.1.0","rollup":"^4.53.3","vitest":"^4.0.10","prettier":"^3.6.2","modern-tar":"^0.7.2","typescript":"^5.9.3","@types/node":"^25.9.2","lint-staged":"^16.2.6","npm-run-all":"^4.1.5","@changesets/cli":"^2.29.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-cjs-check":"^1.0.3","@changesets/get-github-info":"^0.6.0","@rollup/plugin-node-resolve":"^16.0.3","@babel/plugin-transform-typescript":"^7.28.5"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/2g_0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755_1784549011115_0.024785689702889524","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"2g","version":"0.4.4","description":"Low-overhead structured event logs for agents and developers","author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"source":"./src/index.ts","main":"./dist/2g.js","module":"./dist/2g.mjs","types":"./dist/2g.d.ts","bin":{"2g":"bin/cli.js"},"exports":{".":{"types":"./dist/2g.d.ts","import":"./dist/2g.mjs","require":"./dist/2g.js","source":"./src/index.ts"},"./api":{"types":"./dist/2g-api.d.ts","import":"./dist/2g-api.mjs","require":"./dist/2g-api.js","source":"./src/api.ts"},"./cli":{"types":"./dist/2g-cli.d.ts","import":"./dist/2g-cli.mjs","require":"./dist/2g-cli.js","source":"./src/cli.ts"},"./package.json":"./package.json"},"prettier":{"singleQuote":true,"arrowParens":"avoid","trailingComma":"es5"},"lint-staged":{"*.{js,ts,json,md}":"prettier --write"},"keywords":[],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/kitten/2g.git"},"bugs":{"url":"https://github.com/kitten/2g/issues"},"devDependencies":{"@babel/plugin-transform-typescript":"^7.28.5","@changesets/cli":"^2.29.7","@changesets/get-github-info":"^0.6.0","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-terser":"^0.4.4","@types/node":"^25.9.2","dotenv":"^17.2.3","lint-staged":"^16.2.6","modern-tar":"^0.7.2","npm-run-all":"^4.1.5","prettier":"^3.6.2","rimraf":"^6.1.0","rollup":"^4.53.3","rollup-plugin-cjs-check":"^1.0.3","rollup-plugin-dts":"^6.2.3","typescript":"^5.9.3","vitest":"^4.0.10"},"peerDependencies":{"typescript":">=5.8.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"publishConfig":{"access":"public","provenance":true},"scripts":{"test":"vitest test","test:run":"vitest test --run","prebench":"pnpm run build","bench":"vitest bench","build":"rollup -c ./scripts/rollup.config.mjs","postbuild":"tsc --lib esnext,dom,dom.iterable --target esnext --module nodenext --moduleResolution nodenext --noEmit ./dist/2g.d.ts ./dist/2g-api.d.ts ./dist/2g-cli.d.ts","check":"tsc --noEmit","clean":"rimraf dist node_modules/.cache","changeset:version":"changeset version && pnpm install --lockfile-only","changeset:publish":"changeset publish"},"_id":"2g@0.4.4","homepage":"https://github.com/kitten/2g#readme","_integrity":"sha512-ZwH02IRQicm+92YzJZMS8imSAJaqTPI+VASb1zMnisotnWcEP4e7nb57Mr8C2dGAA5G8ZmialbMmpkGLWgAY/w==","_resolved":"/tmp/d5a65329eadff4f7885e0f3722980dba/2g-0.4.4.tgz","_from":"file:2g-0.4.4.tgz","_nodeVersion":"22.23.1","_npmVersion":"11.6.4","dist":{"integrity":"sha512-ZwH02IRQicm+92YzJZMS8imSAJaqTPI+VASb1zMnisotnWcEP4e7nb57Mr8C2dGAA5G8ZmialbMmpkGLWgAY/w==","shasum":"24869f99ecc15da8371543608823b292a3aa2d4c","tarball":"https://registry.npmjs.org/2g/-/2g-0.4.4.tgz","fileCount":43,"unpackedSize":574873,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/2g@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDfswpnoGrlMGoZ8KV+3GM7baj6UtEhyUu93sgqip3Z1gIgS1838ty8+tF96VZBdl0btzx7azMOhCV+dBIHnLdGqE4="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1baee7cf-76bd-46b7-9d6f-fac4c5bec7bb"}},"directories":{},"maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/2g_0.4.4_1784646785928_0.1475295976637203"},"_hasShrinkwrap":false}},"time":{"created":"2019-06-17T14:49:08.843Z","modified":"2026-07-21T15:13:06.407Z","1.0.2":"2018-02-13T00:26:28.829Z","0.0.1-0.wip":"2019-06-17T14:49:09.003Z","0.1.0":"2026-07-08T15:42:44.383Z","0.2.0-canary-1f34346d24e9ed1d02fc462427ef65ab074125c6":"2026-07-08T17:43:23.573Z","0.2.0-canary-33982937062f2992926c9e34b9a17980ac3951e7":"2026-07-08T18:36:47.112Z","0.2.0":"2026-07-08T18:39:13.856Z","0.3.0-canary-5ecc633f08a2f1852e2394ec354ca477ea2a5a7c":"2026-07-09T08:54:39.469Z","0.3.0":"2026-07-09T08:57:32.231Z","0.3.1-canary-c926e836f1fba07e7dfd1b5489fb395e815e88cc":"2026-07-09T11:22:16.036Z","0.3.1":"2026-07-09T11:25:14.510Z","0.4.0":"2026-07-09T13:27:03.004Z","0.4.1-canary-ddaf675de60af8c8028d060373bf55ef4de491fd":"2026-07-09T13:50:51.727Z","0.4.1":"2026-07-09T13:52:57.295Z","0.4.2-canary-f59fff7a2c9e3de55f7e27c23ac7a9b64fb4c8d6":"2026-07-10T14:25:17.675Z","0.4.2":"2026-07-10T14:38:44.310Z","0.4.3-canary-8256e5578f920167dc823caf4797e8ba415da5ed":"2026-07-16T13:16:05.108Z","0.4.3":"2026-07-16T13:18:34.600Z","0.4.4-canary-088e50b787cbd9fc7cbbc86203c6a1ef25fc9755":"2026-07-20T12:03:31.258Z","0.4.4":"2026-07-21T15:13:06.084Z"},"bugs":{"url":"https://github.com/kitten/2g/issues"},"author":{"name":"Phil Pluckthun","email":"phil@kitten.sh"},"license":"MIT","homepage":"https://github.com/kitten/2g#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/kitten/2g.git"},"description":"Low-overhead structured event logs for agents and developers","maintainers":[{"name":"philpl","email":"phil@kitten.sh"}],"readme":"<div align=\"center\">\n  <h2>2g</h2>\n  <strong>Low-overhead structured event logs for agents and developers</strong>\n  <br />\n  <br />\n</div>\n\n`2g` is a structured event logger for command-line tools. It writes JSONL logs\nthat can be replayed, tailed, or exported to trace formats.\n\nIn short, `2g`,\n\n- keeps logging cheap enough to leave enabled\n- writes bounded session logs to the system temporary directory\n- forwards worker and child-process events into the same session\n- lets tools and agents tap into running commands\n- derives typed event payloads through TypeScript declaration merging\n\n## Implementation\n\nThe goal of `2g` is to replace ad-hoc `debug` logging with structured events\nthat are always recorded, without instrumented code paths paying for it. A disabled logging\ncall is a single property check, and an enabled call serializes straight into a batched\nfile stream — there is no interchange format, no transport negotiation, and no\nper-event allocation beyond the payload the caller already builds.\n\nThis has been built with the explicit purpose in mind to:\n\n- Instrument CLI processes that spawn workers and child processes, unifying their events\n  into one session log\n- Keep a bounded, self-cleaning record of recent sessions that tooling and agents can\n  discover and replay after the fact\n- Tap into live processes without those processes knowing or slowing down\n\nAs such, sessions write newline-framed JSONL through a single batched fd writer, rotate\nacross fixed-size segments, and broadcast to live subscribers over a local socket. Child\nprocesses and workers inherit the session over an IPC socket published through the\nenvironment, so the whole process tree agrees on one destination.\n\nThe package ships two entrypoints so consumers don't load the producer graph and vice\nversa:\n\n- `2g` — the producer surface instrumented processes import\n- `2g/api` — the consumption surface for tooling that reads sessions\n\n## Quick start\n\nInstall logging once when a CLI command starts, then create loggers in any package:\n\n```ts\nimport { installEventLogger, events } from '2g';\n\ninstallEventLogger({ command: 'expo start -p web', version: '1.0.0' });\n\nconst log = events('metro');\n\nlog('ready', { port: 8081 });\n\nconst end = log.span();\nend('bundle', { platform: 'ios', cached: false });\n```\n\nTap into the session from another terminal:\n\n```sh\n2g tap \"expo start\" --filter metro:* --tail\n```\n\n## Behavior\n\n### Activation\n\n`installEventLogger` resolves its destination in precedence order:\n\n1. An explicit `LOG_EVENTS` target — an fd number or a file path, from the environment or\n   passed directly\n2. A parent 2g process, inherited through the environment; events forward into the\n   parent's session over IPC\n3. A session in the system temporary directory, when an options object is passed\n4. Otherwise logging stays inactive and all calls are no-ops\n\nCalling `installEventLogger()` with no arguments activates logging only when `LOG_EVENTS`\nor a parent process is present — the right idiom for child processes, workers, and\nlibraries. Passing `session: false` keeps this env-only activation while still providing\noptions. There is no uninstall: logging is installed once per process and torn down on\nexit.\n\nWhen `LOG_EVENTS` targets stdout, `console` is transparently redirected to stderr so\nevent output stays machine-readable.\n\n### Sessions\n\nSessions live under `event-log-<uid>` in the system temporary directory. Each\nsession directory holds rotating JSONL segments (`0.jsonl` is current), a `meta.json`\ndescribing the process, and local sockets for live subscribers and child IPC. With the\ndefaults of 3 segments × 512 KiB, a session retains roughly the last 12k events.\n\nStale sessions are cleaned opportunistically: exited sessions are removed after 7 days,\nand only the newest 100 exited sessions are kept. An unwritable temporary directory\ndisables session capture without affecting the host process.\n\n### Debug events\n\n`events.debug(category)` creates a logger for chatty, debug-level events. Debug events\ncarry `_l: 1` on the wire. Session output drops them at the emit site — keeping the\nrotation budget for normal history — unless `LOG_DEBUG` is set or `installEventLogger`\nis passed `debug: true`; explicit `LOG_EVENTS` targets record them. `tap` and `export`\nskip debug events unless `--debug` (CLI) or `debug: true` (API) is passed.\n\n`LOG_DEBUG` also prints matching events to stderr in a readable format while structured\nlogging continues unchanged:\n\n```sh\nLOG_DEBUG=metro:* expo start\nLOG_DEBUG=* expo export\n```\n\n### Deferred payload helpers\n\n`log.path(absolutePath)` logs paths relative to the log target, and `log.error(error)`\nserializes an error to `{ name, message, code, stack, cause }`. Both return\n`Serialized<T>` wrappers — `{ toJSON(): T }` — that only do their work when an event is\nwritten, so disabled loggers skip `path.relative` calls and `error.stack`\nmaterialization entirely. Payloads accept `Serialized<T>` wherever their declared types\nexpect `T`, so `EventRegistry` declarations keep using the wire shapes.\n\n### Typed events\n\nExtend `EventRegistry` to type event payloads; keys are `category:kind` and payloads\nmerge across packages through declaration merging:\n\n```ts\ndeclare module '2g' {\n  interface EventRegistry {\n    'metro:ready': { port: number };\n    'metro:bundle': { platform?: string; cached?: boolean };\n  }\n}\n```\n\nUnknown event names are uncallable, reserved wire fields (`_e`, `_t`, `_d`, `_l`, `_w`)\nare rejected in payload types, and payloads with no required keys become optional\narguments. `2g typegen` merges the registry declarations of a whole project into\none schema.\n\n## CLI\n\nUse the CLI to find sessions, replay logs, or export traces:\n\n```sh\n2g ps --json\n2g tap \"expo start\" --filter metro:* --tail\n2g export \"expo start\" --format chrome-trace -o trace.json\n2g export \"expo start\" --format opentelemetry -o otel.json\n2g typegen --project tsconfig.json --format dts\n2g clean --json\n```\n\nSelectors match a session by PID, command, session directory, or working directory.\n`--filter` patterns are event-name prefixes matched on whole segments — `metro:bundling`\nmatches `metro:bundling` and `metro:bundling:started`, but not `metro:bundling2` — and a\n`*` matches anything, even across segments. `tap` and `export` replay retained history\nfirst. `--tail` appends live events; an event written in the instant `--tail` attaches\nmay appear twice at the seam.\n\nOpen Chrome traces in [ui.perfetto.dev](https://ui.perfetto.dev) or via Chrome DevTools →\nPerformance → \"Load profile\" (renders as a plain flame chart); `chrome://tracing` is\ndeprecated. For a near-live view of a running command, tail the export:\n\n```sh\n2g export \"expo start\" --tail -o trace.json\n```\n\n## Testing\n\nCapture a subprocess's events in integration tests by handing it a pipe as its\n`LOG_EVENTS` target:\n\n```ts\nimport { spawn } from 'node:child_process';\nimport { captureEvents } from '2g/api';\n\nconst capture = captureEvents({ filter: 'metro:*' });\nconst child = spawn(\n  'expo',\n  ['export'],\n  capture.spawnOptions({ env: process.env })\n);\n\nconst events = await capture.attach(child).collect();\n```\n\n`spawnOptions` appends a pipe to `stdio` and points `LOG_EVENTS` at it; `attach`\nconsumes the pipe and parses events, and can also be iterated with `for await` for live\nconsumption. Iteration ends when the pipe closes, so every event the child wrote is\nreceived.\n\n> [!IMPORTANT]\n> The child's events are flushed on natural exit. Child code that calls `process.exit()`\n> should `await flushEventLogger()` first or trailing events may be lost.\n\n## API Reference\n\n### `2g`\n\nThe producer entry that instrumented processes import.\n\n#### `events(category: string) => EventLogger`\n\nReturns a typed logger for `category`. The logger is callable directly and carries\nhelpers:\n\n- `log(event, data?)`: writes a `category:event` line with the payload\n- `log.span()`: starts a span; returns an `end(event, data?)` function that writes a single\n  event carrying the duration as `_d` (name the event `:done`/`:failed` at the end)\n- `log.path(target)`: returns a `Serialized<string>` of the path relative to the log\n  target\n- `log.error(error)`: returns a `Serialized<SerializedError>` of\n  `{ name, message, code, stack, cause }`, with cause chains serialized recursively\n- `log.category`: the category string\n\nSpan kinds ending in `:started`, `:done`, or `:failed` are naming conventions; trace\nexporters strip the suffix from displayed names.\n\n#### `events.debug(category: string) => EventLogger`\n\nIdentical to `events(category)`, but events are debug-level (`_l: 1`) and subject to\ndebug gating.\n\n#### `installEventLogger(target?: string | number | InstallEventLoggerOptions) => void`\n\n- Accepts an explicit target (fd number or file path) or an options object\n\nInstalls logging for the process following the activation precedence above. All options\nare optional:\n\n| Option           | Default | Description                                                                                                       |\n| ---------------- | ------- | ----------------------------------------------------------------------------------------------------------------- |\n| `command`        | argv    | Command line recorded in session metadata                                                                         |\n| `version`        | —       | Tool version recorded in session metadata and the init event                                                      |\n| `maxSegments`    | `3`     | Rotated JSONL segments kept per session                                                                           |\n| `maxSegmentSize` | 512 KiB | Segment size that triggers rotation                                                                               |\n| `session`        | `true`  | Allow the session fall-through; `false` keeps env-only activation                                                 |\n| `debug`          | varies  | Record debug events; defaults to `true` on explicit targets and to `LOG_DEBUG` presence on session and IPC output |\n\n#### `flushEventLogger() => Promise<void>`\n\nDrains buffered events to the active destination. Resolves immediately when logging is\ninactive.\n\n#### `getEventLoggerInfo() => EventLoggerInfo | null`\n\nReturns the active destination — `{ destination, isUserVisibleOutput, debug }` plus a\n`file`, `fd`, or `sessionDir` — or `null` when logging is inactive.\n`isUserVisibleOutput` is `true` when events write to stdout or stderr.\n\n#### `interface Serialized<T>`\n\n```ts\ninterface Serialized<T> {\n  toJSON(): T;\n}\n```\n\nA deferred value that serializes to `T` when an event is written. Payload types accept\n`Serialized<T>` wherever `T` is declared, so user code can defer its own expensive\nvalues the same way.\n\n### `2g/api`\n\nThe consumption entry for tooling that reads sessions.\n\n#### `list(options?: ListSessionsOptions) => Promise<ListedSession[]>`\n\n- **Parameters**\n  - `selector?`: matches by PID, command, session directory, or working directory\n\nReturns known sessions, newest first. Each `ListedSession` carries `pid`, `command`,\n`cwd`, `startedAt`, `alive`, and `sessionDir`.\n\n#### `resolveSession(selector?: string) => Promise<ListedSession>`\n\nResolves a selector to exactly one session, preferring the only alive match. Throws when\nnothing matches or the selector is ambiguous.\n\n#### `tap(sessionDir: string, options?: TapOptions) => AsyncIterable<ParsedEvent>`\n\nReplays a session's retained history and optionally follows live events.\n\n| Option        | Default | Description                                                          |\n| ------------- | ------- | -------------------------------------------------------------------- |\n| `since`       | —       | Replay from a duration (`'5m'`), Unix time, ISO date, or `Date`      |\n| `follow`      | `false` | Follow live events after replaying history                           |\n| `filter`      | —       | Event-name prefixes (whole segments); `*` wildcards, comma-separated |\n| `spans`       | `false` | Only yield events carrying a span duration                           |\n| `debug`       | `false` | Include debug-level events                                           |\n| `signal`      | —       | `AbortSignal` that stops following                                   |\n| `timeout`     | —       | Stop following after an absolute duration in milliseconds            |\n| `idleTimeout` | —       | Stop following after this many milliseconds without a new event      |\n\n#### `captureEvents(options?: CaptureOptions) => EventCapture`\n\n- **Parameters**\n  - `filter?` and `debug?`: as in `TapOptions`\n\nReturns an `EventCapture` for receiving a subprocess's events over an inherited pipe:\n\n- `capture.spawnOptions(options?)`: returns spawn options with a `'pipe'` slot appended\n  to `stdio` and `LOG_EVENTS` pointing at it, preserving the caller's `env` and `stdio`\n- `capture.attach(child)`: consumes the child's pipe; the capture is an\n  `AsyncIterable<ParsedEvent>` that ends when the pipe closes\n- `capture.collect()`: iterates to the end and returns all events\n\n#### `interface ParsedEvent`\n\nThe wire format of a parsed JSONL event; all other properties are payload fields.\n\n```ts\ninterface ParsedEvent {\n  _e: string; // \"category:kind\"\n  _t: number; // wall-clock timestamp in milliseconds\n  _d?: number; // span duration in milliseconds\n  _l?: number; // level; 1 marks debug events\n  _w?: string; // originating worker or child process\n}\n```\n","readmeFilename":"README.md"}